Чем хороши игры, чтобы «заработать свои крылья»? [закрыто]

305

Я считаю, что для того, чтобы стать хорошим разработчиком игр, нужно создавать игры.

С точки зрения программиста , какие хорошие игры начального уровня могут испачкать руки? Каким навыкам и задачам учат в каждой из этих игр?

Дрю
источник

Ответы:

217

Прорыв

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

Пасьянс

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

Pac-Man

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

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

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

Деннис Манси
источник
49
+1 на прорыве. У меня было много разработчиков PRO-игр, которые говорили мне, что всякий раз, когда они получают новую технологию, они изучают ее, сначала делая Breakout.
Джефф
2
+1 Breakout была первой игрой, которую я сделал =). Кроме того, я согласен на попытку воссоздать ранние видеоигры (с вашими собственными поворотами!). Фокус на концепции, а не активы.
user384918
16
@PhillC, нет, разделять не стоит
Simurr
13
Вы забыли о тетрисе: это была вторая игра, которую я реализовал в высшей школе :)
Эмилиано
2
не могли бы вы все дать ссылки на ваши обсуждения? я любил эту игру и хотел бы попробовать все римейки
Fent
256

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

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

Лучшая игра, чтобы "заработать свои крылья"? Тот, который вы завершили. Меня не волнует, сколько наполовину готовых демоверсий PONG / Breakout / Galaga / Tetris вы написали, вы не разработчик игры, пока не выпустите реально законченную игру.

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

Боб Монтгомери
источник
3
Я хочу тройной голосовать за этот ответ!
Иан
2
+1 за комментарий о фактическом выпуске игры. Запуск и запуск игры - это только около 30% процесса, IMO. Постоянные итерации по механике, полировка всего, чтобы выглядеть презентабельно, поиск тех неприятных ошибок, которые возникают только в очень специфических сценариях, и возможность сосредоточиться только на том, что нужно сделать, - это остальные 70%.
Деннис Манси
1
+1 за то, что я хочу сказать. Моей первой игрой была palmgadget.com/palmgo.html Это можно сделать, потому что я люблю игру Go и действительно использую ее для записи своих игр в клубе. "Почесать свой собственный зуд" в первую очередь.
Ох,
16
Мне нравится этот совет, но он может быть опасным. В конце концов, именно из-за этого менталитета так много людей посещают форумы разработчиков игр и говорят: «Я никогда не делал игры раньше, я собираюсь начать MMORPG». Я бы сказал, что вы должны начать с игры, которая вам нравится, с ограниченного выбора хороших стартовых проектов. Так что, если вы действительно ненавидите тетриса, тогда не делайте этого. Но вместо этого используйте Breakout, а не любую случайную игру, которая вам нравится.
Джокинг
185

Я разместил эту лестницу на TIGsource некоторое время назад. Начинается от самого основного до очень сложного.

  • «Угадай число» / Hangman (базовый интерфейс, выбор данных из базы данных)
  • Tic-Tac-Toe / Rock-Paper-Scissors (пошаговый геймплей, искусственный интеллект противника)
  • Арканоид / Понг (столкновения, стабильная частота кадров, оценка, уровни)
  • Тетрис (структуры данных и как они связаны с играми)
  • 1942 / Shoot-em-up (враги, пули)
  • простая игра платформер / пинбол, если ваш двигатель делает платформеры (гравитационные столкновения)
  • Bomberman / Pacman (основанное на тайлах движение, сложный вражеский ИИ)
  • Игра для двух игроков любого из указанных выше типов (два входа для игроков)
  • Roguelike / Diablo (управление инвентарем, несколько вражеских ИИ, сохранение и загрузка сложных игровых состояний)
  • Faceball / Wolfenstein 3D (базовое 3D движение и рендеринг)
  • Сетевая пошаговая игра (базовая сеть)
  • Gimmicky 3D платформер от третьего лица (физика, сложное 3d движение)
  • Сетевая игра в реальном времени (синхронизация клиент-сервер, отставание)
  • MMORPG (Постоянный мир)
