Форум программистов, компьютерный форум, киберфорум
Программирование игр
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 08.03.2013
Сообщений: 25

Основы 2D игры перед разработкой

15.03.2014, 12:26. Показов 2335. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток!
Решил начать разрабатывать 2D-экшен скролл гейм, с элементами платформера.
Язык: С++ на Visual studio 2012

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

1) Реализация FPS в играх (Кадров в секунду) Как регулировать? Какой самый оптимальный способ? Ибо если использовать просто цикл, то и отрисовка и расчет свойств объектов и скорость игры будут зависеть от производительности PC. (Использую время между 1 тактом цикла и умножаю все вычисления на время, но в этом способе есть много недостатков, связанных с резким ускорением или замедлением игры, либо неожиданными багами, когда создается нагрузка на PC)

2) Разделения отрисовки графики от других процессов. Нужны ли потоки или что-то в этом роде?

3) Простейшие архитектуры игры?

4) Библиотеки? (Пока что использую Sfml, но также рассматриваю Box2D)

5) По какому принципу нужно отрисовывать объекты правильно, если в игре можно изменять разрешение экрана? (Я использую метод: изменяю высоту(сжимаю или растягиваю на коэффициент отношения исходной высоты к выбранной пользователем), затем сжимаю или растягиваю на этот же коэффициент ширину (для правильных пропорций), а затем пересоздаю окно, тем самым обрезая часть ширины) Мне кажется - это не правильный способ работы с разрешениями экрана, да и при таком способе достаточно явно видно проседание фпса, возможно из-за отсутствия грамотной системы отрисовки(FPS)

6) Как реализуется мультиплеер, при котором сервер создается на одном из компьютеров игроков, а другие могут подключиться к создателю, в итоге играть могут и те, кто подключился и тот, кто создал сервер?

7) Советы по оптимизации? (Чтобы не наломать дров в начале, а потом разгребать косяки тучу времени)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.03.2014, 12:26
Ответы с готовыми решениями:

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

На чем писать игры, изучив основы C++?
Всем привет. Изначально я учил С++, чтобы создавать игры. Сейчас я более-менее изучил основы С++ и вот не знаю что делать дальше....

Поиск человека который составит компанию в создании основы для компьютерной игры
Ищу разработчика который на высоком уровне понимает с++/с# для создания компьютерной игры. Все подробности в Skype: ncbtt0

2
 Аватар для recoder
135 / 134 / 53
Регистрация: 13.09.2013
Сообщений: 260
Записей в блоге: 2
20.03.2014, 09:11
1. Вот не плохой перевод, на эту тему

Ну, если вы изучаете sfml, то у создателя, есть отличная книга "SFML Game Development" Packt Publishing. Советую почитать, там все эти темы затрагиваются и приводятся примеры.
0
0 / 0 / 0
Регистрация: 08.03.2013
Сообщений: 25
20.03.2014, 15:45  [ТС]
Update
Разобрался с пунктами 1-5
Сейчас работаю с разрешениями экарана, но столкнулся с огромной проблемой и не понимаю, что делать:
У меня есть 2 картинки
Background 1920x1080
Kyb 118X112
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
   float xInMap=0.055, yInMap=0.775; //Human's X, Y 
   float xResolution = 1200, yResolution = 510; //Selected resolution
   float K = yResolution/1080; 
 
   sprite.setTextureRect(IntRect(0,0,1920,1080)); //My background
   sprite.setPosition(-0.01*xResolution,0); //Background Position 
 
   sKyb.setTextureRect(IntRect(0, 0, 118, 112)); //My human
   sKyb.setPosition(xInMap*xResolution, yInMap*yResolution); //Human position
 
   sKyb.setScale(K, K);
   sprite.setScale(K, K);
 
   
   float xImage = xInMap*xResolution, yImage = yInMap*yResolution; //Position for drawing
 
 
   RenderWindow app(VideoMode(xResolution, yResolution), "Test Window");
При одном разрешении куб стоит около двери, нарисованной на фоне. Затем я меняю разрешение и он уже находиться в другом месте, но только по X. Я понимаю в чем проблема: я сжимаю фон и объект, но т.к фон имеет более большой размер, то и сжимается он сильнее.
Вот пример:

Тут я использовал разрешение 1280x720


Тут я использовал разрешение 900x800 (не обязательно это разрешение, можно взять любое другое)


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

Добавлено через 51 минуту
UPDATE
Разобрался с проблемой.
Если кто-то столкнется с такой проблемой, то мой вам совет: используйте эту систему, но используя 2 типа координат
1) На карте (не для отрисовки)
2) Умножаете 1ое на K и получаете положение на карте!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.03.2014, 15:45
Помогаю со студенческими работами здесь

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

Основные задачи, перед началом разработки игры VS 2012 c++
Хотел узнать, но никто не отвечает/не нахожу, ответы на несколько вопросов. Очень надеюсь на помощь. Игра(2D скроллшутер) будет...

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

Какие службы Windows отключать перед играми в онлайн-игры?
Добрый день. Интересует такой вопрос. Собираюсь играть в онлайн игры (10+ часов в день). Все что мне нужно это что бы игра запускалась...

Проблемы с разработкой БД
Здравствуйте! Необходимо написать программу на C#, которая будет работать с Microsoft SQL Sserver 2008 R2. Должно быть 2 версии базы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru