![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 15.11.2010
Сообщений: 20
|
![]()
Здравствуйте, я начал заниматься программированием немного меньше года назад, но занимаюсь им еще совсем немного. Я хочу создать простую 2D игру на языке C#, но не знаю как это сделать.
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
![]()
Очень расплывчатый вопрос. Скажите хотя бы, какую игру хотите создать? Как правило, наиболее простую игру можно сделать в жанре аркады (если не считать всякие логические вроде "крестиков-ноликов", шахмат, "морского боя", хотя там желательно реализовывать AI для игры против компьютера).
Вот, скажем, как мне видится общий подход к реализации игры типа Марио. Есть небольшой физ. движок, обеспечивающий взаимодействие прямоугольных объектов (ГГ, кирпичные блоки, монетки, трубы, всякие нехорошие монстры рассматриваются как прямоугольные объекты). Некоторые прямоугольники могут стоять на других, некоторые могут сталкиваться с другими (с трубами или кирпичными блоками), или же проходить через них (монстры друг через друга, через монетки и грибы). Плюс у некоторых объектов есть свое поведение (монстры ходят туда-сюда, грибы при появлении тоже начинают бежать). Еще есть "карта" - набор всех этих объектов, расположенных в определенных точках. Также есть графический движок, в котором есть объекты типа "анимация", а также "банк текстур", в котором все эти объекты хранятся. Банк текстур ответственен за загрузку анимации в память, очистку памяти и обработку запросов на рисование анимации, поступающие от объектов, находящихся на карте. "Анимация" может рисовать нужный кадр в указанном месте на экране. В идеале также у вас есть звуковой движок, который управляет проигрыванием музыки и звуков различных событий. Как реализуется игровой процесс? Здесь главным понятием является игровой таймер. Благодаря ему через равные интервалы времени происходит итерация следующего игрового цикла: 1. Обрабатываются события управления персонажем (нажатия игроком клавиш) - в зависимости от нажатых клавиш далее в этой итерации персонаж будет двигаться в том или ином направлении. 2. Для всех объектов, находящихся на карте вычисляются новые координаты с учетом их моделей поведения (монстры перемещаются на шаг в сторону, персонаж двигается туда, куда указал игрок). Все здесь, конечно, происходит с использованием физ. движка - обрабатываются столкновения, приземления персонажа на твердую поверхность, сила тяжести, влияющая на его скорость в прыжке и т.п. 3. Картинка на экране перерисовывается с учетом нового положения всех объектов, а также с учетом того, что каждый объект рисует следующий кадр своей анимации. Profit! Вот примерно такая вот (очень грубая) схема общего скелета игры. Естественно, очень многое зависит от того, какую именно игру вы хотите сделать.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 15.11.2010
Сообщений: 20
|
![]()
Спасибо! Я хочу сделать игру типа шутера с поведением AI персонажей (чтобы при появлении одного персонажа, они выполняли определенное действие). У меня, правда, опыта создания игр на С нету. Как реализовать такой код, чтобы при нажатии, скажем, клавиши вверх, объект двигался вверх, например на 1px?
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 01.09.2009
Сообщений: 197
|
![]()
Если на XNA пишешь, то:
Код:
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 15.11.2010
Сообщений: 20
|
![]() |
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 06.03.2009
Сообщений: 1,346
|
![]()
Какая разница на чем кто пишет? Объект имеет координату, по которой он рисуется. Чтобы сдвинуть объект на x пикселей нужно изменить координату на x пикселей.
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
![]()
Очень советую почитать темы
"Уроки по созданию игр для новичков..." и "Как Вы относитесь к созданию игр на Delphi?" Думаю, на большинство ваших вопросов там найдутся ответы. Перемещение персонажа - самый боянистый вопрос и освещен в этих темах в полной мере.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 15.11.2010
Сообщений: 20
|
![]()
Понятно... Ага, спасибо!
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 04.07.2007
Сообщений: 549
|
![]()
Вообще-то XNA использует язык C#. Я понимаю ты хочешь написать игру с использованием Windows Forms. Ну это может пригодиться для общего развития, а так думаю глупо писать игру для Windows Forms. XNA использует библиотеки, в которых многое уже сделано для создания игр. И это по сути обёртка над DirectX. Следовательно то что будет зверски тормозить в Windows Forms в XNA даже не будет намёка на тормоза.
Это посмотри в первую очередь!!! (Вступление перед уроком стоит посмотреть, а так для вообще новичка в этом деле на этом же сайте есть и более доступные уроки. А ну и в самом конце, тоже можно послушать, что скажет человек) Портал о XNA (форум, уроки и т.д.) Скачать инструменты для разработки Видеоуроки на русском, по созданию игр в XNA Последний раз редактировалось Casper-SC; 20.11.2010 в 05:05. |
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 15.11.2010
Сообщений: 20
|
![]()
Я создаю на Visual Studio.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как создать вот такую игру? | 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 |