Заратустра
источник
7
Вы могли бы лучше объяснить, что вы должны изучать здесь. Ваши краткие заметки не очень описательны / полезны.
SpoonMeiser
57
Несмотря на то, что это последний, я думаю, MMORPG нужно идти дальше вниз. Потрясающий список. +1
と る と
6
Отличный список, хотя я думаю, что после Pacman весь лестничный аспект рушится. В этот момент вы знаете достаточно, чтобы пойти и сыграть в любую игру; Я не думаю, что вам нужно разрабатывать Diablo, прежде чем разрабатывать Wolfenstein. Все до Pacman вы должны сделать по порядку.
Джокинг
5
«Стойкий мир» недооценивает различия между MMORPG и предыдущими вариантами.
Малабарба
1
Вы также можете обрабатывать «Постоянный мир» в не MMORPG (например, в стиле roguelike).
ashes999
64

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

Следствие: запрограммируйте игру, в которой дизайн, искусство и звук уже сделаны. Делайте клоны, а не оригинальные игры.

На своих занятиях я всегда рекомендую запускать эти игры по порядку:

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

2) Прорыв / Арканоид. Искусство по-прежнему цветные прямоугольники, и вам все еще не нужен звук. Используются все основные понятия тетриса, а также некоторые базовые средства обнаружения столкновений и 2D физики, поскольку мяч должен плавно двигаться и отскакивать.

3) Gradius / R-Type. Вы можете найти некоторые бесплатные наборы плиток, чтобы сделать это. Здесь фон прокручивается, поэтому вам нужно больше узнать о том, как работает графическая память, используя такие методы, как перелистывание страниц и двойная буферизация, а также рисование вне границ видимого экрана. У вас также есть склонность к динамическому появлению врага и пули, поэтому вам нужно научиться убирать за собой (то есть избавляться от врагов и пуль, которые покидают экран, чтобы ваша игра не теряла память как сито).

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

Если вы можете сделать все четыре из них, вы сможете сделать практически любую 2D-игру, какую захотите; все инструменты есть. Если вы хотите создать 3D-игру ... сначала изучите 2D, потому что это намного проще, и вам не нужно углубленно понимать математику, и вам все равно нужно разбираться в 2D-вещах ... а потом, когда вы начните работать с некоторыми базовыми инструментами 3D (библиотеками, такими как Torque или Unity, или играми с открытым исходным кодом, такими как Doom и Quake).

Удачи!

Ян Шрайбер
источник
39

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

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

Вы знаете, как люди говорят о том, что вы должны изучать различные языки программирования, чтобы съесть их образ мыслей, их сердца и печень, и таким образом обрести их могущественную силу? В этом есть реальная правда - после вашего первого чистого или почти чистого языка программирования, даже на императивных языках, вы в конечном итоге будете писать функции, в основном свободные от побочных эффектов, потому что они намного лучше определены, и все, что вы пишете даже на языках не той формы будет лучше для него. Не имеет особого значения, какой это язык - шаблоны haskell, ml / ocaml / smlnj, Formone, c ++ и т. Д. - вы все равно будете учиться тому, как выполнять много классов работы, не полагаясь на состояние побочного эффекта. В первый раз, когда вы выучите прочный, машинный язык программирования, вы собираемся узнать об абстракции типа размера. В первый раз, когда вы изучите декларативный или ограничивающий язык, вы узнаете об ограничении как о дискреционном инструменте. В первый раз, когда вы изучите поисковый язык, вы научитесь молиться, я! Ia! C'thulhu F'tagn Nagn !, а затем мы снова едим сердца и печень, и круг жизни завершается.

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

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

Итак, смотри.

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

