Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2010, 17:13   #1
AlexeyMikr
Пользователь
 
Регистрация: 15.11.2010
Сообщений: 20
По умолчанию Как создать 2D игру?

Здравствуйте, я начал заниматься программированием немного меньше года назад, но занимаюсь им еще совсем немного. Я хочу создать простую 2D игру на языке C#, но не знаю как это сделать.
AlexeyMikr вне форума Ответить с цитированием
Старый 16.11.2010, 18:18   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Очень расплывчатый вопрос. Скажите хотя бы, какую игру хотите создать? Как правило, наиболее простую игру можно сделать в жанре аркады (если не считать всякие логические вроде "крестиков-ноликов", шахмат, "морского боя", хотя там желательно реализовывать AI для игры против компьютера).
Вот, скажем, как мне видится общий подход к реализации игры типа Марио.
Есть небольшой физ. движок, обеспечивающий взаимодействие прямоугольных объектов (ГГ, кирпичные блоки, монетки, трубы, всякие нехорошие монстры рассматриваются как прямоугольные объекты). Некоторые прямоугольники могут стоять на других, некоторые могут сталкиваться с другими (с трубами или кирпичными блоками), или же проходить через них (монстры друг через друга, через монетки и грибы). Плюс у некоторых объектов есть свое поведение (монстры ходят туда-сюда, грибы при появлении тоже начинают бежать).
Еще есть "карта" - набор всех этих объектов, расположенных в определенных точках.
Также есть графический движок, в котором есть объекты типа "анимация", а также "банк текстур", в котором все эти объекты хранятся. Банк текстур ответственен за загрузку анимации в память, очистку памяти и обработку запросов на рисование анимации, поступающие от объектов, находящихся на карте. "Анимация" может рисовать нужный кадр в указанном месте на экране.
В идеале также у вас есть звуковой движок, который управляет проигрыванием музыки и звуков различных событий.

Как реализуется игровой процесс? Здесь главным понятием является игровой таймер. Благодаря ему через равные интервалы времени происходит итерация следующего игрового цикла:
1. Обрабатываются события управления персонажем (нажатия игроком клавиш) - в зависимости от нажатых клавиш далее в этой итерации персонаж будет двигаться в том или ином направлении.
2. Для всех объектов, находящихся на карте вычисляются новые координаты с учетом их моделей поведения (монстры перемещаются на шаг в сторону, персонаж двигается туда, куда указал игрок). Все здесь, конечно, происходит с использованием физ. движка - обрабатываются столкновения, приземления персонажа на твердую поверхность, сила тяжести, влияющая на его скорость в прыжке и т.п.
3. Картинка на экране перерисовывается с учетом нового положения всех объектов, а также с учетом того, что каждый объект рисует следующий кадр своей анимации.
Profit!

Вот примерно такая вот (очень грубая) схема общего скелета игры. Естественно, очень многое зависит от того, какую именно игру вы хотите сделать.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 17.11.2010, 14:53   #3
AlexeyMikr
Пользователь
 
Регистрация: 15.11.2010
Сообщений: 20
По умолчанию

Спасибо! Я хочу сделать игру типа шутера с поведением AI персонажей (чтобы при появлении одного персонажа, они выполняли определенное действие). У меня, правда, опыта создания игр на С нету. Как реализовать такой код, чтобы при нажатии, скажем, клавиши вверх, объект двигался вверх, например на 1px?
AlexeyMikr вне форума Ответить с цитированием
Старый 17.11.2010, 16:26   #4
ZaRDaK
Форумчанин
 
Регистрация: 01.09.2009
Сообщений: 197
По умолчанию

Если на XNA пишешь, то:
Код:
Class Sprite
{
...
protected Vector2 pos = Vector2.Zero;
...
public void Move(Vector2 vel)
{
pos = pos + vel;
}
...
ZaRDaK вне форума Ответить с цитированием
Старый 17.11.2010, 17:37   #5
AlexeyMikr
Пользователь
 
Регистрация: 15.11.2010
Сообщений: 20
По умолчанию

Цитата:
Сообщение от ZaRDaK Посмотреть сообщение
Если на XNA пишешь, то:
Код:
Class Sprite
{
...
protected Vector2 pos = Vector2.Zero;
...
public void Move(Vector2 vel)
{
pos = pos + vel;
}
...
нет, я пишу на C#
AlexeyMikr вне форума Ответить с цитированием
Старый 17.11.2010, 18:26   #6
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Какая разница на чем кто пишет? Объект имеет координату, по которой он рисуется. Чтобы сдвинуть объект на x пикселей нужно изменить координату на x пикселей.
Вадим Буренков вне форума Ответить с цитированием
Старый 17.11.2010, 23:53   #7
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Очень советую почитать темы
"Уроки по созданию игр для новичков..."
и
"Как Вы относитесь к созданию игр на Delphi?"
Думаю, на большинство ваших вопросов там найдутся ответы. Перемещение персонажа - самый боянистый вопрос и освещен в этих темах в полной мере.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 19.11.2010, 21:49   #8
AlexeyMikr
Пользователь
 
Регистрация: 15.11.2010
Сообщений: 20
По умолчанию

Понятно... Ага, спасибо!
AlexeyMikr вне форума Ответить с цитированием
Старый 20.11.2010, 04:39   #9
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Цитата:
Сообщение от AlexeyMikr Посмотреть сообщение
нет, я пишу на C#
Вообще-то XNA использует язык C#. Я понимаю ты хочешь написать игру с использованием Windows Forms. Ну это может пригодиться для общего развития, а так думаю глупо писать игру для Windows Forms. XNA использует библиотеки, в которых многое уже сделано для создания игр. И это по сути обёртка над DirectX. Следовательно то что будет зверски тормозить в Windows Forms в XNA даже не будет намёка на тормоза.

Это посмотри в первую очередь!!! (Вступление перед уроком стоит посмотреть, а так для вообще новичка в этом деле на этом же сайте есть и более доступные уроки. А ну и в самом конце, тоже можно послушать, что скажет человек)

Портал о XNA (форум, уроки и т.д.)

Скачать инструменты для разработки

Видеоуроки на русском, по созданию игр в XNA

Последний раз редактировалось Casper-SC; 20.11.2010 в 05:05.
Casper-SC вне форума Ответить с цитированием
Старый 21.11.2010, 15:34   #10
AlexeyMikr
Пользователь
 
Регистрация: 15.11.2010
Сообщений: 20
По умолчанию

Я создаю на Visual Studio.
AlexeyMikr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать вот такую игру? Adam Паскаль, Turbo Pascal, PascalABC.NET 5 03.10.2010 07:32
нужно создать игру! ALKOrobot Общие вопросы по Java, Java SE, Kotlin 1 18.03.2010 19:48
как создать браузерную онлайн игру vekktor Фриланс 2 29.01.2009 12:53
Подскажите как создать игру Максец Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 22.10.2008 14:23
Люди, плиз. Как создать простейшую 2-D игру, вид сбоку? NNN Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 27.04.2008 14:51