Які хороші ігри, щоб «заробити крила»? [зачинено]


305

Я вважаю, що для того, щоб стати хорошим розробником ігор, потрібно робити ігри.

З точки зору програміста , які хороші ігри початкового рівня, щоб забруднити руки? Яким навичкам та завданням навчає кожна з цих ігор?

Відповіді:


217

Прорив

Проста гра, оскільки у вас не дуже багато турбуватися (це масив значень цегли - якщо у вас є лише один колір цегли, це масив прапорів), AI не існує, і ви повинні зробити трохи фізики, щоб м'яч правильно відскочив.

Пасьянс

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

Pac-Man

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

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

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


49
+1 при прориві. У мене було багато розробників ігор PRO, які говорять мені, що коли вони отримують нову технологію, вони дізнаються її, спершу роблячи Breakout.
Джефф

2
+1 Прорив - перша гра, яку я зробив =). Також я погоджуюсь на спробу відтворити ранні відеоігри (власними поворотами!). Зосередьтеся на поняттях, а не на активах.
користувач384918

16
@PhillC, ні, розділяти це не варто
Simurr

13
Ви забули про тетріс: це була друга гра, яку я реалізував ще у високій школі :)
Еміліано

2
Чи можете ви всі, будь ласка, надати посилання на ваші прориви? Я любив цю гру і хотів би спробувати всі ремейки
пішов

256

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

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

Найкраща гра, щоб «заробити крила»? Той, який ви закінчили. Мені байдуже, скільки напівзроблених демонстрацій PONG / Breakout / Galaga / Tetris ви написали, ви не розробник ігор, поки не випустите фактично завершену гру.

Крім того, ніхто не хоче грати в іншу версію цих 40-річних ігор, і принаймні деякий сенс написання ігор - це люди грати , правда?


3
Я хочу втричі проголосувати за цю відповідь!
Iain

2
+1 за коментар щодо фактичного виходу гри. Початок роботи та запуску гри - це лише близько 30% процесу, IMO. Постійно перебираючи механіку, відшліфовуючи все, щоб виглядати презентабельно, переслідуючи ті неприємні помилки, які трапляються лише у дуже конкретних сценаріях і насправді здатні зосередитись саме на тому, що потрібно зробити, це інші 70%.
Денніс Мунсі

1
+1 за те, що я хочу сказати. Першою моєю грою був palmgadget.com/palmgo.html Це можна було зробити, тому що я люблю гру Go, і я дійсно використовую її для запису моїх ігор в клуб. Спочатку "подряпини свій свербіж".
ой

16
Мені подобається ця порада, але вона може бути небезпечною. Зрештою, саме цей менталітет саме тому так багато людей ходять на форуми ігор для розробників і кажуть: "Я ніколи раніше не робив гри, я запускаю MMORPG". Я б сказав, що ви повинні почати з гри, яка вам подобається з обмеженого вибору хороших початкових проектів. Отже, як, якщо ви справді ненавидите тетріс, то добре не робіть цього. Але натомість зробіть Breakout, а не будь-яку випадкову гру, яка вам подобається.
поштовх

185

Я розмістив цю драбину в TIGsource деякий час тому. Починається від самого основного до дуже складного.

  • "Відгадай число" / Hangman (базовий інтерфейс, вибір даних із бази даних)
  • Ножиці Tic-Tac-Toe / Rock-Paper-Paper (покроковий геймплей, противник AI)
  • Арканоїд / Понг (зіткнення, стабільна частота кадрів, оцінка, рівні)
  • Тетріс (структури даних та їхнє відношення до ігор)
  • 1942 / Стріляйте (вороги, кулі)
  • проста гра-платформер / пінбол, якщо ваш двигун робить платформери (колізії на основі гравітації)
  • Бомберман / Пакман (рух на основі плитки, складний противник AI)
  • Гра для двох гравців будь-якого типу вище (два входи гравця)
  • Roguelike / Diablo (управління запасами, кілька AI, ворог, збереження та завантаження складних ігрових станів)
  • Faceball / Wolfenstein 3D (основний 3d-рух і візуалізація)
  • Мережна покрокова гра (основна мережа)
  • Gimmicky 3D-платформер від третьої особи (фізика, складний 3d-рух)
  • Мережа в режимі реального часу (синхронізм клієнт-сервер, відставання)
  • MMORPG (Стійкий світ)

