јлексей јлександрович  оробов
#1 7 сент€бр€ 2009
ќтветить ÷итировать
— чего начать... ‘илософский вопрос



я сам начинал с редактировани€ уровней дл€ Duke Nukem 3D, первую игру писал квест пошаговый на QBasic'е, помню тогда еще под DOS Ctrl+C/Ctrl+V не знал (там было Ctrl/Shift+Insert как оказалось). ѕерва€ игра мо€ была отрисована графикой бейсика, кажда€ лини€ прописана вручную, 35 000 строк кода! ƒа... ќвца еще та Ќо эт было давно и неправда. ∆аль исходник потер€лс€ во времени, ща было-бы забавно позырить.



»так. — чего начать.



¬ общем в нете статей миллион по этому поводу, и это только на русско€зычных сайтах, мне почему-то они давались с трудом когда-то, думаю, что смогу рассказать проще.



ѕ≈–¬џћ ƒ≈Ћќћ



ћногие говор€т, что надо начинать с двумерной игры, лично мен€ двумерка не особо прикалывает, думаю со мной многие соглас€тс€, тем более, что вс€ фишка двумерки в красивой графике, а руки обычно кривые, и двумерки новичков смотр€тс€ убого



«начит возьмемс€ за трехмерку.



Ѕудем считать, что ты никогда ничего не писал, и пон€ти€ не имеешь с какой стороны к этому подойти. Ћично мне проще изучать какой-нибудь игровой движок на примере 3-D action, будем говорить об этом. ¬ стратегии сложно писать AI(искуственный интеллект) врагов, в гонках - заморочки с физикой (да еще физика+интеллект, это ваще засада), RPG - дофига локаций рисовать. Ќу а казуалки (маленькие игры) скучно и писать, и играть в них. «начит 3-D action!



ѕервым делом тебе понадобитс€ среда разработки, то есть €зык программировани€, или точнее -  ќћѕ»Ћя“ќ–, чтобы писать программу игры, средство моделлировани€ (3D Studio MAX, Maya, Blender, в общем что-то такое), сам € использую 3D studio MAX, просто потому что с него начинал, что лучше/хуже судить не нам . Ќу и под конец какой-нибудь звуковой редактор (Goldwave к примеру).



 ак €зык программировани€ дл€ новичка советую BlitzBasic, демку можешь скачать на www.blitzbasic.com, она полностью функциональна€, только работает 30 дней.

ѕри€тное о нем: ты поймешь практически все основные принципы написани€ игр: объекты, отрисовку, звук, логику.

Ќепри€тное: это Direct3D 7 (в поставку 98 Windows входил, если € не ошибаюсь), и отсюда все вытекающие последстви€.



Ќе надо отмахиватьс€ от него, только потому, что он древний. ѕервый проект свой ты все равно не продашь , а учитс€ сразу, с лету Direct3D9c на C++ и шейдерам это просто извращение интерес быстро пропадет.   тому же после него перейти на чистый OpenGL (как в моем случае) дл€ теб€ не составит труда.



¬ общем качай, (около 10 метров), ставь, запускай демки.



»так, что такое трехмерна€ графика, и как она используетс€ в играх.



¬се что ты видишь в трехмерной игре, это треугольники. Ћюбой монстр, уровень, да все что угодно - состоит из маленьких треугольничков. Ѕольшинство руководств дл€ начинающих сразу пытаютс€ дать информацию о том, как нарисовать эти треугольники, и в итоге опускают объектную модель, что крайне важно.



ћонстр, или уровень, источник света, да все что угодно - это точка в трехмерном пространстве, называетс€ - объект. “ак и будем называть (хот€ америкосы называют - сущьность). ” точки обычно есть тип. ќсновные типы обестов, это Pivot (точка), Mesh (“рехмерна€ модель), Light (—вет), Camera (“ут пон€тно).  огда запущена игра, она управл€ет этими всеми объектами, кто куда там полетел, повернулс€.



¬есь трехмерный мир всегда видит камера. “о есть пока у теб€ нет камеры, ты ничего не увидишь на экране.



¬от тебе пошагово и по русски, основной принцип практически любой 3D программы:



1. ѕоказать окошко программы, там где всю игру будет видно

2. —оздать камеру, котора€ видит мир

3. «агрузить уровень

4. ќсновной цикл



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



¬от по шагам:



' —оздаем окошко размером 800х600, с 32-битной палитрой, 2 - оконное (пока в подробности не вдаемс€)

Graphics3d 800,600,32,2



' —оздадим камеру, ведь без нее мы ничего не увидим

cam=CreateCamera()



' —оздадим куб

cube=CreateCube()



' ¬се объекты всегда создаютс€ в точке x=0,y=0,z=0

' и камера, и куб будут в одном месте, камера окажетс€ внутри куба, в итоге ты ничего не увидишь,

' по этому отодвинем камеру на 3 единицы назад



MoveEntity cam,0,0,-3

' значит ƒвигатьќбъект  јћ≈–ј, x=0, y=0, z=-3



' “еперь основной цикл:

' ѕока не нажата кнопка ESC

While not keyhit(1)


' ¬ращать куб на (x=0,y=1,z=2) каждый кадр
turnentity cube,0,1,2

' ќтрисовать все
RenderWorld
' ¬ыдать на экран
Flip



'  онец цикла

wend



'  онец программы

end





 ак видишь, тут нет ничего страшного, скоро допишу эту тему дальше.

 terley
#2 4 июн€ 2014
ќтветить ÷итировать
ƒоброго времени суток! ’очу с кем-нибудь опробовать игру, выслушать мнение, возможно, что подскажите о каких-либо ошибках и недочетах. ≈сли все получитс€, то возможна небольша€ денежна€ благодарность, если заинтересовало, пишите на email: Ќаписать письмо


ѕерейти в раздел: |