Yvision.kzYvision.kz
kk
Разное
Разное
399 772 постов41 подписчиков
Всяко-разно
1
11:33, 23 апреля 2011

Разработка игры – что это вообще, и с чем это едят ?

P.S\ Писал это когда тока начинали делать Astana Racer. Но по прошествии 2х лет, изменилось ровным счетом ничего.

Разработка игры – что это вообще, и с чем это едят ?

Blog post image

Что такое вообще разработка игры, по чему в Kz. Более 600 IT контор( на момент 2009 года ) и нету не единственной конторы которая сделала бы игру, о которую бы знали и ее можно было купить( ARTA Software – начала более менее серьёзно разрабатывать игры, я там работаю – это уже не робкие шажочки подпольщиков, но это только начало! И тем не менее на момент написания этого текста она еще в разработке, а это значит что нету еще не одной нормальной игрушки – в привычном понимании этого слова )

 

Blog post image

Я писал это еще в 2009 году, сейчас конечно СатанаРЭйЦер вышел, но сути это не меняет - хорошей игры так и нету!

 

В чем проблема казалось бы…. ???? Ведь что там сложного, в KZ есть программисты, есть моделеры, есть те кто до дыр знает фотошоп… пишите код, рисуйте модельки с хорошими текстурами – что такого, в ЧЕМ ДЕЛО ?

А вот не все так просто. К примеру большинство проектов которые заваливались на этапе разработки имели 2 основные проблемы.

1 – Банальная - деньги, это проблема не требующая комментариев.

2 – Технические проблемы.

 

Технические проблемы:

Blog post image

 

Почему делают программы, а игры нет ? Предположим у вас есть куча денег – большая, но не самая большая в мире. Т.е. вы можете позволить нанять людей не очень много, и не самых профессионалов( т.е. нет возможности пригласить людей из-за кордона… ). И вот вам нужны люди, где вы будете искать кадры для разработки гры? А не где!. Из привычных ныне методов – их не найдешь, ибо нету профессии где учили бы на -  Программиста игровой механики, логики, графики, искусственного интеллекта, физики, спец эффектов, вспомогательных средств( всякие редакторы ),  сетевого взаимодействия и систем синхронизации, написания плагинов к 3D пакетам, оптимизации кода( ОЧЕНЬ ХОРОШЕЙ ОПТИМИЗАЦИИ ).

 

Есть мнение что обычные программисты(Выпускники высших учеб заведений) это те же самые программисты что и делают игры, и можно их взять и сделать игру. Да это так, но их от программистов игр разделят километр «граблей», сделать игру то можно – но на это уйдет уйма времени т.к. изучение всех тонкостей каждого из перечисленных направлений требует времени и очень много – а самое дорогое у программистов игр это время! Если же не углубляться в тонкости то появиться другая проблема – игра не будет!

 

Нужен такой чел:


Blog post image

Сложность игр в том что там все нужно делать на приделе возможностей по производительности, и чем чаще компонент вызывается – тем он должен быть более производителен, к примеру: есть удобные языки типа С# или Java – они просты в том что на них удобно и легко разрабатывать продукты и писать логику, как никак управляемый код, который всегда вам скажет "что где упало" – но они медленны в плане логики( их плюс, это их минус ) – они очень хорошо подходят для веб приложений, серверов, просто программ( кнопочных приложений ) где если вы нажали кнопку, можно подождать 10 секунд пока программа что-то посчитает. У игр все не так, там нельзя ждать по 10 секунд, представляете – вы стреляете во врага, и тут появляется пауза в 10 секунд. Для игр распространены языки у которых скорость выполнения может идти в разрез удобности и простоты.

Тут на сцену появляются такие чудо языки как ( CC++ ) Это два самых расспространеных языка. Первый очень стар, и на нем писали такие игры как Квэйк 1-2-3, Дум 1- 2, вообщем большинство игр до 1998 года, тут уже на сцену вышел и зарекомендовал себя С++.

 

Blog post image

 

С++ это логическое продолжение С. Он на много наворочение С, и тем не менее он не самый лучший язык с точки зрения программирования, отладки, анализа кода – но он быстр, очень быстр – по этому игры делают на нем.

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

Ну ладно. Находите вы программиста который владеет С++( ему было интересно, и он его сам просто так изучил по вечерам– такое бывает  ;) ) , и мало того этот человек знает что такое игровой движок, физический движок, графический движок т.е. база у него есть, и он не просто зеленый новичок, который прочитал С++ за 21 день.

 

Blog post image

Ура можно делать игру.

 

Вам нужен моделер и текстуровшик – это уже не такая проблема, идем на сайты по 3д моделированию и ищем нужных товарищей, или вытягиваем из контор которые занимаются дизайном квартир, интерьеров, анимацией рекламы... где у нас еще 3д шники ?.

Итак у нас есть команда Программист, Моделер, ТекстуровщеГ. НО! Нужно еще больше, Гейм дизайнер, всякие менеджеры, те кто занимается сюжетом и т.д. и т.п.

И что дальше ?

Нужно придумать что делать, ок – как говорил Джон Кармак( Создатель Doom 3 ) «Сюжет в игре к как сюжет в порнушке, он нужен – но он не важен»( На верно по этому в Дуум 3 сюжет говно полное… ). Ладно делаем шутер, тут вроде все просто на первый взгляд – Пушка в руках, тупые боты зомби – которые даже стрелять не умеют, и простые «туннельные» локации. Чем не очередной шедевр про зомби ?

 

Blog post image

Придумали сюжет( приехал он со своей женой … бла бла бла… всех убили, остались тока вы с лопатой … )