7
Ви можете краще пояснити, чого ви тут повинні вчитися. Ваші стислі нотатки не дуже описові / корисні.
SpoonMeiser

57
Незважаючи на те, що це останнє, я думаю, що MMORPG потрібно йти далі вниз. Дивовижний список. +1
は る と

6
Чудовий список, хоча я думаю, що весь аспект сходів руйнується після Пакмана. У той момент ви знаєте достатньо, щоб піти і робити будь-яку гру; Я не думаю, що вам потрібно розвивати Diablo, перш ніж розвивати Вольфенштейна. Все до тих пір, поки Pacman вам не доведеться робити.
поштовх

5
"Стійкий світ" рееери недооцінює відмінності між MMORPG попередніми варіантами.
Малабарба

1
Ви також можете поводитися з "Постійним світом" і в не-MMORPG (наприклад, шахрайський).
ashes999

64

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

Висновок: програмуйте гру, де дизайн, мистецтво та звук вже зроблені. Робіть клони, а не оригінальні ігри.

На своїх заняттях я завжди рекомендую розпочати ці ігри для того, щоб:

1) Тетріс. Мистецтво являє собою кольорові прямокутники, які навіть цілий безлад може малювати у Microsoft Paint. Вам не потрібен звук. Програмування відносно просте, але все ж вимагає декількох ключових речей: розуміння різниці між внутрішнім станом гри та тим, що намальовано на екрані; вміння малювати на екрані, період (ймовірно, з участю спрайтів і блиску); можливість приймати дані користувача в режимі реального часу, а не просто використовувати getch () або scanf (), де вам доведеться їх чекати.

2) прорив / арканоїд. Мистецтво все ще є кольоровими прямокутниками, і вам все одно не потрібен звук. Використовує всі основні поняття Tetris, а також деякі основні системи виявлення зіткнень та 2D фізику, оскільки м'яч повинен плавно рухатись і відскакувати.

3) Градіус / R-Тип. Ви можете, ймовірно, знайти кілька безкоштовних наборів плиток для цього. Тут фон прокручується, тому вам доведеться дізнатися трохи більше про те, як працює графічна пам’ять, використовуючи такі методи, як гортання сторінок та подвійне буферизація та малювання речей поза межами видимого екрана. Ви також схильні мати динамічні нерести для ворога та кулі, тому вам потрібно буде навчитися прибирати за собою (тобто позбавлятися від ворогів і куль, які залишають екран, щоб ваша гра не просочилася пам’яттю, як сито).

4) Super Mario Bros. Подібно до попереднього проекту прокрутки, за винятком того, що прокрутка зараз знаходиться під контролем гравця, а не автоматична. Ви також маєте справу з гравітацією та всіма веселими зіткненнями, що йдуть разом із цим (як, наприклад, не провалитися через підлогу лише тому, що ви були на кілька пікселів вище в останньому кадрі і хочете перейти на кілька пікселів нижче в наступному кадрі ). Також зауважте, що гравітація умовна: вона впливає на гравця та деяких ворогів, але, як правило, не на платформи чи плаваючі монети чи інше, що трохи відрізняється від реального світу.

Якщо ви можете виконати всі чотири з них, ви повинні мати можливість робити майже будь-яку 2D гру, яку ви хочете; всі інструменти є. Якщо ви хочете зробити 3D-гру ... спочатку вивчіть 2D, оскільки це набагато простіше, і вам не потрібно розуміти математику як глибоку, і все одно вам потрібно зрозуміти 2D речі ... а потім, коли ви Задовольнивши це, почніть працювати з деякими основними інструментами 3D (або бібліотеками, такими як Torque або Unity, або з іграми з відкритим кодом, як оригінальні Doom і Quake).

Удачі!


39

Тепер це справді гарне питання. Я не знаю, де ти, тому я буду розмахувати на небо, і припускаю, що ти ніколи не писав рядки коду в своєму житті. Відріжте все, що частина носа ображає вас, щоб зловживати фразою.

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

