www.G-2B.com www.G-2B.com
форум сайта проекта "ЮКисП"
 Помощь      Поиск      Участники


 Страниц (12): « 1 2 [3] 4 5 6 7 8 9 ... » В конец    

> Описание: Игра про строительство
krre
Отправлено: 29 Мая, 2016 - 12:40:05
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Сейчас разрабатываю то, что называется Main Loop - двигатель всей игры, благодаря которому внутри неё всё может шевелиться, и решил замутить вот какую штуку. Пусть время в игре будет синхронизировано с нашим временем. То есть сколько времени прошло у нас, столько у там. Выйдя из игры сегодня и вернувшись через неделю, мы вдруг обнаружим, что там тоже прошла неделя, в течение которой наш Гагарин стоял или лежал без движения. Если за это время его деревом завалит, или он потонет в наводнении, то мы сами виноваты, надо было перед выходом оставлять его в безопасном месте.

Это добавляет больше реалистичности, но и больше неудобств тоже. Так можно дойти до того, что сутки на некоторых планетах будут равняться нашим суткам, если планеты такого же размера, как Земля, и крутятся с такой же скоростью. Неудобство здесь в том, что если приземлился на планету ночью, а играешь в игру всегда в одно и то же земное время (скажем, вечером после работы), то так и будешь попадать там на ночь и лазить постоянно в потёмках. Конечно, у Гагарина будет встроенный фонарь (с большим расходом энергии) и инфра-красное зрение (с меньшим энергопотреблением), но рано или поздно все батареи сядут, и тогда конец. Если не успеешь к тому времени оборудовать себе какой-то кустарный источник электроэнергии для подзарядки.

Положительная сторона всего этого в том, что решать эти проблемы придётся нескоро, впереди еще несколько месяцев разработки, и к тому времени я могу сто раз всё передумать. Главное пока то, что раз время в игре и в нашей жизни синхронизировано, то дальше весь программный код и вся архитектура будут отталкиваться именно от этого.
   Top
krre
Отправлено: 31 Мая, 2016 - 20:25:41
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Закончил с Game Loop (его иногда и так называют) и перешёл к следующему этапу. Этапов впереди будет порядка нескольких миллионов, если кто ещё не понял. Это ж трёхмерная игра, однако, причём, на собственном движке, а там всё очень непросто.

Короче, следующий этап - это разработка системы событий. События - это когда где-то что-то произошло, и другие системы игры хотят знать это и соответствующим образом отреагировать. Например, умер какой-нибудь NPC - высылается событие "умер NPC с таким-то кодом". Событие получает каждый житель деревни и понимает, что надо собираться на похороны. Через некоторое время организовывается похоронная процессия и марширует через всю деревню. Таким образом, система событий - важная и нужная штука, а самих событий может быть сотни или даже тысячи. Но, надеюсь, что у меня до такого количества не дойдёт.

И ещё кое-что. Я обещал, что буду по сто раз всё передумываеть? Хорошо, вот моё первое передумывание. Я решил не привязывать время в игре к реальному времени. А то получится слишком экстремально. Так в самый напряжённый момент даже не отвлечёшься, чтобы в туалет сходить или ответить на телефонный звонок. Наверное, это будет очень раздражать. Словом, теперь всё снова будет, как у всех. Пока играешь, время в игре идёт, а поставил на паузу или вышел из игры - время остановилось. До тех пор, пока не вернёшься обратно.
   Top
krre
Отправлено: 01 Июня, 2016 - 19:45:52
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




С системой событий разобрался, начала работать. Получилось даже проще, чем я ожидал. Благодаря тому, что не сам всё придумал, а спионерил готовое решение в интернете. гы-гы!

Едем дальше. Теперь попытаюсь нарисовать что-нибудь на экране. Например, плоскость, по которой будет ходить Гагарин. Позже эта плоскость преобразуется в ландшафт. В общем, это надолго. Поскольку я не использую готовых рисовальных библиотек, то придётся делать всё на голом OpenGL. Кто не знает, что такое OpenGL, тому лучше этого и не знать. гы-гы!

Это как ассемблер, только для графики. Всё, что умеет OpenGL, - это рисовать линии и треугольники, зато чертовски быстро, миллионы штук в секунду. В нём даже камеры нет - самому нужно создавать. Но даже чтобы нарисовать простейший треугольник, надо написать программного кода на три страницы. Чтобы этот треугольник повернуть, надо перемножить кучу матриц 4x4. А когда дело доходит до освещения и теней, то вообще закопаться можно. Ничего этого в готовом виде в OpenGL, понятное дело, тоже нет. Все делается шейдерами и хитрыми запутанными инструкциями. Короче, полезная штука для разминания мозгов, чтоб не заплесневели.
   Top
