Sidebar

MainUI C++ Beta

  • Наступило лето и у нас стартовал конкурс с призовым фондом в $120!
    "De-Make It!" Summer Contest.
Команда форума
VIP
28.03.2010
15 328
252
83
Награды
4
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
2 FiEctro: насколько я помню, ты про меню "как в стиме" ноешь с 2007-го года. ПРОШЛО 10 ЛЕТ, КАРЛ! :shock:
Ты за эти годы уже вполне мог освоить кресты и сам написать такое меню. Но нет, прошло десять лет, а ты всё ноешь и ноешь. Теперь вы понимаете, почему Путин будет править вечно? Все будут ныть "Путин, уходи" и терпеть дальше. И так - во всём.
 

a1batross

Umu~!
06.01.2015
672
27
28
Награды
0
21
Москва
xash.su
2 Cybermax:
2 FiEctro:
Если вам так хочется, то на гитхабе лежат сорцы недоделанного vinterface, в рамках которого к Ксашу прикручиваются современные крестовые интерфейсы библиотек Valve. То бишь VGUI2, GameUI и filesystem_stdio. От всех трёх в публичном доступе все интерфейсы -- в бетке, в 2007 сливе и в целом наборе Source SDK. А ещё можно дебаггером вытащить с линуксового голдсорса.

Когда я начинал делать, я не понимал что делал, но сейчас понимаю, но уже дописывать вряд ли буду.
 

nemyax

тндайпц тра
Команда форума
Модератор
30.07.2015
643
24
18
Награды
0
Дядя Миша сказал(а):
Есть три варианта
Есть ещё вариант: ты в общем даже и продуктом-то не пользуешься, но пару раз громко вякнешь про что-то недостающее. А потом смотришь — автор добавил. Вариант называется "ничоси".
 

Raid

VIP
VIP
11.07.2006
8 320
232
63
Награды
1
28
CSM-чат
  • Rocket медаль
Так это, а разрешение в меню по-прежнему 640х480? Или всё же меняется как у людей, согласно общему?
 

ElbeR

Wunderknabe
23.04.2009
856
15
0
Награды
0
30
Siedlce,Poland
Я бы хотел отписатся по-поводу меню в ксаше, как плюсы так и минуса.

Удобно нарисовать кнопки, заодно и их версии активных и неактивных.

Клево и удобно выбирать: менюшка в твоей игре с картинкой или уровнем на заднике.

Немного о минусах:

Резолюшн кнопок
Плохо что на данный момент резолюшн изображения кнопок нельзя менять, и на моем 1920х1080 - я вижу пиксельное "мыло" на фоне четкого splash.

Разнобой
На фоне кастомизированных кнопок меню - остаются нередактируемые внутренности центрального поля, что порой выбивается из стиля вашей кастомизации того что можно было редактировать.

Излишние пункты
Очень часто на стримах П2 наблюдал как люди долго искали что где.
К примеру в меню Options/Video - 2 пункта (video modes и advanced), когда все это можно было уместить в одном Video, выбор резолюшна экрана не крутить вниз вертикально, а переклацивать горизонтально как в Metro: Last Light.

Отсутствие возможностей.
Помимо общего нытья - отстутствует элементарная возможность добавлять свои пункты дизайнером. Не критично если программист под боком. Но программисты разные бывают.

Технические проблемы
Когда игрок поменял разрешение экрана - при возврате в игру он увидит смещенный UI, который сохранил свое положение из предыдущего резолюшна по центру экрана. Это НЕДОПУСТИМО, учитывая что современные геймеры ленивые, сами не перезапустят игру - они продолжат стримить или делать скрины с этим багом на пол экрана. После принятия изменения - нужно перезапускать игру по-умолчанию или просить игрока перезапустить. Без перезапуска резолюшн не должен входить в силу.
Также, как писали уже выше - мишкой тяжело попасть по нужному разрешению. Это раздражает. Решение я отписал выше в этом посте.

Вывод: если все такие таковое меню быдет захардкожено, с возможностью косметической кастомизации - то давайте его сделаем оптимальным и более лаконичным.