Ви знаєте, як люди говорять про те, що ви повинні вивчити різноманітні мови програмування, щоб їсти їхні думки та їхні серця та їхні печінки, і тим самим здобувати свою могутню силу? У цьому є справжня правда - після першої чистої чи майже чистої мови програмування, навіть на загальнообов’язкових мовах, ви закінчите писати в основному безкоштовні функції з побічними ефектами, оскільки вони настільки краще визначені, і все, що ви пишете навіть мови, не такої форми, будуть для цього кращими. Не особливо важливо, на якій мові мова йде - шаблони haskell, ml / ocaml / smlnj, formulaONE, c ++, будь-який інший - ви все одно будете вчитися виконувати багато класів роботи, не покладаючись на стан сторонніх ефектів. Перший раз, коли ви вивчаєте міцну, майже машинну мову програмування, дізнаємось про абстракцію типу розміру. Перший раз, коли ви засвоїте декларативну чи обмежувальну мову, ви збираєтесь дізнатися про обмеження як дискреційний інструмент. Перший раз, коли ви навчитесь мові пошуку зворотних трендів, ви навчитеся молитися Іа! Іа! C'thulhu F'tagn Nagn !, і тоді ми знову їмо серця та печінки, і коло життя виконане.

Ігровий дизайн нічим не відрізняється. Вам не обов’язково потрібно вивчати будь-яку конкретну гру, паралельно певній мові, а навчитися певній емблематичній репрезентативній грі, яка керує таким мисленням, як, наприклад, сімейства, характерні для мови. Крім того, є багато їжі печінки та серця. Отримайте сухар з перцю.

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

Отже, дивись.

Спочатку хочеться порізати зуби. Вони також корисні, коли ви навчаєтесь орієнтуватися на нову платформу або коли ви одужуєте після амнезії. Вони покликані бути швидкими, а не приголомшливими.

В порядку:

  1. Екранне управління. Bluescreening чудово підходить для цього, адже тоді у вас є вагомі підстави вважати, що ви на шляху до Microsoft.
  2. Перевірка вводу Fooscreen, де foo - синій колір вгору, червоний - вниз тощо. Перевірте всі ваші клавіші; кольорів більше ніж достатньо, або ви можете скласти чотириколірну карту, якщо вам абсолютно потрібно зберегти малину для більш важливих речей.
  3. Відображення тексту та спрайтів. Оскільки у вас також є перевірка вводу, гра з пам'яттю плитки - це не погана ідея.
  4. Таймери. Час для клона Маріо або Арканоїда.
  5. Звук і музика. Поліпшення клону маріо. Не так багато, хоча.

Після того, як ви їх знищили, ви готові орієнтуватися на платформу, і навчання може початися.

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

  • Анімація. Практично все, що ви можете зробити, може закликати до анімованих спрайтів. Отримайте незалежний двигун анімації під поясом, навіть якщо це мистецтво програміста. Створення простої гри-головоломки, плитки якої пульсують досить.
  • Комплексне оцінювання. Взяти всіх п’ять ворогів у крило? Бонус. Посадити три удари підряд? Бонус. Зробити це через увесь рівень, не пропустивши кулі? Величезний бонус.
  • Шлях Для цього потрібно багато ігор, але гра в оборону вежі - це найпростіша. Ви можете розпочати роботу з першої ширини і глибини, якщо ви ніколи цього не робили, але ви не зробите, доки хоч один раз не реалізуєте A * з нуля (НЕ КОПІРОВАНИЙ КОД).
  • Ворожа поведінка. Тупі автоматизовані поведінки будуть охоплені вашим маріо, але важлива також реактивна поведінка. Це хороший привід побудувати тактичну гру або шахрайство. (Попередження: ви будете працювати над шахрайством все життя.)
  • Динамічне 2d освітлення. Це також вагомий привід написати розбійника. Дуговий мовлення на основі дуги є важливим способом перегляду смуг і розділення, що, в свою чергу, важливо для цілого ряду структур даних.
  • 2d фізика. Це виявляється в цілій безлічі ігор, на багато рівнів деталізації. Спробуйте платформер (mario-ish,), який може бути надто спрощений; гра в танки (випалена земля-іш), яку можна однаково спростити; і, врешті-решт, така гра, як N the Ninja, яка змушує вас впоратися з бігом на кути, імпульс та інше (ви можете це зробити із системою зіткнення обмежувальної коробки з осями досить прямо). Фізика та зіткнення досить тісно пов'язані.
  • Виявлення зіткнення. Є смішно прості випадки, такі як сітка Арканоїди та Маріо клони, помірно складні випадки, такі як N Ninja, і справді складні випадки, такі як ігри з фізикою пісочниці (неймовірний автомат, сучасні арканоїди, такі як BreakQuest, і так далі.) У багатьох випадках можна потрапити за допомогою щось на кшталт AABB , але якщо ви схильні до математики, може бути корисним реалізувати щось повне. Як мінімум, ознайомтеся з повною бібліотекою, наприклад, APE або Box2D.
  • Взаємовідносини ризик / винагорода в задоволенні від гри. Прості ігри на кубики (виконайте копати щось, що називається "Skunk" з 50-х років) та ризиковані настільні ігри (життя, цукеркова земля) - чудові приклади простих швидких способів дізнатися це, роблячи це.
  • Виразна варіація механіки. Зверніть себе на деякі невеликі правила, а потім навчитеся отримувати з них велику кількість варіацій. Карткові ігри на карткові картки - чудовий спосіб роботи з цим; погляньте на колоди Дворжака та ігри в реальному світі, такі як Мілле Борнес, Раже та Уно, а потім зробіть кілька своїх. Вони не можуть бути схожими.
  • Створений контент. Прості стратегічні ігри на основі карт, негідники та деякі види головоломки - чудові способи навчитися це робити. Бонусні бали, якщо це якась гра, яка, як правило, не відома тим, що створює вміст.
  • Стиль. Не закручуйтеся: це велика справа. Створіть гру, а потім обведіть її чотирма абсолютно різними іграми. Дійсно різні. Одна дитяча гра, навіть. (Подумайте над цим: Mega Man має ідеальний сенс як пригода чаклуна в пекло, або як розбійник із Людей X, або ...) Тепер, зберіть чотири групи людей, щоб забити по одній з ваших ігор. Після цього запропонуйте їм забити наступну гру, проти годинникової стрілки, навколо рингу тощо. Зауважте, наскільки докорінно їх бал змінюється залежно від теми та попереднього очікування.
  • Складання послідовностей плану гравця. Ігри-головоломки - це свого роду найчистіший спосіб зробити це.
  • Управління ресурсами
  • Модернізації
  • Час тиску в часі

