Трактат о создании игр
Дмитрий Литвиненко
Этот труд не претендует на статус шибко монументального, а скорее содержит
мои наболевшие мысли :-)
Итак, дорогой мой читатель, с вероятностью в 80-90 % ты зреешь в голове планы
создания собственной суперигрухи (ежели нет, тогда чего это ты сие читаешь?
:) Наверное ты еще довольно молод, но тебя уже отличает жуткое желание программировать.
Ты не боишься трудностей, готов изучать математику, физику, логику, анимацию
и т.п. до посинения. Вобщем ты рвешься действовать, действовать и действовать...
Чего это я?..
Просто для того чтобы создать действительно приличную игруху ты должен обладать
вышеперечисленными качествами. Я же попробую дать тебе несколько советов, которые
надеюсь помогут воплотить твои замыслы в жизнь.
Займемся твоими знаниями:
Может статься такое, что ты программируешь на одном языке программирования.
Ты боготворишь этот язык и не хочешь видеть ничего другого. Чтож, похвально
для фаната, но практически неприемлимо для серьезного программиста. Запомни:
знакомство с другими языками тебе не только не повредит, а пойдет на пользу
- гарантированно. Это совсем не значит, что ты должен бросить все, поставить
себе Delphi или Visual C++, накупить кучу учебников и штудировать с утра до
вечера. Нет. В этом деле можно провести аналогию с иностранными языками. Знать,
скажем английский, можно двумя способами: можно на нем читать и можно на нем
говорить (можно его совсем не знать, но накой тогда это надо?) Если ты умеешь
"говорить" на языке программирования, то ты сможешь сесть и написать
чего-нть крутое, которое очень понравится маме. Если ты умеешь "читать"
на языке программирования, то ты сможешь посмотреть листинг программы на C++,
почесать затылок и понять идею, а затем и алгоритм решения.
Итак, для хорошего программиста важно знакомство с несколькими основными языками
программирования. Для того чтобы написать игру, ты должен быть как минимум ХОРОШИМ
программистом.
Ого! - скажешь ты. - Это ты тут хорошо написал, а как же мне научиться "читать"
и все такое...
На самом деле все легко. Ты ведь уже умеешь программировать... ну, например
на VB? Просто возьми и прочитай пару учебников как сделать что-то например на
С++, что ты уже знаешь как делается на VB. С вероятностью в 101% в твоей голове
тут же начнут проноситься аналогии с "родным" языком, ты поймешь структуру
и некоторые отличия и вскоре научишься понимать почти любой листинг.
А ведь это очень важно при изучении какого-либо материала. В Сети огромное
количество учебников. Какие-то из них рассчитаны на VB, какие-то на С++, какие-то
на Delphi... Понимая несколько языков, ты получишь в несколько раз больше информации.
Вывод тут может быть такой: Знать нужно все, а программировать на чем нравится.
При программировании игр, дело обстоит не совсем так. Я надеюсь, что ты уже
пробовал что-нибудь такое графическое сделать и наверное видел с какой скоростью
рисует VB. Может быть ты думал, что это ты делаешь что-то не так, но я тебя
уверяю, что даже при использовании DirectX и максимально оптимизированных алгоритмов,
VB при всем желании не даст скорости, которую дает C++ Однако игры бывают разные,
и если ты собираешься делать не shoot'em all, а что-нть попроще, не требующее
быстрого рендеринга, VB - то, что тебе нужно. Это не значит, что надо делать
шахматы и играть с компьютером, изображая Каспарова. Квест, приключение, пошаговая
стратегия - эти жанры вполне могут быть реализованы с помощью VB, причем реализованы
с легкостью, ставшей визитной карточкой этого языка.
Наверное ты уже слышал много красивых слов типа DirectX, OpenGL и т.п. Все
это распространенные графические библиотеки, с помощью которых ты можешь писать
игру. Не надо бояться этих слов - надо их изучать. Если собираешься программить
на VB, изучать тебе надо DirectX. Можно использовать OpenGL, но только документации
по использованию этой библиотеки в VB, ты не найдешь почти нигде, хотя теоретически
использовать OpenGL из VB ты можешь. Тут-то и пригодится знание С++ Доков по
OpenGL в Сети хоть отбавляй. Самое главное, что в VB и в C++ все будет выглядеть
почти одинаково. Документация и учебники по ДиректХ как для C++, так и для VB
довольно распространены в ИНете. Delphi я еще не копал, поэтому сказать не могу.
Вторая, а подчас и первая составляющая любой игры - это графика. Если ты обладаешь
рисовательными способностями выше средних, то можешь смело приступать к созданию
шедевра. Большинство графических прог типа PhotoPaint, 3DSMax своими эффектами,
фильтрами и прочими наворотами могут очень сильно поднять твой графический уровень.
Ежели с графикой совсем никак, первый, кого ты обязан взять в свою команду -
это художник. Рисование графики к игре должно быть очень продуктивным. Даже
если ты собираешься делать двухмерную игру, все равно поставь и изучи 3DSMax
(или типа него). Подумай сам: ну как еще ты будешь рисовать штук 20-30 спрайтов
во всевозможных позах и позициях?
Далее тебе нужно знать физику. Моделировать поведение разноцветных картинок
на экране ты обязан исходя из реальных физических законов. Если у тебя кто-то
прыгает, то на него должна давить сверху сила притяжения. Да что я говорю -
повтори хотя бы тригонометрию!!!
Всевозможные алгоритмы типа нахождения кратчайшего пути и прочее понадобятся
тебе когда будешь добавлять в игру управляемые компьютером персонажи. Конечно
если ты планируешь убойный десматч для троих за одним компом - флаг тебе в руки.
Однако поверь, если самый злостный-презлостный босс на последнем уровне будет
просто бегать по кругу вокруг главного героя с воплями и криками твою игру это
не украсит. Так что приготовься к серьезной работе и накопай себе кучу алгоритмов,
благо в ИНете их предостаточно. Сюда также относятся всякие логические взаимодействия,
игровые скрипты и т.п.
Ну и последнее. Если ты не герой одиночка, то тебе нужна команда. Сделать приличную
игру один ты не потянешь. Просто физически. Запомни - ты программист. Может
быть еще руководитель. Тебе позарез нужны художники. Как можно больше - тогда
у тебя будет больше материала. Можешь напрячь еще нескольких программистов -
пусть пишут интерфейсы, подключают разную аппаратуру и т.п. Потом, кто-то должен
заниматься музыкой и звуком. Звуки записать самому у тебя получится вряд-ли,
так что понавытягивай их из различных игрушек. Музыку можно написать и самому
- в трэкере. Найди того, кто знает что это такое, тогда у тебя будет и музыка.
Если будешь использовать голоса - используй как можно больше людей. Если в игре
говорит взрослый мужчина, то в реальности это должен быть взрослый мужчина.
Можешь взять пахабную руССификацию какой-нибудь игры и почувствовать как напрягает,
когда один и тот же мужик сопя и кряхтя пытается выдать себя за убийцу-команндос,
пожилого профессора и аньку-пулеметчицу.
Вобщем если ты еще не испугался, тогда вперед - к трудовым подвигам!
Приятного программирования, Antiloop
Posted: 28.01.2k1
Autor: Antiloop
<anti_loop@mail.ru>
|
 |
 |
|