krre
Отправлено: 03 Июня, 2016 - 12:53:28
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Gagarin Daily News

Если кто ещё не понял, Gagarin Daily News - это такая рубрика в нашей газете, когда рассказать особо не о чем, то есть никаких новых законченных дел нету, а написать что-то надо (или просто хочется). Вот тогда берётся и пишется, что вообще происходит.

А что происходит? Помнится, я задался целью нарисовать плоскость. Дело это непростое и движется постепенно. Сейчас у меня есть объект класса Plane, он помещён в сцену, сцена помещена во вьюпорт, а вьюпорт помещён в приложение. Система пытается этот Plane рисовать, но сейчас этот процесс выполняется в холостую, потому что нет ещё ни геометрии, ни шейдеров, ни материала, а есть только метод draw(). Вот он и запускается 60 раз в секунду.
   Top
2B администратор
Отправлено: 03 Июня, 2016 - 21:17:56
ID


администратор


Сообщений всего: 18244
Дата рег-ции: Июль 2004  
Откуда: Ирпень, Украина
Репутация: 56




короче, нелегки будни программиста!
   Top
krre
Отправлено: 03 Июня, 2016 - 21:30:54
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Так и есть, крайне тяжелы!
   Top
krre
Отправлено: 05 Июня, 2016 - 10:25:44
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




После долгой изнурительной борьбы с OpenGL удалось нарисовать квадрат. Это даже не совсем квадрат, а точка размером 200 пикселей. Просто OpenGL не работает с круглыми формами, для него существуют только линии. Если надо изобразить круглую форму, тогда нарезаем её маленькими отрезками до тех пор, пока отрезачность не перестанет быть заметной. Так вся графика на компах и делается, из мелконарезанных линий и треугольников. Правда, можно ещё нарисовать круг шейдером, чисто из пикселей, но этот круг будет кругом только в плоскости экрана, его уже не развернёшь в перспективе, чтобы под углом он был похож на эллипс.

Дальше надо нарисовать настоящий квадрат из двух плотно сцепленных по гипотенузе треугольников, а потом умножить этот квадрат на перспективную матрицу, чтобы увидеть его уходящим в глубину. Это снова на несколько дней работы. Как всегда, жизнь коротка, а дел много.
   Top
2B администратор
Отправлено: 06 Июня, 2016 - 10:47:06
ID


администратор


Сообщений всего: 18244
Дата рег-ции: Июль 2004  
Откуда: Ирпень, Украина
Репутация: 56




Век живи - век учись! Улыбка
   Top
krre
Отправлено: 06 Июня, 2016 - 12:14:42
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Золотые слова, но не про нас! До ста лет едва ли кто доживёт. ангелочек
   Top
krre
Отправлено: 08 Июня, 2016 - 16:29:02
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




После ещё одной недели very hardly боёв с OpenGL удалось нарисовать полноценную плоскость размером 1х1 и поглядеть на неё в перспективе. Урррррррррряяяяя!!! Так ещё несколько лет - и можно будет, наконец, сделать из плоскости ландшафт. гы-гы!

Хочу теперь эту плоскость как-то разукрасить. Дело это тоже непростое. Надо создать массив цветов для каждой вершины, загнать их буфер, буфер отправить в видеокарту, а потом ещё дописать немного новых инструкций в шейдерах, чтобы видеокарта понимала, как из буфера назначить цвет на вершины.
   Top
krre
Отправлено: 08 Июня, 2016 - 19:44:17
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Пришёл с работы домой и тут же сварганил плоскость в цвете. Вы легко можете определить по скриншотам, на работе они были сделаны или дома. Если кнопки управления окном слева, они кругленькие и оранжеватенькие, значит, это Ubuntu, и я был на работе. А если страшненькое, бледненькое, квадратненькое, и кнопки справа, значит это домашний Windows.

Цвета вершин нарочно выбраны яркими и разными, чтобы подчеркнуть, что плоскость состоит из двух треугольных полигонов по три вершины - итого шесть вершин, и у каждой надо задать цвет. Обычно вершины задают более-менее однообразными цветами, и тогда треугольники становятся не видны. А ещё чаще просто накладывают текстуру с уже готовыми цветами, и там что попадёт, то попадёт. Градиентную интерполяцию между цветами видеокарта делает сама. Если бы это делалось на процессоре, это было бы очень долго, а на видеокарте это быстро.
   Top
krre
Отправлено: 09 Июня, 2016 - 16:04:39
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Gagarin Daily News

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

Перешёл к самому интригующему. Хочу заставить Гагарина ходить по плоскости. Для этого вернулся к разработке системы событий. Там добавил события перемещения курсора мыши, потом надо будет нажатия клавиатуры добавить. Всё это уходит на обработку во вьюпорт, а там начинается перемножение кучи матриц. Просто НЕМЕРЯННОЙ кучи матриц. У меня от них уже в глазах рябит.
   Top