Взяли какую нибуть игру как экземпляр для графики и геймплея - пошло!

Начали делать локации, людей и окружие – тут особых проблем по началу не будет( пока не будут появляться фитчи ) к примеру делаете вы делаете все в 3д максе, есть экспортер который переводит из 3д макса в движок игры( взяли какойнибуть доступный бесплатный двиг )

Моделер рисует домики где каждая ручечка прорисована, где прорисован сливной бачек в туалете, где текстуры хранятся в форматах .jpg .png .bmp …

Как все хорошо! Не правда ли! Правда тока по началу. Но вот потом появляеться проблема, уровень на котором пару домов грузиться 2 минуты, что такое?... Начали разбиться, потратили неделю – а оказывается текстуры сильно большие 4000х5000 пикселей на ручке у стакана на кружке. И вот - вот они грабли, и этих граблей будет тысячи, миллионы – порой вам будет казаться что все против вас – как будто вы попали в лес, где густой туман – не видно дальше своего носа, а времени несу медленно идти, по этому нужно бежать. А дальше …

К примеру - ну вот почему текстура в .jpg 1024х1024 занимает на жестком диске 200 кб, а в видео памяти 4 Мб ? Казалось бы не возможное, а так и есть( она храниться на жестком диске не сжатая + когда она грузиться в видео карту создаются MipMap уровни … ) а ведь размер видео памяти не такой уж большой, ладно на момент 2009 года размером видео памяти в 512 мб не кого не удивишь, но у многих всего 256 мб… а по мимо текстур там еще и модели хранятся, да да – не знали, они тоже в видео памяти, конечно их можно хранить в оперативной памяти – ок так и сделаем, но потом оказывается что это жутко медленно гонять их из видео карты в оперативку и обратно…

 

Потом вы смотрите на игру и думаете тут не хватает физики – чтобы объекты со стола падали, шкафы ломались, бочки можно было сдвинуть. И вы понимаете что нужно выходить из ситуации – есть 2 варианта, написать свой плагин для 3Д макса чтобы там можно было настраивать объекты, либо писать свой редактор объектов( Не альтернатива 3д максу, а именно настройка параметров объекта ) написать хороший плагин чтобы тот умел хранить параметры каждого объекта – та еще задача, и вы выберите написание своего редактора – да и так возможностей будет больше. А свой редактор это работа с гуи( кнопочки Windows-a ) это система сохранения объектов, и их же загрузка, это навигация и управление данными это еще туча проблем – о которых вы даже и не догадывались.

Ну вот уже есть редактор где можно настраивать объектам параметры, и тут нужен еще один редактор – где бы вы эти объекты могли расставлять Редактор карт, опять же проблемы ну уже будет проще, т.к. есть опыт написания редакторов.

Blog post image

Все хорошо, теперь делаем объекты расставляем их на карте. И вот опять игра тормозит, что такое – оказывается кол–во полигонов тоже ограничено, и те очень много полигонные ручечки да чайнички которые нарисовал вам бывший дизайнер( для которого красота пре выше всего ) оказываются не юзабельны для игры – ибо это не выносимая нагрузка на видео карту – итог, перерисовка объектов( маты на вас как на плохого программиста - типа это не мои модели тормозят, а плохой игровой движек! Так думаю все моделеры! ).

 

на картинке редактор Cry Engine 3, для игры Crysis 2!

Далее вы смотрите, ага в игре нету теней, и освещение не очень. Нужно делать красиво, а как делать, оказывается есть языки программирования для этого – это: HLSL, GLSL, Cg, Asm …  в зависимости от того что использует ваш движек, вам нужно будет выучить как работают эти языки. И выбрать нужный.

Blog post imageНу вот у вас OpenGL и вы выбрали GLSL начали писать шейдеры, все красиво вроде получается, но тут игра снова тормозит – оказывается эти программки которые вы пишите, выполняются миллионы раз в за одну отрисовку кадра( к примеру разрешение в игре 1280х1024 = 1 310 720 – это количество пикселев которые будут обработаны этой программой, и это тока пиксельный шейдер, еще есть вершинный который упереться в кол-во вершин, что опять же дает нагрузку. И вот вы соптимезировали, сделали ветвление за счет дефайнов – для нужного матереала нужный набор инструкций. Включаете игру на другом компьютере, и опочки – вместо красивого света, все матово белое, или криво освещается, что такое скажете вы ? Опытный человек скажет все нормально, другая видео карта от другого производителя – откуда вы это знали, да не откуда! Опять грабли.

 

А знаете ли вы что проще нарисовать 1 объекта в 5000 полигонов или 1000 объектов в 1 полигонб или вы что такое выпуклая геометрия и в чем её приколы ? Конечно нет, этому не учат – а за частую это узнают когда уже была проделана работа, и потом приходиться переделывать очень многое.

Вот тут и возникает вся сложность, это все нужно знать! Если этого не знать, не возможно что либо предсказать( т.е. у нас будет такая то фитча думаете вы – и привет очередные грабли, и оказывается такое сделать очень сложно или-и не возможно и фичи - не будет а на ней завязан весь сюжет )

Игра на этапе разработки, это комплекс программных средств,  причем чем лучше игра, тем сложнее весь комплекс программ и инструментов которыми будут оперировать разработчики.

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

 

Бывают гениальные игры, которые выходит за счет идеи - они обычно достаточно просты и при этом очаровательны, они завоевывают публику и приносят миллионы создателям – исключение из правил, и придумать такую идею не возможно известными методами.

 

Выводы за вами.

 
1