Основы разработки 2D-игр

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

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

Итак, это правильный способ написать свою игру, чтобы написать всю часть розыгрыша игрового движка, манипулируя объектами для игрока, врагов и даже фона самостоятельно, а не просто использовать directdraw для вывода на экран?

EDIT: Я действительно хочу научиться писать игры с нуля, потому что это должен быть отличный опыт программирования, и если вы рассматриваете такие игры, как Commander Keen на DOS, созданный без фреймворка или библиотек, но все же так замечательный.

4
задан B.Gen.Jack.O.Neill 29 июня '10 в 23:16
источник поделиться

10 ответов

Хорошим подходом к этому было бы взглянуть на библиотеку SDL. Я не говорю, что это самая лучшая библиотека для 2D-игр, но с ней легко начать работу, и в Интернете затоплены учебные пособия и примеры с открытым исходным кодом для простых 2D-игр с домашним пивом, написанных с использованием SDL.

9
ответ дан kasperjj 29 июня '10 в 23:21
источник поделиться

Я тоже рекомендую SDL, но вам обязательно нужно взглянуть на lazyfoo, что просто здорово.

4
ответ дан Aif 30 июня '10 в 0:32
источник поделиться

Когда я начал программировать, я начал делать это с Allegro, еще в старые добрые дни DOS. Это была первая полезная библиотека, которая работала с библиотеками SVGA и имела хорошую поддержку спрайтов. Затем появилась версия 3, и они добавили поддержку окон (используя GDI и Directy X, вы можете выбрать во время исполнения, какой движок использовать). Линукс-порт ожил, и все хорошо.

Это очень простая 2D-библиотека, и она научит вас основам графики и анимации. Теперь он даже содержит поддержку звука, которая является очень необходимым дополнением (ну, я до сих пор помню V 2.9X...). Они в бета-версии для версии 5, и я думаю, что это интересный проект для вас.

http://www.talula.demon.co.uk/allegro/

2
ответ дан elcuco 04 июля '10 в 13:59
источник поделиться

Я также использовал SDL, но попытаюсь посмотреть HGE. Он требует по крайней мере DirectX 8.0, поэтому ваши приложения будут работать только на Windows, но на их форуме вы найдете много тем о том, как перенести его в OpenGL. На мой взгляд, HGE будет легче учиться, чем SDL, потому что SDL - это библиотека низкого уровня, и вам придется научиться самому справляться со многими вещами. HGE более готов к запуску только из коробки.

2
ответ дан virious 04 июля '10 в 13:37
источник поделиться

О чем вы, ребята, говорите, WinAPI имеет низкоуровневые процедуры рисования.

Хотя использование установленной библиотеки, такой как SDL, вероятно, является лучшей идеей, вы могли бы без особых трудностей создать свои собственные абстракции для подпрограмм рисования WinAPI.

Тогда это просто вопрос создания цикла while, который имеет все инструкции рисования и интерпретирует ввод. Для 2D-игр это не слишком сложно.

1
ответ дан Fredrick Pennachi 30 июня '10 в 0:40
источник поделиться

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

(Личные рекомендации: хотя это технически 3D-движок, что-то вроде Unity - отличный движок, который включает в себя учебные пособия для создания 2D-игр Единство - это не C, но это делает вашу жизнь намного проще...)

0
ответ дан Dan Puzey 29 июня '10 в 23:21
источник поделиться

Я только что начал аналогичный проект несколько дней назад, вы можете проверить его на GitHub.
Он должен дать вам несколько идей о том, как устроена игра. Как и некоторые детали прокручивающей 2D-карты с коллизией (которая оказывается довольно сложной, если вы хотите получить 100% -ную ошибку). О, и он использует SDL, как многие из них уже предложили.

Что касается меня, это мой первый проект C. Но я должен признать, что раньше я делал подобные вещи в Java и Python, поэтому это был хороший способ быстро научиться C. И поскольку он учится, а не какой-либо продуктивный материал, я использую простой C99, что делает задачу даже "более смешной".

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

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

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

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

0
ответ дан Ivo Wetzel 04 июля '10 в 14:23
источник поделиться

Откажитесь от этого Начальная версия игры

У них действительно большой ресурс, связанный с игровым программированием и множеством новичков. SDL хорош, но вы должны подумать об обучении базовым игровым методам перед началом кодирования и даже перед тем, как начать думать об используемых вами api/libs.

Проясните, сколько "интеллекта" вам нужно (Ki), подумайте о загрузке/сохранении раннего времени... так много вещей, которые вы должны иметь в виду, если хотите завершить свой проект. Вам нужен редактор игр? (Также..work) Как насчет звука/графики? Написание всего этого материала по собственному усмотрению займет много времени (если у вас нет опыта). Создание контента - еще одна важная проблема, которая может потребовать много времени, если вы сделаете это вообще.

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

0
ответ дан InsertNickHere 04 июля '10 в 13:51
источник поделиться

EDIT: Я действительно хочу научиться писать игры с нуля, потому что это должен быть отличный опыт программирования, и если вы рассматриваете такие игры, как Commander Keen на DOS, созданный без фреймворка или библиотек, но все же такой замечательный.

Это не совсем правильно. Commander Keen (и любые игры DOS) используют библиотеки: те, которые предоставляются DOS, BIOS и т.д. Без библиотек той или иной формы вы не сможете ничего использовать с C. Для игрового программирования вы действительно это делаете хотите оставить все детали низкого уровня кому-то еще.

Я бы рекомендовал Allegro в качестве начальной игровой библиотеки программирования.

0
ответ дан Cogwheel 30 июня '10 в 0:29
источник поделиться

Action Arcade Adventure Set (первоначально опубликованный как книга), вероятно, является одним из самых полных руководств по написанию 2D- прокрутка игры. Хотя более старая ссылка, многие основы для разработки 2D-скроллера не изменились.

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

Я предлагаю вам перейти к главам с 1 по 9 и сосредоточиться на главах с 10 по 17.

0
ответ дан Leftium 10 июля '10 в 18:44
источник поделиться

Другие вопросы по меткам