krre
Отправлено: 10 Июня, 2016 - 11:18:54
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Gagarin Daily News

Идеи на будущее. Идеи - это то, что у меня сейчас получается лучше всего. гы-гы!

Действие будет происходить в "далёкой далёкой галактике". Гагарина туда забросят один раз, и дальше делай с галактикой что хочешь, она вся твоя. Помощи ему в случае чего ждать будет неоткуда, поэтому он будет бессмертный, то есть в случае серьёзного урона Game Over ему не грозит. Он будет только терять сознание до самовосстановления. Чтобы, пользуясь этим бессмертием, не возникло соблазна кидать Гагарина почём зря в огонь и медные трубы, процесс самовосстановления будет ущербным. Например, не всё будет восстанавливаться сразу, а период отключки может быть длительным. И за это время его могут куда-нибудь утащить всякие клептоманские аборигены, что может быть не всегда желательным.
   Top
2B администратор
Отправлено: 11 Июня, 2016 - 09:44:26
ID


администратор


Сообщений всего: 18244
Дата рег-ции: Июль 2004  
Откуда: Ирпень, Украина
Репутация: 56




То есть у тебя на работе сейчас вдоволь времени, чтобы игрой заниматься? Отлично!
   Top
krre
Отправлено: 11 Июня, 2016 - 09:47:23
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Не всегда. По крайней мере, обеденный перерыв с 12 до 13 весь мой, а в остальном, как только закончил одно задание и до того, как дали следующее, может пройти какое-то время, которое я стараюсь потратить с пользой для развития игры. Улыбка
   Top
2B администратор
Отправлено: 11 Июня, 2016 - 11:14:37
ID


администратор


Сообщений всего: 18244
Дата рег-ции: Июль 2004  
Откуда: Ирпень, Украина
Репутация: 56




Молодец! А я, вот, в свободное время фильмы какие-то смотрю, или мультики... Я плачу...
   Top
krre
Отправлено: 11 Июня, 2016 - 11:46:40
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




А 2Б всё такой же, как и тогда, когда я попал к нему в банк пять лет назад. Только борода седее стала. гы-гы!
   Top
krre
Отправлено: 11 Июня, 2016 - 19:29:22
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Гагарин теперь может перемещаться в пространстве. И не только ходить, а даже летать. Как орёл. Чтобы только ходить и не летать пока не выйдет. Для этого у него должен быть вес, на которую действует сила тяжести. Всё это требует подключения физического движка, что, конечно, ещё очень и очень рано. А без этого движка Гагарина невозможно пришпилить к плоскости, разве что какими-нибудь костылями, проверяющими вертикальные координаты тела по отношению к ней.

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

Что ж, можно сказать, что игра почти закончена. Осталось добавить ещё что-нибудь, кроме Гагарина - и можно выпускать игру на консолях, десктопах и мобильных девайсах. гы-гы!
   Top
krre
Отправлено: 20 Июня, 2016 - 12:54:36
ID

компьютерный мультипликатор


Сообщений всего: 2151
Дата рег-ции: Дек. 2008  
Репутация: 28




Gagarin Daily News

Всю неделю я сражался против ECS, а ECS сражался против меня. В итоге ECS победил.

ECS - это Entity Component System, такая хитрая архитектура в играх, основанная на компонентной модели, на которую сейчас переходят всё больше и больше новых игр. В противовес традиционной объектно-ориентированной, основанной на наследовании. Это настолько необычная и непривычная архитектура, что мне понадобилась неделя, чтобы в ней как следует разобраться. Чтобы перечитать кучу статей, сообщений на форумах, программного кода и решить, что было бы неплохо и свою игру построить на этой архитектуре. Правда, опять же, существует 100500 подходов, как это сделать, и я ещё не совсем хорошо сориентировался, какой будет лучше конкретно для меня. В программировании всё меняется очень быстро, и приходится постоянно быть начеку, чтобы не отстать от прогресса.
   Top
2B администратор
Отправлено: 21 Июня, 2016 - 10:03:00
ID


администратор


Сообщений всего: 18244
Дата рег-ции: Июль 2004  
Откуда: Ирпень, Украина
Репутация: 56




Как это победил? И что теперь?
   Top
Страниц (12): « 1 2 [3] 4 5 6 7 8 9 ... » В конец
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« флуд »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




www.g-2b.com


Powered by ExBB. ExBB FM 1.0 RC1 by TvoyWeb.ru. InvisionExBB Style converted by Markus®, edited by 2B. Smiles by Aiwan, Connie and others. Hosted by Peleng.

[Script Execution time: 0.0403]     [ Gzip Disabled ]