Если бы я хотел сделать игру Pac-Man? - PullRequest
8 голосов
/ 07 июня 2010

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

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

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

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

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

Мои главные проблемы - это ловушки и демотиваторы.

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

Ответы [ 7 ]

9 голосов
/ 07 июня 2010

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

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

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

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

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

Так, что это оставляет вас?

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

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

Я бы пошел по этому пути (приказал, чтобы все было весело и интересно)

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

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

4 голосов
/ 07 июня 2010

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

3 голосов
/ 16 апреля 2011

Я бы посмотрел на оригинальный аркадный шкаф код сборки для Pacman и описание того, что он делает . Это настоящее сенсационное сообщение:)

3 голосов
/ 07 июня 2010

Играть в Pacman! Это первое задание для вашего проекта!

2 голосов
/ 07 июня 2010

Лично вот что I сделает:

  • изучите игры с открытым исходным кодом, чтобы увидеть, что они делают
  • купите книгу о программировании игр (на самом деле, у меня есть книга о программировании игр , но вы, вероятно, хотите что-то более новое, чем это)
  • выберите набор инструментов / библиотеку для разработки игр ( Sourceforge , Google Code )
  • проработайте руководства, которые поставляются с этой библиотекой, возможно, перейдите на другую библиотеку, если API слишком странный
  • придумать документ с требованиями
  • составьте план первого прохода («планируйте выбросить один»), постарайтесь, чтобы кто-то его рассмотрел
  • выбрать план тестирования
  • составьте расписание не потому, что я хочу придерживаться графика, а потому, что я хочу разбить вещи на легко определенные задачи
  • написать наименьшую законченную игру, которую я мог (например, спрайта Pac Man, которым я могу управлять в окне: нет лабиринта, призраков, очков, жизней, способности умереть и т.
  • добавлять функции в эту игру, пока я не реализовал все это
1 голос
/ 07 июня 2010

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

Вещи, чтобы начать.

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

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

b) Which language are you targetting at to improve? 

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

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

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

Удачи.

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

1 голос
/ 07 июня 2010

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

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

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

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

...