Для того, чтобы:

  1. Управление экраном. Bluescreening отлично подходит для этого, потому что тогда у вас есть веские основания полагать, что вы на пути к тому, чтобы стать Microsoft.
  2. Подтверждение ввода. Экран Foo, где foo - синий для повышения, красный для уменьшения и т. Д. Проверьте все ваши ключи; Есть более чем достаточно цветов, или вы можете четырехцветную карту, если вам абсолютно необходимо сохранить темно-красный для более важных вещей.
  3. Рендеринг текста и спрайтов. Поскольку у вас также есть проверка ввода, игра с памятью плиток - неплохая идея.
  4. Таймеры. Время для клона Марио или Арканоида.
  5. Звук и музыка. Улучшить Марио клон. Не так много, хотя.

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

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

  • Анимация. Почти все, что вы делаете, может вызывать анимированные спрайты. Получите независимый анимационный движок, даже если это искусство программиста. Создание простой игры-головоломки, чьи плитки пульса достаточно.
  • Комплексное озвучивание. Получить всех пяти врагов в крыле? Бонус. Заставить три удара подряд? Бонус. Сделать это через весь уровень, не пропустив пулю? Огромный бонус.
  • Найти путь. Это нужно многим играм, но игра Tower Defense - самая простая. Вы можете приступить к работе в ширину и глубину, если вы никогда не делали этого раньше, но вы не закончили, пока не внедрили A * с нуля (NOT COPIED CODE) хотя бы один раз.
  • Вражеское поведение. Глупое автоматическое поведение будет охвачено вашим марио, но важно и реактивное поведение. Это хороший повод для создания тактической игры или игры в жанре roguelike. (Предупреждение: вы будете работать на roguelike до конца своей жизни.)
  • Динамическое 2d освещение. Это также хорошая причина, чтобы написать roguelike. Основанное на дуге теневое вещание - это важный способ взглянуть на полосатость и разделение, что, в свою очередь, важно для целого ряда структур данных.
  • 2d Физика. Это проявляется во многих играх, с множеством уровней детализации. Попробуйте платформер (mario-ish,), который можно упростить; танковая игра (выжженная земля), которая может быть одинаково упрощена; и, в конце концов, такая игра, как N the Ninja, которая заставляет вас справляться с бегом по углам, импульсу и так далее (вы можете сделать это с помощью системы столкновений ограничивающего прямоугольника, ориентированного по оси, довольно просто.) Физика и столкновения довольно тесно связаны.
  • Обнаружение столкновения. Существуют смехотворно простые случаи, такие как сетка арканоидов и клонов Марио, умеренно сложные случаи, такие как ниндзя, и действительно сложные случаи, такие как физические игры с песочницей (невероятная машина, современные арканоиды, такие как BreakQuest, и так далее). Во многих случаях вы можете обойтись с что-то вроде AABB , но если вы склонны к математике, может быть полезно реализовать что-то законченное. Как минимум, познакомьтесь с полной библиотекой, такой как APE или Box2D.
  • Риск / вознаграждение отношения в игровой процесс удовлетворенности. Простые игры в кости (покопайтесь в чем-то, называемом «Скунс» 50-х годов) и настольные игры «Рискованный путь» (жизнь, конфеты) - отличные примеры простых быстрых способов научиться этому на практике.
  • Выразительные вариации в механике. Прибейте себя к небольшому количеству правил, затем научитесь извлекать из них множество вариаций. Пользовательские колоды карточных игр - отличный способ работать с этим; взгляните на колоды Дворжака и на реальные игры, такие как Mille Bornes, Rage и Uno, а затем создайте несколько своих собственных. Они не могут быть похожими.
  • Сгенерированный контент. Простые стратегические игры на основе карт, роги и некоторые виды головоломок - отличный способ научиться делать это. Бонусные баллы, если это игра, не известная как создатель контента.
  • Стиль. Не облажайся: это большое дело. Создайте игру, а затем сделайте скин для четырех совершенно разных игр. Действительно разные. Даже детская игра. (Подумайте об этом: Mega Man имеет смысл как приключение колдуна в аду, или как Разбойника из Людей Икс, или ...) Теперь соберите четыре группы людей, чтобы выиграть по одной в каждой из ваших игр. После этого попросите их выиграть следующую игру против часовой стрелки, на ринге и так далее. Обратите внимание, насколько радикально меняется их оценка в зависимости от темы и ожиданий.
  • Составление плана игрока. Логические игры являются одним из самых чистых способов сделать это.
  • Управление ресурсами
  • Обновления
  • Сжимая давление времени

... эх. Мне стало скучно.

Джон Хаугеланд
источник
11
Отличный ответ. Действительно разочаровывающий конец там. Было бы замечательно, если бы вы могли вернуться к этому и как-то связать его, чтобы придать этому последовательный конец.
Рикет
1
Для финала, как насчет инструкции по приготовлению печени ? iantit.com/comics/oots0738.html
Циклоп
4
Это урок жизни, фантастически замаскированный под пост о программировании игр.
sdasdadas
30

Tetris

Очень распространенная игра, множество клонов с открытым исходным кодом, которые можно разорвать, если вы застряли. Преподает основы 2D-графики, обработки ввода, оценки и т. Д.

Затем возьмите эту оригинальную идею и раскрутите ее. Я изучил основы 3D-графики / opengl, написав 3D-версию Tetris для своего класса компьютерной графики в колледже.

