Яка хороша гра з відкритим кодом, чому можна навчитися? [зачинено]


15

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

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


7
Більшість ігор з відкритим кодом є великими, старими проектами, які не завжди легко зрозуміти, комерційними проектами, відкритими з різних причин, або незавершеними іграми, які насправді не перебувають у грі. Плюс, архітектура трохи типу гри та мови, що використовується. Якій грі ви хочете навчитися та які мови ви знаєте? (Підручники чесно можуть бути кращим варіантом тут)
thedaian

@thedaian Я знаю java, C ++, C, javascript та python
jumpnett

2
Можливий дублікат: gamedev.stackexchange.com/questions/1497/…
Тетрад

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

1
Вікі спільноти?
Jari Komppa

Відповіді:


2

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

деякі функції, які роблять цю гру унікальною:

  • Це стратегічна гра.
  • Він підтримує багатокористувацьку мережу через Інтернет та локальну мережу.
  • Він підтримує переклад на інші мови через файл конфігурації (який генерується в текстових файлах із необробленим)
  • Він збирається майже на кожній мені відомої платформі.
  • Його проект ще живий!
  • Він має вбудовану підтримку AI.
  • Графічні та музичні дані повністю настроюються за допомогою патчів.
  • Він підтримує мови сценаріїв для розробки користувацького AI. тому ви також можете прочитати інші AI, написані для цієї гри.
  • Це відносно великий проект, в той час як його легко читати і розуміти, що це код.
  • Він заснований на SDL, і з цього моменту вони розробили все з нуля.

--Edit--

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

Я думаю, зараз я можу запропонувати вам перевірити код supertux . це платформова гра (як і супер Маріо), і поки їх код здається дійсно чистим (я перевірив основу 1.3). у них є деякі коментарі до цього коду, але лише для місць, які можуть вас заплутати.


Хоча OpenTTD - дивовижна гра, я не думаю, що це хороший навчальний проект. Більшість його було розроблено за допомогою зворотного монтажу, і все ще є розділи коду, які це відображають. Плюс, це просто величезний проект, і це, мабуть, занадто багато для початку проекту "вивчити архітектуру гри".
thedaian

@thedaian ви можете так сказати, але раз у раз, коли мені потрібно зробити щось нове, я просто читаю, що написано в їхньому коді. Поки що я думаю, що це найбільш читана гра з відкритими кодами, яку варто прочитати!
Ali1S232

також я не впевнений, коли ви востаннє перевіряли їхній код, але вони прибирали його з версії 1.0.0
Ali1S232

2

Я думаю, можливо, хорошим підходом є вибір гри, яка вам подобається, і перевірка будь-яких подібних ігор з відкритим кодом. Список клонів з відкритим кодом, можливо, може допомогти на останньому кроці.


1

Є опори на зразок Quake 3 або якщо ви хочете щось простіше (і в 2D), подивіться на гру Інді Gish . Вони обидва використовують OpenGL і теж є платформою.

Хоча Gish трохи на брудному боці.


1

Я рекомендую спочатку звузити свою увагу щодо того, який тип ігрової архітектури вам цікавий - 3d конвеєр, фізика, AI тощо.

З загальним проханням про хороший приклад програмування ігор, я думаю, що космічні загарбники gl важко перемогти, оскільки він має чистий код та відкриту гру і інтерфейс гл, зберігаючи речі досить просто.

ура


Чи просто космічні окупанти gl вікна? На даний момент у мене на ПК не встановлено Windows. Не те, що я не маю до нього доступу, тільки що це не так зручно.
джетнетт

1

Незважаючи на те, що читання коду може бути корисним, якщо ви новачок у домені, ви нічого не дізнаєтесь. Особливо, якщо ви подивитеся на код великих проектів, таких як Q3A або OpenTTD. Це були зроблені цілою командою, кожна людина має різні практики кодування, різні ідеї, як зробити речі. Ви отримаєте лише велику картину, а не дрібні деталі, завдяки яким все злипається.

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


1

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

Після того, як ви вибрали цю гру, незалежно від того, яка вона велика, вам не доведеться намагатися з’ясувати, як працює кожен рядок коду. Виберіть шматочок і подивіться на це. Наприклад, спробуйте з’ясувати, як зберігаються дані гравця чи як малюється пункт меню тощо.

Наступне, що ви можете зробити, що йде разом з моїм попереднім шматочком, - це спробувати щось змінити. Не щось величезне (спочатку), просто щось просте і помітне в грі. Навіть щось таке просте, як текст на кнопці в меню або додавання пункту меню або зміна розрахунків пошкоджень. Можливо, ви думаєте, що вони повинні були зробити щось інакше, спробуйте змінити це самостійно.

Коли я вперше зацікавився розвитком ігор, я справді потрапив у двовимірні онлайн-RPG. Тому я знайшов джерело для одного в Інтернеті, і я почав будувати його. Додавання власних особливостей та налаштування речей, виправлення помилок тощо. Це було в VB6 кілька років тому, і зараз я використовую C # і XNA і пишу власну гру з нуля. Оскільки я насолоджувався іграми, це мотивувало мене захотіти працювати над ним, зробити це краще. Випадково, саме так я дізнався багато методів програмування, налагодження та вирішення проблем, які я сьогодні використовую в моїх робочих днях, що не стосуються ігор.

Також дуже корисно, якщо в грі є спільнота моддерів, з якими можна задавати питання та отримувати допомогу та приклади. Але знову ж таки, навіть якщо цього не існує, ви вже тут, і ми готові допомогти.


1

Виділена гра з платформою Android 2D з відкритим кодом - це Replica Island .

Джерело на 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.