Главная » 2008 » Июнь » 8 » Учимся писать игры,как написать игру!?
Учимся писать игры,как написать игру!?
22:34
Основные положения
Итак.. Вы решили создать игру вашей мечты. Вы собираетесь переплюнуть х3 и даже Элиту. Ну что ж..
.........
Вы не знаете языков программирования. Вы не знакомы с gamedev`ом.
Учтите — к вам никто не присоединиться, пока не будет хоть какого-то графического движка или финансирования. Желательно и то и другое.
В общем случае выход таков — учите языки программирования и графические API, будь то OpenGL или DirectX.
До первой игры вам предстоит довольно много пройти.
Какой же выбрать язык программирования?
Существуют мнения, что качественную программу (игру в частности) можно написать только на Си. Этот миф зародился еще в те времена, когда альтернативе Си не было...
К сожалению, этого мнения придерживаются и работодатели – учтите это!
На самом деле и Делфи и Бейсик (последних версий – где это уже самостоятельный язык программирования, а не интерпретатор) пригодны к написанию игр.
Да, если написать тестовую, консольную программу, которая будет в цикле делать что-то математическое, то скорость будет самой большой у Си... Но, например, Делфи – самый быстрый в ООП программировании, причем, намного быстрее Си.
.........
Еще возможно быть лидером и организовать финансирование (скорее из своего кармана, т.к. издатели не пойдут на такой риск — давать деньги фирме без имени... ну или условия будут абсолютно неприемлемые). К сожалению, появились некоторые российские фирмы, которые проводят мощнейшую PR-кампанию, но выпускают ужасный продукт, правда, зарабатывая при этом огромные суммы.
.........
Вы знаете какой-либо язык программирования. Но не знакомы с особенностями создания игр и работы с графикой.
Не важно, какой опыт у вас есть в программировании. Вы не знаете, как создавать игры – значит, вы не знаете основного. Т.е. если вы опытный программист не думайте, что сможете сразу написать игру.
Тут важен опыт. Я не могу вам объяснить, КАК написать игру – нет универсального способа. Программирование это творчество. Вот основные положения и советы:
— Игра состоит из графического, физического, звукового движков (они могут быть слиты в одну целую структуру). И игровой движок, который использует эти движки, при чем они не знают об игре ничего. Т.е. игр может быть много – движок один.
— Грубо говоря, движок это менеджер объектов такого плана – источник света, геометрия, система частиц, источник звука, материал и т.п. Он общаться с графическим API (DirectX, OpenGL) – будь то непосредственно с ним или через какой-либо интерфейс (если создается движок, который не зависит от графического API, например, с целью переделать его на игровые приставки).
— Игра предоставляет игроку возможность влиять на объекты движка. Игра – менеджер объектов типа (это пример — ведь тут много чего может быть) корабль, планета, станция, ракета. Игровые объекты уже имеют связи с объектами в движке. В игру может быть добавлен скриптовый движок.
На самом деле существует огромное количество вариантов архитектуры игр – я привел один из многих. Делайте движок как можно более универсальным, но не забывайте о его специализации – если он строго для космосимов, то не нужно добавлять в него поддержку чего-то абсолютно стороннего.
Обязательно попробуйте написать свой движок – это даст вам огромный опыт.
— Не делайте лишнюю работу. Например, если у вас есть поддержка конверта из графического пакета Mesh`ей, то не пишите расчетчик нормалей – ведь за вас это сделает графический пакет. — Когда пишите свой движок делайте под него редактор – где можно было бы редактировать материалы, делать конверт из графических редакторов в ваш формат, использовать NVMeshMender (для Bump`а) и NVTriStrip (для оптимизации mesh`ей) и т.д. — Опять же — делайте движок универсальным и устойчивым к изменению концепта. Т.е. чтобы вам не пришлось переписывать всё из-за того, что у вас теперь не симулятор линкора, а торговая стратегия (хотя это и сложно). — Пишите движок постепенно. Добавляя по ходу разработки всё новые и новые возможности. Не следует считать, что вам не угнаться за новинками графики – не всё так сложно и быстро развивается. — Разберитесь с 3д математикой. Узнайте что такое матрицы. Найдите себе хорошую математическую библиотеку. Это очень важно. — Не бойтесь переписывать всё с нуля. Даже если вы и написали уже тысячи строк кода. Это окупиться. Проверено. — Правильно применяйте ООП. Не стоит создавать объекты вроде TSputnic и TPlaneta – используйте более общие классы, типа TSkyObj. Тоже и про корабли.
Да, можно взять и готовые движки – но всё равно большинство пунктов, которые я перечислил выше, относятся и к готовым движкам. Ведь еще нужно написать игровой движок...
Ах да, ну и на последок — не увлекайтесь сидением на профильных форумах (кроме ЕГи ессно) — там обитают одни флудеры — настоящие профессионалы просто работают и помогают новичкам, но никогда не будут обсуждать, например, на каком языке программирования писать.