Хороший пример организации меню:



Хороший пример, даже насыщеного настройками опций

 

a1batross

Umu~!
06.01.2015
672
27
28
Награды
0
21
Москва
xash.su
2 Raid:
o_O?

2 ElbeR:
Вообще, говоря о кастомизации, её сейчас действительно нет(не считая изменений в сорцах). Максимум -- поменять текстуры, какие-то строки, цвета.

На то чтобы меню можно было вообще менять как душе угодно и без программиста под боком, нужна система схем. То есть каждое меню должно описываться на каком-нибудь декларативном языке. Все эти позиции кнопочек, на что они влияют и так далее. Не очень люблю QML, но возможно для написания "игровых" UI он(или что-то похожее) действительно мог бы быть полезен.

С излишними пунктами согласен. Я не понимаю зачем нужны некоторые страницы меню. Такой вот WON-стайл. В оригинале все ещё более запутанно.

В целом всё это делалось вальвой для того, чтобы максимум показываться в статичном окошке 640x480. Шаг влево, шаг вправо -- мыло.
Некоторые проблемы типа смены разрешения или растянутых картинок на 16:9 в форке давно починены.
 

ElbeR

Wunderknabe
23.04.2009
856
15
0
Награды
0
30
Siedlce,Poland
2 a1batross:
Return to castle Wolfenstein 2001
Мододелы делают с менюхой что хотят

Файл внешний
main/ui/main.menu:

Код:
#include "ui/menudef.h"

