2010-06-06 2 views
8

Я сразу же помещаю это как сообщество. Я не хочу просить о помощи в программировании или даже задать конкретный вопрос о программировании, а скорее процесс и ресурсы, необходимые для создания такой игры.Если бы я хотел сделать игру Pac-Man?

Проще говоря: Мой друг колледжа и я решили дать нам действительно большой вызов для дальнейшего развития навыков программирования. Через полгода мы хотим показать себе игру Pac-Man. Pac-Man будет управляться AI, как призраки, и любой из Pac-Man живет дольше всех после победы над множеством попыток.

Это не то, что мы сделали до сих пор. Цель здесь, для меня, заключается не в создании идеальной игры, а в попытке ее завершить, изучите целую кучу процесса. Даже если я не закончу в то время, что является хорошей возможностью, я бы хотел хотя бы попробовать это.

Итак, мой вопрос: как мне начать подготовку себя? Я уже начал векторную математику, матрицы, все эти забавные вещи. Моя желаемая платформа была бы DirectX 9.0c; является ли это целесообразным? Имейте в виду, что это не предпочтение только для этого проекта, но я хочу иметь какое-то будущее в разработке графики, поэтому я хочу выбрать платформу, которая будет безопасна в будущем.

Что касается разработки игры в целом, что я должен принимать во внимание? Я никогда раньше не занимался настоящей игрой, поэтому всем и всем советуем разрабатывать средние проекты (если это будет проект средней величины).

Мои главные проблемы - ямы-падения и демотиваторы.

Извините, если вопрос такой расплывчатый. Если он здесь не принадлежит, я удалю его. В противном случае всем и всем, кто советует делать крупные проекты, очень признателен.

+7

Взгляните на 'http: // www-cs-students.stanford.edu/~ amitp/gameprog.html', это может помочь с некоторыми темами. – tur1ng

+0

Какая классная страница! Большое спасибо за ссылку! – IAE

+0

эквивалент DirectX «Hello World!» состоит в том, чтобы нарисовать один треугольник на экране, используя систему рендеринга. Попробуйте найти «DirectX draw one triangle». ;) –

ответ

2

Лично вот что я бы:

  • исследование с открытым исходным кодом игры, чтобы увидеть, что они делают
  • купить книгу о программировании игр (на самом деле, у меня есть a book about game programming уже, но вы, вероятно, хотите что-то более позднее, чем)
  • выбрать библиотеку развития набора инструментов/игр (Sourceforge, Google Code)
  • работы через учебники, которые приходят с этой библиотекой , Возможно, переход к другой библиотеке, если API слишком странно
  • придумать документ требования
  • составить проект первого прохода («план, чтобы бросить одну сторону»), try to have somebody review it
  • принять решение о плане тестирования
  • write up a schedule, не потому, что я хочу остаться в соответствии с графиком, но потому что я хочу, чтобы ломать вещи вниз в легко определенных задач
  • написать наименьшую полную игру, я мог (например., РАС Man спрайт, что я могу управления внутри окно: нет лабиринта, призраки, оценка, жизнь, умение и т. д.)
  • добавьте функции к этой игре, пока я не выполнил все это.
+0

Это довольно солидные идеи. Только один вопрос, что бы вы определили как «странный» API? – IAE

+7

Прежде чем я сделал что-либо из вышеперечисленного, я бы установил систему контроля версий и ознакомился с ее использованием. – 2010-06-06 20:54:33

+0

Включите его в мой список, спасибо! Любое, в частности, что вы можете порекомендовать или, скорее, «экспериментировать и посмотреть сами»? – IAE

1

Звучит неплохо для учебного проекта!В 2 общих вещах, которые я рекомендую для подхода

  1. работы в итерациях
  2. прочитал кучу о C++ и DirectX по пути

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

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

9

Учитывая, что вы не пробовали такие вещи, прежде чем вот несколько вещей, которые я бы рекомендовал.

Начать с чем-то другим, чем DirectX (и, предположительно, C++)

DirectX и C++ разоблачить вас много вещей низкого уровня вы можете узнать позже. Держите вещи простыми и, возможно, попробуйте XNA и C#, которые достаточно близки, и вы можете позже их перенести, но теперь вы можете пропускать множество вещей, таких как управление памятью и указатели.