... е-е. Я знудився.


11
Відмінна відповідь. Дійсно розчаровує кінець. Було б дивовижно, якби ви могли переглянути це і якось зв'язати разом, щоб отримати цілісне закінчення.
Ricket

1
Для фіналу, як щодо деяких інструкцій з приготування печінки ? giantitp.com/comics/oots0738.html
Cyclops

4
Це життєвий урок, фантастично замаскований під публікацію про програмування ігор.
sdasdadas

30

Тетріс

Дуже поширена гра, багато клонів з відкритим кодом, щоб зірватися, якщо ви застрягли. Викладає основи двовимірної графіки, обробки даних, введення балів тощо.

Потім візьміть цю оригінальну ідею і покладіть її на прядок. Я засвоїв основи 3D-графіки / opengl, написавши 3D-версію Tetris для мого класу комп’ютерної графіки в коледжі.


2
Або "Стовпці", якщо ти хлопець "Сеги";)
Ендрю Рассел

Cue Tetris тема музики ...
Нік Бедфорд

3
qntm.org/hatetris (гаразд, йому не вистачає музики теми, але я просто хотів пов’язати її ...)
користувач384918

1
@bloots вау, це зло
Брайан Денні


25

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

Список такий (деякі з них наведені в інших відповідях):

  1. Тетріс
  2. Прорив
  3. Бічний скроллер / платформер

Ви пропустили Pac-Man, Galaga та Gauntlet зі статті, яку ви пов’язали
Адам Харте

15

Мені подобається починати всіх своїх хлопців з Монополії. Зазвичай я використовую монографію «кодового коду» Бретта Шухерта як основу вправи, але я багато додаю до цього. Є кілька причин, чому мені дуже подобається це робити.

  1. Я глибоко дбаю про хороші методи кодування (дизайнерські зразки, TDD, SOLID, безперервна інтеграція тощо), і можу створювати багато обмежень для моїх розробників, коли вони роблять цю вправу.

  2. Вже майже всі знають правила Монополії, і всю гру можна завершити за один день. Це дає новим розробникам швидку перемогу і дійсно активізує свою діяльність.

  3. Початкові вимоги починаються з клавіатурних елементів керування, але потім я додаю вимогу до управління мишею пізніше. Це змушує розробників замислюватися над кількома речами, як перефактурувати існуючий код, програмувати зміни частини системи на інтерфейси замість конкретних класів, кращі / правильні абстракції, що до тестового модуля, що не до одиничного тесту, ЧОМИ до одиничного тесту, ЧОМИ до одиничного тесту та чого робить для тестів GOOD Unit.

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

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