Брайан Денни
источник
2
Или «Колонны», если вы парень Sega;)
Эндрю Рассел
Кью тетрис тема музыки ...
Ник Бедфорд
3
qntm.org/hatetris (хорошо, в нем отсутствует музыка темы, но я просто хотел связать ее ...)
user384918
1
@bloots вау, это зло
Брайан Денни
Woot! вот мой сайт .
Стивен Лу
25

В GameDev.net есть хорошая статья, в которой рекомендуется продвигать игры, чтобы постепенно узнавать о разработке игр. Мой любимый совет из списка - на самом деле полировать эти игры. Полностью закончить, до высвобождаемого состояния.

Список выглядит следующим образом (некоторые из них приведены в других ответах):

  1. Tetris
  2. Прорыв
  3. Боковой скроллер / платформер
Колин Гисласон
источник
Вы пропустили Pac-Man, Galaga и Gauntlet из статьи, которую вы связали
Адам Харт
15

Мне нравится начинать всех моих парней с Монополии. Я обычно использую монопольную «код-ката» Бретта Шухерта в качестве основы упражнения, но я добавляю в нее многое. Есть несколько причин, почему мне действительно нравится это делать.

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

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

  3. Начальные требования начинаются с элементов управления клавиатуры, но затем я добавлю требование для элементов управления мышью. Это заставляет разработчиков задуматься о нескольких вещах: о том, как реорганизовать существующий код, программировать замену частей системы на интерфейсы вместо конкретных классов, более качественные / правильные абстракции, что нужно для модульного тестирования, что не для модульного тестирования, ПОЧЕМУ для модульного тестирования и что делает для хороших юнит-тестов.

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

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

hokiecsgrad
источник
6
Как вы реализуете Монополию за один день? Это похоже на гораздо больший проект, чем этот.
Михаил Кристофик
Если у вас есть готовые ресурсы для разработчиков, и вы следуете руководству, на которое я ссылался выше, это довольно просто. Он не включает в себя несколько стратегий ИИ или некоторые из более сложных аспектов анимации и музыки, но это полностью играбельная игра, и ее легко сделать за день. Это действительно выполнимо, и это действительно очень весело.
Hokiecsgrad
№ 3 также даст реальный опыт клиентов, которые изменяют требования к вам после того, как вы уже начали.
Джарет Миллард
К сожалению, ссылка Монополия мертва :(
Кейси
Машина обратного пути все еще имеет это. web.archive.org/web/20090919075257/http://…
hokiecsgrad
15

Выбрать-Your-приключение

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

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
> _

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

Spoike
источник
7
+1, но ТОЛЬКО если вы только учитесь программированию. Если вы уже знаете программирование, я бы не стал с этого.
Джефф
1
@Jeff: Да, если вы начинающий, то это хороший проект для начала. Если вы запрограммировали какое-то время, перейдите к другим упомянутым проектам, чтобы вы могли поиграть с графикой и еще чем-то.
Спойк
8
На самом деле, это действительно хороший способ узнать о сценариях и разработке на основе данных. Создайте «движок» для этого и запишите остальное в скриптах.
Ник Бедфорд
1
@ Джефф Нет, если они опытные программисты, то они закончат это через 2 часа. Поэтому
пусть
13

По моему опыту работы с начинающими программистами, прогрессирование обычно выглядит примерно так:

  1. Pong
  2. Tetris
  3. Огромные удивительные 50 часов геймплея 3D RPG (примечание: большинство людей на этом этапе бросают программирование)
Davr
источник
4. Фэнтезийная MMORPG: P
Ник Бедфорд
12

Прорыв, Понг или Астероиды.

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

Мэтт Рикс
источник
4
+1 за упоминание подробностей займет больше времени, чем вы ожидаете.
mpen
11

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

Понг хороший пример.

Цель состоит в том, чтобы сделать дизайн игры и правила настолько мертвыми, что вы могли бы сосредоточить все свое внимание на изучении новой вещи, которую вы изучаете (язык, платформа, API), и вам не придется постоянно делайте перерывы, чтобы понять, как работает игра.

Как только вы начнете, вы обнаружите, что понг на самом деле немного сложнее, чем кажется на первый взгляд. (Я учу парня программированию, и он использует понг в качестве учебного проекта. Мы добавили некоторые функции, и теперь он отвлекается от обучения программированию, изучая, как выполнять все эти интересные функции :)

После того, как вы сделали приложение № 1 до тех пор, пока оно не будет готово отдать / продать другим, ТОГДА возьмите что-то немного более сложное (тетрис, приключение или что угодно), но, чтобы начать изучать новую технологию, То, что вы программируете до смерти просто.

Другие примеры:

  • Угадай число (от 1 до 1000)
  • Mastermind (расширенный угадать число.)
  • SimplePaint
  • Змеи / червь / все, что Вы звоните, это.

Но, опять же, начните с чего-то слишком легкого, чтобы вы могли действительно что-то завершить, оглянуться назад и посмотреть, что с этим связано. Разница между написанием ОДНОГО приложения на языке / платформе / SDK / движке и написанием ZERO-приложений огромна . Разница между 1 и 2 или 2 и 5 намного меньше, поэтому вы можете делать большие шаги, но сделайте шаг от 0 до 1 крошечным; это будет больше, чем вы думаете!

Olie
источник
2
+1 за «Начните с чего-то, что кажется слишком маленьким, чтобы иметь дело с этим» и за «Разница между написанием ОДНОГО приложения ... и написанием ZERO-приложений
ОГРОМНА
1
Обновление 2014 года: еще одно хорошее приложение " Flappy BirdИзучение языка / технологии" - аналогично. Как профессиональный программист, это работа во второй половине дня (ну, выходные, чтобы получить ее «хорошо»), но, обучая другого программированию, мы узнали, что на самом деле у нее много маленьких сложностей. Опять же, один опыт гораздо больше, чем ноль, и, когда он у вас есть, у вас будет гораздо лучшее представление о том, как двигаться вперед.
Оли
9

Посетите этот веб-сайт: 12 идей компьютерных игр

Некоторые из этих игр включают то, что говорили другие:

  1. pacman
  2. Tetris
  3. Pong

Но это также говорит о некоторых других играх, которые вы можете попробовать сделать, таких как:

  1. Крестики-нолики
  2. Кто хочет стать миллионером?
  3. И клон Марио.

Кроме того, он дает представление о том, что вы должны попытаться сделать в первую очередь, поскольку он дает ощущение сложности для каждой игры (и, следовательно, план того, как вы должны решать игры):

  1. начинающий
  2. промежуточный
  3. продвинутый
  4. Лучший
thyrgle
источник
2
+1, люблю эту ссылку. «РПГ - если вы ненавидите свою жизнь (а некоторые, по-видимому, так и делают), эта, очевидно, последняя попытка года в славе программирования видеоигр, скорее всего, закончится плохо. и т. д.) и требует безбожного количества усилий "
Циклоп
5