Начнет с 2D вместо 3D

Оригинальный Pacman является 2D, так что вы не будете нужен вектор математика сейчас.

Так где же это вас покидает?

Ну, несколько вещей, о которых стоит подумать, это игровой цикл, синхронизация событий, обновление экрана и реагирование на ввод пользователя.

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

Я бы пойти по этому маршруту (упорядоченный, чтобы держать вещи весело и интересно)

  1. Получит экран отображения - это визуальное
  2. системы Получить Pacman реагировать на ввод пользователя
  3. Получить Pacman ограниченно в пределах стена
  4. Получить привидение реагирования на вторичный вход пользователя - вы можете преследовать друг друг
  5. выяснить некоторые обнаружения столкновений
  6. Получить точки и энергетические таблетки рендеринга, так что вы можете набрать и съесть призрак
  7. Рендера еще несколько призраков и выяснить AI
  8. Отработать код для поиска, когда уровень завершения
  9. Сделать изменение карты и состояние сбросить, если на новом уровне

После того, как вы заработаете и работаете, вы можете решить, хотите ли вы играть лучше с AI, 3D-математикой или переключиться на C++.

+0

Привет! Спасибо за комментарий, но прояснить: я не полный новичок в программировании игр. Я сделал защиту башни в ActionScript до и уже сделал программирование с XNA C#, поэтому я хорошо знаю игровой цикл и * некоторые * процессы, хотя и не слишком много. Причина, по которой я хочу сделать это с C++, заключается в том, что это реальные языки программирования, используемые для большинства игр, а также основной язык, который преподаются в колледже. Я ценю комментарий, хотя, и я буду принимать ваши комментарии к сердцу ^^ Особенно о 2D-doh! Должно быть, реализованные векторы могут не вступать в игру. – IAE

+0

Отлично! Я все равно придерживаюсь последовательности, подобной описанной выше, если вы не хотите потерять сердце. Попытка написать такие вещи, как ИИ, прежде чем вы сможете визуально увидеть это в действии, - это болезненный процесс;) – DamienG

+1

Да, вот почему я моделирую алгоритмы поиска пути в excel, вы можете точно видеть, что происходит (и вы получаете репутацию того, что сумасшедший excel guy в компании) –

3

Play pacman! Это первая задача для вашего проекта!

+0

Из-за недавних событий: http://www.google.com/pacman/ – tur1ng

4

Мне пришлось написать игру pacman в Java для класса OO. Я нашел это очень простым, возможно, за исключением того, чтобы выяснить, как лучше всего нанести на карту стены. После небольшого исследования я наткнулся на это: http://javaboutique.internet.com/PacMan/source.html, который использует бит-сдвиг для определения стен. Это похоже на сложность переполнения, но я нашел ее довольно элегантной после того, как немного поиграл с математикой. Кроме того, pacman - очень понятная концепция, поэтому используйте массив для платы, некоторые базовые спрайты, возитесь со скоростью и обновлением, отслеживайте данные игры и бросайте их в цикле. Что касается ИИ с призраками, то о них написаны статьи. Каждый призрак имеет определенную «стратегию». Или вы можете свернуть свой собственный ... вы можете запрограммировать их так же легко, как всегда, направляться в сторону pacman (или его общее местоположение/квадрант) или как сложный (кратчайший путь), как вам хотелось бы.

1

Хороший материал! Я рад, что Pacman мотивирует и вдохновляет вас.

С чего начать.

1) Определите среду разработки.

a) Are you building a standalone game or a networked game. 

b) Which language are you targetting at to improve? 

2) Насколько хорошо разбираетесь в ИИ?

3) Насколько хорошо разбираются в методах алгоритмов программирования - как поиск пути A * (A star), алгоритм Дейкстры, обнаружение столкновений, тестирование на удар или даже рекурсивное программирование?

4) Есть ли у вас талантливые в графическом дизайне?

Удачи.

P/S FYI, если бы я написал игру Pacman, я бы сделал это в C# и Silverlight 4.0 (я могу писать C++ комфортно, но мой приоритет - прыгать на победителя Silverlight).

Смежные вопросы