{
	assetGlobalDef {
		font "fonts/normal" 16				// font
		smallFont "fonts/smallFont" 12			// font
		bigFont "fonts/bigFont" 24			// font
		cursor "ui/assets/3_cursor3"			// cursor	
		gradientBar "ui/assets/gradientbar2.tga"	// gradient bar
		itemFocusSound "sound/misc/menu2.wav"	
					// sound for item getting focus (via keyboard or mouse )

		fadeClamp 1.0				// sets the fadeup alpha
		fadeCycle 1					// how often fade happens in milliseconds
		fadeAmount 0.1				// amount to adjust alpha per cycle
		
		shadowColor 0.1 0.1 0.1 0.25			// shadow color
		}
							   




menuDef {
	name "main"
//	background "menuback_cw"		// Spinning Circle Background
	fullScreen MENU_TRUE				
	rect 0 0 640 480				// Size and position of the menu
	visible MENU_TRUE				// Visible on open
	focusColor .9 .85 1 .8			// Menu focus color for text and items
	soundloop ""
					
	onOpen { 
		setitemcolor fadebox backcolor 0 0 0 1 ; 
		playlooped "sound/music/l_theme.wav" ;
		fadeout fadebox ;
	 //  	play "sound/misc/tim_pump.wav" ; 
		uiScript stopRefresh ;
		}
		
	onESC { open quit_popmenu }
	


	itemDef {

		name modelselection 				//Precache player model	
		ownerdraw UI_PLAYERMODEL			//Ownerdraw for player models
		rect 0 0 0 0 
		style 1
		decoration 
		visible 1
    		}







	itemDef {
		name backimage2					// backimage2
		style WINDOW_STYLE_SHADER
		rect 0 0 640 480
		background "backimage2"
		visible 1
		decoration
		}





	itemDef {
		name testmodel_bj
		type ITEM_TYPE_MODEL
		rect 90 80 800 800  
		model_angle -110
		asset_model "models/mapobjects/bjui/bjui_b.MD3"
		model_animplay 0 200 0 30
		model_fovx 37
		model_fovy 34
		visible 1
		decoration
		}






	itemDef {
      	name video_over1					// video_over1
      	style WINDOW_STYLE_SHADER
      	rect 230 0 410 480
 	    	background "video_over1"
      	visible 1
		decoration
    		}


	itemDef {
		name testmodel_aflag1
		type ITEM_TYPE_MODEL
		rect 150 0 800 600 
		model_angle 90
		model_origin 100 100 100
		asset_model "models/mapobjects/flag/flag_americanui.MD3"
		model_animplay 0 114 0 10
		model_fovx 40
		model_fovy 40
		visible 1
		decoration
		}




	itemDef {
		name band2						// band2
		style WINDOW_STYLE_SHADER
		rect 360 20 128 640
		background "band2"
		visible 1
		decoration
		}
	

	itemDef {
		name bands						// bands
		style WINDOW_STYLE_SHADER
		rect 200 -480 640 1024
		background "bands"
		visible 1
		decoration
		}


	itemDef {
		name backimage4					// left side image with black gradient  
		style WINDOW_STYLE_SHADER
		rect 0 0 343 480
		background "backimage4"
		visible 1
		decoration
		}

	itemDef {
		name testmodel_nflag1
		type ITEM_TYPE_MODEL
		rect -350 -30 800 600 
		model_angle -130
		model_origin 100 100 100
		asset_model "models/mapobjects/flag/flag_naziui.MD3"
		model_animplay 0 114 0 10
		model_fovx 40
		model_fovy 40
		visible 1
		decoration
		}

	itemDef {
		name BLACKGRAD					// BLACKGRAD
		style WINDOW_STYLE_SHADER
		rect 0 -4 640 132
		background "BLACKGRAD"
		visible 1
		decoration
		}

	itemDef {
		name BLACKGRAD2					// BLACKGRAD
		style WINDOW_STYLE_SHADER
		rect 0 370 640 -128
		background "BLACKGRAD"
		visible 1
		decoration
		}

	itemDef {
		name FLAME						// FLAME
		style WINDOW_STYLE_SHADER
		rect 210 20 220 67
		background "fLAME"
		visible 1
		decoration
		}
	itemDef {
		name testmodel_icon_burn
		type ITEM_TYPE_MODEL
		rect 140 266 360 326
		model_angle 90
		model_origin 0 0 0
		asset_model "models/mapobjects/ui/icon_burn.MD3"
		model_fovx 90
		model_fovy 90
		visible 1
		decoration
		}


	itemDef {
		name WOLFFLAMELOGO				// WOLFFLAMELOGO
		style WINDOW_STYLE_SHADER
		rect 200 -5 240 120
		background "WOLFFLAMELOGO"
		visible 1
		decoration
		}


	itemDef {
		name WOLFICON					// WOLFICON
		style WINDOW_STYLE_SHADER
		rect 220 380 200 100
		background "WOLFICON"
		visible 1
		decoration
		}

	itemDef {
		name gold_line					// gold_line
		style WINDOW_STYLE_SHADER
		rect 0 410 250 10
		background "gold_line"
		visible 1
		decoration
		}

	itemDef {
		name gold_line					// gold_line
		style WINDOW_STYLE_SHADER
		rect 390 410 250 10
		background "gold_line"
		visible 1
		decoration
		}


	itemDef {
		name gold_line					// gold_line
		style WINDOW_STYLE_SHADER
		rect 0 76 226 10
		background "gold_line"
		visible 1
		decoration
		}

	itemDef {
		name gold_line					// gold_line
		style WINDOW_STYLE_SHADER
		rect 414 76 230 10
		background "gold_line"
		visible 1
		decoration
		}


////////// GAMETYPE //////////////////////////////////////////////////////// 

	//	SINGLEPLAYER	// 


	itemDef {
		name play
		text "PLAY"
		type 1
		style 0	
		textstyle 6
		rect 16 396 40 14 
		textalign 0
		textscale .233		
		textalignx 2
		textaligny 14
		forecolor .9 .9 .9 1
		visible 1
		textfont UI_FONT_NORMAL
		mouseEnter {  fadein message_accept }
		action { play "sound/misc/zap.wav" ; 
		close main ; 
		open play_menu }
		}




	itemDef {
		name loadgame
		text "LOAD GAME"
		type 1
		style 0	
		textstyle 6
		rect 70 396 72 14 
		textalign 0
		textscale .2308		
		textalignx 0
		textaligny 14
		forecolor .9 .9 .9 .9
		visible 1 
		textfont UI_FONT_NORMAL
		mouseEnter { fadein message_accept }
		action {close main ; open load_menu ; play "sound/misc/zap.wav"; }
    	}
	





//	OPTIONS		// 


itemDef {
		name options
		text "OPTIONS"
		type 1
		style 0	
		textstyle 6
		rect 156 396 56 14 
		textalign 0
		textscale .2308		
		textalignx 2
		textaligny 14
		forecolor .9 .9 .9 1
		visible 1
		textfont UI_FONT_NORMAL 
		mouseEnter {fadein message_accept }
		action {play "sound/misc/zap.wav" ; 
		close main ; 
		open setup_menu ;
		open control_menu
		} 
    }


itemDef {
      	name playselection
      	text "MULTIPLAYER"
		type 1
		style 0	
		textstyle 6
		rect 430 396 84 14 
		textalign 0
		textscale .2308		
		textalignx 0
		textaligny 14
		textfont UI_FONT_NORMAL
		forecolor .9 .9 .9 1
		visible 1  
		mouseEnter {
		fadein message_accept}
		action {play "sound/misc/zap.wav";
		open multi_popmenu}
//		action { uiScript startMultiplayer }
    	}
   

itemDef {
	name credits
	text "CREDITS"
		type 1
		style 0	
		textstyle 6
		rect 530 396 52 14 
		textalign 0
		textscale .2308		
		textalignx 0
		textaligny 14
		textfont UI_FONT_NORMAL
		forecolor .9 .9 .9 .9
		visible 1 
	mouseEnter { fadein message_accept }
	action {	close main; open credit} 
   	}


//	QUIT	//



itemDef {
		name quit
		text "QUIT"
		type 1
		style 0	
		textstyle 6
		rect 600 396 32 14 
		textalign 0
		textscale .2308		
		textalignx 0
		textaligny 14
		textfont UI_FONT_NORMAL
		forecolor .9 .9 .9 .9
		visible 1 
		mouseEnter {
		fadein message_accept}
		action {play "sound/misc/zap.wav";
		open quit_popmenu}

}

//itemDef {
//      	name copyright
//      	text "Wolfenstein ID Software Copyright2001"
//      	style 0
//      	textscale .15
//      	rect 530 475 360 40
//      	textalign 1	
//      	textaligny 0
//      	textalignx 20 
//      	forecolor .7 .7 .7 .9      
//		visible 1 
//      	decoration 
//	}



itemDef {
      	name fadebox					// Box for fading in menus
      	style WINDOW_STYLE_FILLED
 		background "ui/assets/fadebox.tga"
		forecolor 0 0 0 1
		backcolor 0 0 0 1
		rect 0 0 640 480
      	visible 1 
		decoration
    	}

}
Результат:

 
Последнее редактирование:

mittorn

Active member
22.04.2010
1 225
19
38
Награды
0
Ну это надо полностью динамическое основное меню делать. С vgui2 меню в steam версии так и сделано
 

ElbeR

Wunderknabe
23.04.2009
856
15
0
Награды
0
30
Siedlce,Poland
Кто-нибудь из вас хочет занятся меню для Паранои?
У Дядь Миши и так много работы и его понять можно.
 

crystallize

Active member
06.06.2014
1 504
21
38
Награды
0
a1batross сказал(а):
Не очень люблю QML, но возможно для написания "игровых" UI он(или что-то похожее) действительно мог бы быть полезен.
"Ты один раз поленишься, а люди из-за тебя будут 10 лет от этих скобок и кавычек материться".
 

mittorn

Active member
22.04.2010
1 225
19
38
Награды
0
2 ElbeR:
А там нужно что-то особенное? Я играл с дефолтным меню т.к мне лень допиливать dll loader для работы с меню.

[ADDED=mittorn]1494568485[/ADDED]
2 crystallize:
QML всё же не boost
 
Последнее редактирование:

Raid

VIP
VIP
11.07.2006
8 320
232
63
Награды
1
28
CSM-чат
  • Rocket медаль
2 a1batross:
Ну типа в настройках такой выставил 1920х1080 и оно у тебя затайлилось по-человечески без растягивания. И фон кадрировало например. Ну или выбрало картинку из набора близких по разрешению.
 
Последнее редактирование:

mittorn

Active member
22.04.2010
1 225
19
38
Награды
0
2 Raid:
Оно растягивается с учётом соотношения сторон. Выглядит адекватно

[ADDED=mittorn]1494570137[/ADDED]
2 Raid:
Оно растягивается с учётом соотношения сторон. Выглядит адекватно
 
Последнее редактирование:

crystallize

Active member
06.06.2014
1 504
21
38
Награды
0
2 mittorn:
Имелось в виду сравнение с TinyXML.

[ADDED=crystallize]1494575214[/ADDED]
ElbeR сказал(а):
Излишние пункты
Очень часто на стримах П2 наблюдал как люди долго искали что где.
К примеру в меню Options/Video - 2 пункта (video modes и advanced), когда все это можно было уместить в одном Video, выбор резолюшна экрана не крутить вниз вертикально, а переклацивать горизонтально как в Metro: Last Light.
Если нужно просто чтобы люди не путались, можно перименовать Glare reduction в Brightness и вместо Video options написать Gamma/Brightness. А вместо Video modes написать Resolution.

[ADDED=crystallize]1494575284[/ADDED]
2 Raid:
кстати да, по принципу Touch the window from inside в MPC.
 
Последнее редактирование:
Команда форума
VIP
28.03.2010
15 328
252
83
Награды
4
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
2 crystallize: все надписи максимально аутентичны с WON-меню и стоковое таким должно остаться. Но поскольку меню это отдельная либа никто не мешает запилить своё, модное. Модное, от слова мод, если вдруг кто не понял.
 

ElbeR

Wunderknabe
23.04.2009
856
15
0
Награды
0
30
Siedlce,Poland
2 Дядя Миша:
Ну тогда круто. Осталось определится кто это может сделать для редакса Паранои.
 

crystallize

Active member
06.06.2014
1 504
21
38
Награды
0
2 Дядя Миша:
Я думаю у Элбера оно всё же не стоковое.
 

a1batross

Umu~!
06.01.2015
672
27
28
Награды
0
21
Москва
xash.su
2 ElbeR:
Вопрос в том, что конкретно от него нужно.

Я честно говоря и так собираюсь для первой паранои сделать собственное меню. Пока есть две идеи -- список ачивок и музыкальный плеер. Можно выкинуть ненужные пункты, типа мультиплеера.

Ну и chapter background систему. Есть такая мысль -- прочитать все сейвы на этапе загрузки и найти максимальный прогресс. На основе этого загрузить бэкграунд карту. Чтобы не выводило карты с подземным комплексом, когда ты всего-лишь на первой главе.
 

ElbeR

Wunderknabe
23.04.2009
856
15
0
Награды
0
30
Siedlce,Poland
2 a1batross:
Дай скайп свой, я вкратце расскажу что нужно.
 

a1batross

Umu~!
06.01.2015
672
27
28
Награды
0
21
Москва
xash.su
Обновление от 13.05.17:
* Добавил SCR парсер. Меню читает settings.scr и user.scr и на основе них строит меню.
Настройки сервера открываются по кнопке Adv settings в меню создании сервера, а настройки игрока по кнопке Adv settings в меню Customize.
* Слайдеры теперь адекватно реагируют на перемещение и перетаскиваются ровно посередине.
* Есть диалог прогресса загрузки сервера или подключения к серверу.
ВАЖНО понимать, что поддерживается это движком только в экспериментальных версиях форка. Скачать их можно отсюда. Устанавливается экспериментальная версия поверх последнего релиза форка, который можно скачать здесь.

Обновлённая DLL-ка во вложениях ОП-поста.

Жду любых отзывов. :)
 

Донат - Операционные расходы

Итого
1 121.00 $
Цель
1 300.00 $
Донат завершается:

Доноры Красавчики

Новые сообщения

Пользователи онлайн