Многие люди начинают с Breakout, потому что он имеет:

  • Вход: перемещение весла вперед и назад
  • Простое столкновение: мяч отскакивает от весла, кирпича и стены
  • Изменение «Game State»: обновление счета, когда мяч попадает в кирпичи, и удаление кирпичей, уменьшение количества шаров, когда мяч попадает в нижнюю часть экрана, проигрыш в игре, когда количество шаров == 0 и т. Д.
  • Это также довольно нежное введение в графику, так как все это прямоугольник и круги
Шон Джеймс
источник
5

Самая сложная часть в написании игры - или любого программного обеспечения - это выяснить, что делать. Вам абсолютно необходима спецификация! Это забавная часть создания клона существующей игры: спецификация уже существует. Ваша спецификация - «Продукт должен делать все, что делает другой продукт», и если у вас есть копия другой игры под рукой, это довольно легко проверить.

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

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

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

Мейсон Уилер
источник
5

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

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

Этот первый проект позволил мне продвинуться в разработке игр и начать знакомство. По мере развития проекта я научился думать больше как разработчик игр, а не как разработчик корпоративных приложений. Конечный результат работал довольно хорошо, и он был немного более впечатляющим, чем Battleship или Tic-Tac-Toe :).

Майк Штробель
источник
4

Клев и Космические Захватчики

Относительно простой ИИ, Графика, Геймплей, Элементы управления, и они не должны иметь звуковые эффекты или музыку, если вы не хотите добавить это. Я начал с этих двух, когда учился программировать в QBasic для MS-DOS, и я думаю, что они отличные первые игры. Pac-Man был бы моим другим выбором.

Стив Транби
источник
Я никогда не слышал о Nibbles раньше, но определенно голосовал за Space Invaders.
Джокинг
3

