Какая хорошая игра с открытым исходным кодом, чтобы учиться? [закрыто]


15

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

Редактировать: Подумав, я хотел бы сделать игру, в которую можно играть на рабочем столе или на телефоне Andriod с 2D-графикой.


7
Большинство игр с открытым исходным кодом - это большие, старые проекты, которые не всегда легко понять, коммерческие проекты с открытым исходным кодом по разным причинам или незаконченные игры, которые на самом деле не находятся в играбельном состоянии. Кроме того, архитектура немного зависит от типа игры и используемого языка. В какой игре вы хотите учиться, и какие языки вы знаете? (уроки честно, может быть, лучший вариант здесь)
thedaian

@thedaian Я знаю Java, C ++, C, javascript и python
jumpnett,

2
Возможный дубликат: gamedev.stackexchange.com/questions/1497/...
Тетрадь

Я согласен с thedaian, по крайней мере, это работало лучше для меня. Есть много очень хороших статей, книг и учебных пособий. Вам потребуется время, чтобы выбрать правильные, но это сэкономит ваше время позже, потому что вы уже будете знать, почему они кодируют так, как они делают, и сможете распознать качество источников (которые часто пахнут). Если вам нужна мобильность, я бы выбрал C / C ++, но для этих платформ вы можете хорошо работать с Java.
Пабло Ариэль

1
Сообщество вики?
Яри ​​Комппа

Ответы:


2

Я не уверен, какой тип игры вы запрашиваете, но есть игра с открытым исходным кодом под названием OpenTTD, написанная на c ++. Я думаю, что вы могли бы использовать его как хороший образец.

некоторые особенности, которые делают эту игру уникальной:

  • Это стратегическая игра.
  • Он имеет многопользовательскую поддержку через Интернет и локальную сеть.
  • Он поддерживает перевод на другие языки через файл конфигурации (который генерируется из необработанных текстовых файлов)
  • Он скомпилирован практически на каждой платформе, которую я знаю.
  • Его проект еще жив!
  • Он имеет встроенную поддержку AI.
  • Графические и музыкальные данные полностью настраиваются с помощью патчей.
  • Он поддерживает скриптовые языки для разработки собственного AI. так что вы также можете прочитать другие AI, написанные для этой игры.
  • Это относительно большой проект, хотя его легко читать и понимать.
  • Он основан на SDL, и с этого момента они разработали все с нуля.

--Редактировать--

Просто сегодня я начал читать их код с самого начала. Чтобы понять, что они написали, вы должны быть приличным программистом на C и C ++ (хотя их код хорошо прокомментирован)! Я имею в виду, что вы должны быть мастером обоих языков, так как они используют структуры из обоих! так что если вы не уверены в своих навыках программирования, даже не подходите к этому коду! это самый грязный код, который я когда-либо видел! (и я сам грязный кодер, но это нечто другое!)

Я думаю, что теперь я могу предложить вам проверить код supertux . Это платформерная игра (точно как Super Mario), и пока что их код кажется действительно чистым (я проверил этап 1.3). у них есть некоторые комментарии в этом коде, но только для мест, которые могут вас запутать.


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

@thedaian вы можете так сказать, но время от времени мне нужно делать что-то новое, я просто читаю то, что написано в их коде. до сих пор я думаю, что это самая читаемая игра с открытым исходным кодом, которую стоит прочитать!
Ali1S232

Также я не уверен, когда вы в последний раз проверяли их код, но они очищали его с версии 1.0.0
Ali1S232,


1

Есть такие основы, как Quake 3 или, если вы хотите что-то немного проще (и в 2D), посмотрите на инди-игру Gish . Они оба используют OpenGL и тоже кроссплатформенны.

Хотя Гиш немного запутан.


1

Я рекомендую вам сначала сосредоточиться на том, какой тип игровой архитектуры вы хотите узнать - 3D конвейер, физика, ИИ и т. Д.

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

ура


Космические захватчики только в окнах? В настоящее время на моем компьютере не установлены окна. Не то чтобы у меня нет доступа к нему, просто это не так удобно.
Jumpnett

1

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

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


1

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

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

Следующее, что вы можете сделать, что согласуется с моим предыдущим опытом, это попытаться что-то изменить. Не что-то огромное (на первый взгляд), просто что-то простое и заметное в игре. Даже что-то такое простое, как текст на кнопке в меню или добавление пункта меню или изменение расчетов ущерба. Может быть, вы думаете, что они должны были сделать что-то по-другому, попробуйте изменить это самостоятельно.

Когда я впервые заинтересовался разработкой игр, я действительно увлекся 2D-онлайн-ролевыми играми. Таким образом, я нашел источник для одного онлайн, и я начал опираться на него. Добавление моих собственных функций и настроек, исправление ошибок и т. Д. Это было в VB6 несколько лет назад, и теперь я использую C # и XNA и пишу свою собственную игру с нуля. Поскольку мне нравились игры, это побудило меня захотеть поработать над этим, сделать его лучше. По совпадению, это также, как я изучил много методов программирования, отладки и решения проблем, которые я использую сегодня в моей повседневной работе, не связанной с gamedev.

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


1

Отличительной платформой Android 2D с открытым исходным кодом является Остров Реплика .

Источник на Google Code и развитие был запечатлен в авторской девблоге .

Вот список из 15 игр с открытым исходным кодом для Android, которые также могут быть полезны для просмотра.


круто, я должен это проверить.
Jumpnett


0

Скроллинг Game Kit развития 2 позволяет реально создавать 2D игры и играть их с помощью графического интерфейса пользователя без написания кода. Но это также позволяет вам видеть и редактировать код, встроенный в проект, который представляет структуру / движок игры. Большая часть кода предоставляется через графический интерфейс, хотя небольшая его часть генерируется кодом, основанным на том, где вы размещаете спрайты и какие карты вы создаете. Однако даже этот код виден, если вы генерируете проект и затем открываете получившиеся файлы в Visual C # Express. Вся программа (IDE) также с открытым исходным кодом. Он основан на библиотеке OpenTK (которую он использует для взаимодействия с OpenGL из C #), которая также является открытым исходным кодом.


Я посмотрю на это, но я программист, поэтому написание кода не имеет большого значения.
Jumpnett
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.