6
Як ви реалізуєте монополію за один день? Це здається набагато більшим проектом від цього.
Майкл Кристофік

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

# 3 також надасть досвід реального досвіду клієнтам, які змінюють вимоги до вас після того, як ви вже почали роботу.
Джаретт Міллард

На жаль, посилання на Монополію мертва :(
Кейсі

У машині зворотного зворотного руху все ще є. web.archive.org/web/20090919075257/http://…
hokiecsgrad

15

Виберіть-Ваш-Пригода

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

You are standing in a forest clearing in the middle of the night. You hear
some wolves howl in the distance. Should you:
a) make camp for the night
b) go further north
> _

Створення такої гри повинно навчити вас робити геймплей, основний вклад консолі та базовий сценарій. Це дуже просто втілити в життя і легко починати новачкові, оскільки для написання гри вам не потрібен графічний движок . Просунуті новачки, мабуть, написали б сценарій двигуна.


7
+1, але ТІЛЬКИ, якщо ви просто вивчаєте програмування. Якщо ви вже знаєте програмування, я б не починав з цього.
Джефф

1
@Jeff: Так, якщо ви початківець початковий, тоді це хороший проект, з якого слід почати. Якщо ви програмували деякий час, то перейдіть до інших згаданих проектів, щоб ви могли пограти з графікою та іншим.
Spoike

8
Насправді, це дійсно хороший спосіб дізнатися про розробку сценаріїв та розвиток даних. Створіть для цього «двигун» і решту запишіть у сценарії.
Нік Бедфорд

1
@Jeff nah, якщо вони досвідчені програмісти, то вони закінчать це через 2 години. Тож додайте їм кілька предметів, двері, бої
бобобо

13

З мого досвіду з початківцями програмістами, здається, що прогресія йде приблизно так:

  1. Понг
  2. Тетріс
  3. Величезні дивовижні 50 годин ігрового 3D RPG (зверніть увагу: більшість людей відмовляються від програмування частково через цей крок)

4. Фантастика MMORPG: P
Нік Бедфорд

12

Прорив, понг або астероїди.

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


4
+1 для згадування деталей займає більше часу, ніж ви очікували.
квітня 10.10

11

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

Понг - хороший приклад.

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

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

Після того, як ви зробите додаток №1 до кінця, доки не будете готові роздавати / продавати іншим, ТОГО займіться чимось складнішим (Тетріс, пригода чи все, що завгодно), але, щоб розпочати вивчення нової технології, зробіть річ, яку ви програмуєте мозком мертвим просто.

Інші приклади:

  • Відгадайте кількість (від 1 до 1000)
  • Натхненник (просунуте число вгадайте.)
  • SimplePaint
  • Змія / черв'як / як-небудь, як ви називаєте.

Але, знову ж таки, почніть з того, що дуже легко, щоб ви могли дійсно щось завершити і озирнутися назад і побачити, що це стосується. Різниця між написанням програми ONE на мові / платформі / SDK / двигуні та написанням програм ZERO - ВЕЛИЧЕЗНА . Різниця між 1 і 2, або 2 і 5, набагато менша, тому ви можете робити більші кроки, але зробіть крок від 0 до 1 бути маленьким; це буде більше, ніж ти думаєш!


2
+1 для "Почніть з чогось, що здається занадто непосильним для вирішення" та для "Різниця між тим, як написати ОДИН додаток ... та написати програму ZERO - ВЕЛИЧЕЗНА"
Luc125,

1
Оновлення 2014 року: ще одним добрим додатком "вивчити мову / технології" є Flappy Bird-подобно. Як професійний програміст, це робота в другій половині дня (ну, вихідні, щоб зробити це "приємно"), але, навчаючи іншого програмуванню, ми дізналися, що насправді є багато невеликих ускладнень. Знову ж таки, один досвід набагато більший, ніж нульовий, і, як тільки ви його отримаєте, у вас буде набагато краще уявлення про те, як рухатися вперед.
Олі

9

Ознайомтесь із цим веб-сайтом: 12 ідей проекту з комп'ютерних ігор