Великолепные игры в стиле Moonlander (где у вас есть космический корабль, на который влияет гравитация, игроки контролируют направление и тягу, ограниченное топливо при использовании тяги). Получить опыт реализации очень простой физики и системы столкновений может быть довольно примитивно. Не нужно беспокоиться об ИИ, а главное о его веселье и привыкании :)

Аллан
источник
2
Согласованные игры типа Thrust / Lunar Lander - отличные ранние проекты. Работа с вращением и скоростью / ускорением раскроет тайны синуса / косинуса (для тех, кто какое-то время с ними не сталкивался). Вы можете использовать статическую или прокручиваемую карту тайлов, и можете использовать обнаружение столкновений, не требуя слишком сложного ответа на столкновение (коснитесь чего-нибудь -> взорваться). Это также хороший
способ
@bluscrn на самом деле это отличный комментарий. После того, как я заставил людей поиграть в тестирование моей флеш-версии, я заметил, что у людей разные мнения о том, как это должно ощущаться. Часть этого была приписана предыдущим играм, в которых участвовал пользователь. Это не было чем-то, о чем я особенно думал, прежде чем разрабатывать его.
Аллан
2

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

Ricket
источник
1

Что-то вроде Gauntlet, потому что вам нужна система сущностей, искусственный интеллект противника, пикапы, карты тайлов, обнаружение столкновений, подсчет очков и т. Д. У него все есть, но не так, как это подавляет.

Iain
источник
Я бы сказал, что ИИ противника и обнаружение столкновений с произвольной раскладкой тайлов огромны, если у вас мало опыта или нет, особенно если учесть физику, которую вы также должны сделать - трение между игроком и землей и т. Д. Это может быть хорошим вызов после нескольких игр, однако
Шон Джеймс
Согласен, немного подавляющим для людей, только начинающих. Слишком много понятий одновременно. Начните с чего-то, что просто озвучивает и вводит. Затем создайте игру, в которой есть 1 или 2 новые вещи, такие как обнаружение столкновений и врагов. Продолжайте выбирать игры, которые основаны на концепциях, которые вы знаете, но представляете то, чего нет; если вы ничего не знаете, не стоит пробовать. Будь проще.
user384918
Честно говоря, я думаю, что в клоне Gauntlet слишком много всего, что можно считать игрой «начального уровня».
PhillC
Честно говоря, я думаю, что кодировать Gauntlet проще, чем Tetris, поскольку выяснить, как блоки располагаются друг над другом, завершена ли строка и как удалять строки, довольно сложные абстрактные проблемы. Gauntlet может быть закодирован менее чем в 1000 строк на любой современной 2D-платформе, и если этого не происходит на используемой платформе, я бы предложил найти другую. Во всяком случае, я предложил это именно потому, что это требует изучения всех частей, которые составляют современную игру.
Иан
Вы получаете дополнительные очки за то, что делаете голос правильно: «Эльф застрелил еду!» "Волшебник вот-вот умрет!" или мой любимый: "Вы нашли мой ЛУЧШИЙ номер!"
личность
1

Мини-клон Zelda хорош и обладает некоторыми навыками, которые здесь не упоминались. Прокрутка большой карты тайлов и простое управление движением в 8 направлениях полезно знать. Бонусные баллы, если вы можете сделать врагов, но я бы не стал слишком беспокоиться об этом.

coderanger
источник
1

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

Я начал с основного игрового процесса, а затем перешел к добавлению новых вещей, бонусов и т. Д. К нему.

Casey
источник
1

Я всегда начинал с игры Танки / Гориллы / Черви. Он позволяет вам выполнять упражнения с простым графическим отображением и чтением пользовательского ввода, а также игровой цикл, применяющий гравитацию к снаряду и тестирование на обнаружение столкновений.

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

AlexC
источник
1

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

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

MrCranky
источник
1

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

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

JSmyth
источник
1

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

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

После этого небо - предел. Опять же, цель высоко. Попробуйте платформер с наклонным рельефом, парралаксом, и вы получите хорошую сумку 2d tech handy. Добавьте пинбол (приготовьтесь расстраиваться), и ваша математика улучшится.

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

Кая
источник
0

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

Gootik
источник
0

Моей первой игрой было что-то вроде Super Mario.

Передвигаться, избегать препятствий, прыгать. И все эти задачи могут быть легко выполнены без каких-либо физических расчетов.

Идеально взять простую двумерную вещь, так как вы не будете сильно полагаться на конкретную реализацию / фреймворк / движок.

SwissCoder
источник