Деякі з цих ігор включають те, що сказали інші:

  1. Pacman
  2. Тетріс
  3. Понг

Але це також говорить про деякі інші ігри, які ви можете спробувати зробити, такі як:

  1. Хрестики-нулики
  2. Хто хоче бути мільйонером?
  3. І клон Маріо.

Крім того, він дає відчуття того, що слід спробувати зробити спочатку, оскільки це відчуває труднощі для кожної гри (і, отже, план того, як слід вирішувати ігри):

  1. Новачок
  2. Проміжний
  3. Розширений
  4. Найкраще

2
+1, полюбити це посилання. "RPG - якщо ви ненавидите своє життя (а деякі, мабуть, і роблять), ця, очевидно, фінальна спроба слави програмування відеоігор, ймовірно, закінчиться погано. Сам ігровий движок часто досить розповсюджений (подорожі по світу, подорожі містом, магазини, бійки тощо) і вимагає нечестивих зусиль ",
Циклоп

5

Багато людей починають з Breakout, оскільки в ньому є:

  • Введення: переміщення весла вперед-назад
  • Просте зіткнення: куля відскакує від весла, цегли та стіни
  • Зміна стану гри: "Оновлення балу, коли м'яч потрапляє в цеглу та виймання цегли, зменшення кількості кульок, коли м'яч потрапляє в нижню частину екрана, втрачає гру, коли кількість кульок == 0 тощо.
  • Це також досить ніжне вступ до графіки, оскільки це все прямокутник і кола

5

Найскладніша частина написання гри - або будь-якого програмного забезпечення - це з'ясування того, що робити. Вам абсолютно потрібна специфікація! Це найцікавіша частина створення клону з існуючої гри: специфікація вже існує. Ваша специфікація - "Продукт повинен робити все, що робить Інший продукт", а якщо у вас є копія іншої гри під рукою, то це досить легко перевірити.

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

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

З іншого боку, якщо ви почнете з чогось переважного, ви ніколи цього не закінчите. Тому почніть з чогось помірно складного, що змусить вас вирішити серйозні проблеми. Побудова 2D RPG-стилю RPG або бічний прокрутки платформи - дуже хороші способи дізнатися реальні концепції програмування ігор.


5

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

Коли я почав свою першу гру, у мене був нульовий досвід розробки ігор, але я займався розробкою додатків для підприємств / бізнес-секторів протягом декількох років. Мій перший ігровий проект був покроковою стратегічною грою, і, архітектурно кажучи, він виглядав не так вже й відмінно від корпоративного додатку. Він використовував систему клієнт / сервер, а спілкування відбувалося через дуплексний канал обслуговування WCF. Більшість операцій гравців були встановлені в чергу як "замовлення" та відправлені на сервер наприкінці черги. Вся обробка поворотів проходила на сервері, після чого оновлення всесвіту гри надсилалися кожному клієнту.

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


4

Гниди і космічні загарбники

Порівняно простий AI, графіка, геймплей, керування, і їм не потрібно мати звукових ефектів чи музики, якщо ви не хочете цього додати. Я почав з цих двох, коли вивчав, як програмувати в QBasic для MS-DOS, і я думаю, що вони чудові перші ігри. Pac-Man був би моїм іншим вибором.


Я ніколи раніше не чув про "Нібблз", але певного голосування щодо космічних загарбників.
поштовх

3

Ігри в стилі Moonlander чудові (де у вас є ракетний корабель, на який впливає гравітація, гравці контролюють напрямок і тягу, обмежене паливо при використанні тяги). Набути досвід впровадження дуже простої фізики та системи зіткнень може бути досить примітивно. Ні AI турбуватися, і головне його весело і захоплююче :)


2
Домовились, ігри стилю Thrust / Lunar Lander - це великі ранні проекти. Справа з обертанням, швидкістю / прискоренням розкриє таємниці синуса / косинусу (для тих, хто деяким часом не займається ними). Ви можете використовувати статичну або прокручувальну карту плитки, а також можете виявити зіткнення, не потребуючи багато складних відповідей зіткнення (торкніться чогось -> вибухнути). Це також хороший варіант для роздумів про налаштування системи управління - отримання хорошого балансу тяги, сили тяжіння та швидкості обертання, щоб відчути себе правильно
bluescrn

@bluscrn насправді це чудовий коментар. Після того, як люди зіграли тестувати мою флеш-версію, я помітив, що люди мали різні думки щодо того, як це має відчувати. Деякі з них були віднесені до попередніх ігор, випробуваних користувачем. Про це я не особливо думав, перш ніж розвивати його.
Аллан

2

Космічний шутер зверху вниз, як Галага, досить легкий і досить добре вчить виявлення зіткнень! Він також може відрізнятися по складності, від рівня зі стаціонарними ворогами, до кількох рівнів, які оновлюють зброю та ворогів, які рухаються за спеціальними зразками.


1

Щось на кшталт Gauntlet, тому що вам потрібна система сутності, AI противника, пікапи, карти з плитками, виявлення зіткнень, оскарження тощо. Це все отримано, але не таким, що є надзвичайним.


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

Домовились, трохи непосильне для людей, що тільки починають. Занадто багато понять одночасно. Почніть з того, що просто підбиває і вводить. Потім зробіть гру, яка робить 1 або 2 нові речі, наприклад виявлення зіткнення та ворогів. Продовжуйте вибирати ігри, які базуються на поняттях, які ви знаєте, але введіть щось, чого ви не знаєте; якщо ви нічого не знаєте, не слід намагатися. Не ускладнювати.
користувач384918

Я чесно вважаю, що в клоні «Гонтлет» відбувається занадто багато, щоб вважати гру «початкового рівня».
PhillC

Я чесно думаю, що простіше кодувати Гонтлета, ніж Тетріс, оскільки розробка того, як блоки складаються один на одного, чи повнота лінії та як видалити лінії, є досить складними абстрактними проблемами. Gauntlet може бути закодований менш ніж в 1000 рядків на будь-якій сучасній 2D платформі, і якщо вона не може бути на платформі, яку ви використовуєте, я б запропонував знайти іншу. У всякому разі, я запропонував це саме тому, що для цього потрібно вивчити всі частини, які складають сучасну гру.
Iain

Ви отримуєте додаткові бали за правильне виконання голосу: "Ельф вистрілив їжу!" "Майстер ось-ось помре!" або мій улюблений: "Ви знайшли мою корінну впевнену корінь!"
rtperson

1

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


1

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

Я почав з основної гри, а потім перейшов до додавання в неї більше матеріалів, бонусів тощо.


1

Я завжди починав із гри Tanks / Gorillas / Worms. Це дає змогу вправлятись у простому графічному відображенні та читанні вводу користувача, а також ігровий цикл, що застосовує тяжіння до снаряда та тестує на виявлення зіткнень.

Після цього вийде така гра, як дуже простий платформер або зйомка, де вам потрібно читати введення користувача в режимі реального часу, а не INPUT заяви, які працюють для Gorillas :)


1

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

Для ігрових моделей в режимі реального часу я завжди рекомендую Pong як хороший простий вихідний пункт, знову ж таки тому, що дизайн простий, як і інтерфейс контролера, так що ви можете потрапити на м'ясо системи - фізичне моделювання.


1

Я завжди стверджував, що якщо ви ігровий програміст, ви повинні мати можливість створити певну форму Space Invaders . Чорт, гра досить проста, що ви також можете робити графіку і самі.

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


1

Це дійсно залежить від того, які навички звичайного програміста у вас вже є. Вашій математиці потрібна робота? Ваші знання з графіки? У вас обоє під обгортанням?

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

Після цього небо є межею. Знову ж таки, націліться високо. Спробуйте платформер з похилою місцевістю, parralax, і ви отримали хороший мішок з 2d технікою. Додайте пінбол (готуйтеся до розчарування) і ваша математика покращиться.

Звідти перейдіть до третього виміру, вивчіть основні навички (анімація, візуалізація), і ви повинні бути досить добре оснащені, щоб боротися з різноманітними іграми.


0

Я б сказав, що гра типу Tower Defense є найкращим місцем для початку. Ви також можете почати з модифікації вже існуючих ігор / двигунів (WarCraft III / HalfLife2 SDK / тощо), щоб зрозуміти загальну необхідну логіку, а потім перейти до використання власної бази коду.


0

Моя перша гра була чимось на кшталт Super Mario.

Рухайтеся, уникайте перешкод, стрибайте. І всі ці завдання можна легко виконати без будь-якого розрахунку фізики.

Ідеальний варіант - взяти просту двовимірну річ, оскільки ви не будете багато покладатися на конкретну реалізацію / рамку / двигун.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.