Аватар для Bogradan
8 / 7 / 1
Регистрация: 22.03.2016
Сообщений: 343

На чём делать 2D игру?

02.03.2025, 22:14. Показов 7978. Ответов 61

Студворк — интернет-сервис помощи студентам
Уважаемые программисты с++, подскажите пожалуйста, я вот умею работать с C++/CLI .net. кроме с++ не знаю ничё. Какие библиотеки в рамках с++ можете мне посоветовать для разработки 2D компьютерной игры? Какая платформа нужна для создания игр, язык только с++. Какие инструменты? Могу ли я сделать всё используя так же WinAPi, CLI, .Net Windows Forms? или там нужен с++ совсем другие инструменты, подскажите вообщем на что ориентироваться в рамках С++ для разработки 2D игр. Спасибо за внимание. Игра будет не маленькая, очень серьёзный проект на долгие годы. Движок делать буду свой, движки не советуйте, я именно имею ввиду что поможет для собственной разработки 2D движка. Только Visual Studio, я уже сроднился с ним.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.03.2025, 22:14
Ответы с готовыми решениями:

Теория игр, массивы
Есть задание (прикрепил его в виде файла к сообщению). Есть решение для 12-ого варианта на BORLANDC, у меня 2-ой. Я изменил в начале...

Решение матричных игр. Есть у кого такая программа написанная уже...
Требуется программа по решению матричных игр... С выбором размера матрицы и выдачей решения... Может кто смогёт такую сбатцать?

Запуск приложений(старых игр) в оконном режиме
День добрый, подскажите, хотелось бы реализовать свое желание запуска старых игр windo`вых(типа StarCraft) в оконном режиме, с чего начать,...

61
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
03.03.2025, 20:21
Студворк — интернет-сервис помощи студентам
Bogradan, не знаю, что ты не так делаешь. Я вот только что создал два проекта: один с динамической, другой со статической линковкой. Оба проекта работают, как в релизной, так и в отладочных конфигурациях. Нет ни единой ошибки.

Добавлено через 3 минуты
Bogradan, тебе нужно указать вот так, как для релизной, так и для отладочной конфигурации
Code
1
2
3
sfml-graphics.lib
sfml-window.lib
sfml-system.lib
а у тебя судя по файлу Affected zone.vcxproj
Code
1
<AdditionalDependencies>sflm-graphics-d.lib;sflm-system-d.lib;sflm-window-d.lib;%(AdditionalDependencies)</AdditionalDependencies>
эти буквы -d указываются для статической линковки отладочной конфигурации, вместе с -s
0
 Аватар для Bogradan
8 / 7 / 1
Регистрация: 22.03.2016
Сообщений: 343
03.03.2025, 20:34  [ТС]
Теперь такая ошибка
Миниатюры
На чём делать 2D игру?  
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
03.03.2025, 20:36
Bogradan, тебе что видео снять, как настроить проект?
0
 Аватар для Bogradan
8 / 7 / 1
Регистрация: 22.03.2016
Сообщений: 343
03.03.2025, 20:43  [ТС]
Нет. Я уже делал по видео всё.

Добавлено через 5 минут
Empty project C++, new main.cpp настройки все по инструкции, даже по видео повторял. Visual Studio самая последняя версия лицензионная.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
03.03.2025, 20:44
Bogradan, сейчас видео сделаю
1
 Аватар для Bogradan
8 / 7 / 1
Регистрация: 22.03.2016
Сообщений: 343
03.03.2025, 20:45  [ТС]
Вот всё что я установил в VS
Миниатюры
На чём делать 2D игру?  
0
 Аватар для Bogradan
8 / 7 / 1
Регистрация: 22.03.2016
Сообщений: 343
03.03.2025, 20:48  [ТС]
0
9986 / 2958 / 497
Регистрация: 05.10.2013
Сообщений: 8,088
Записей в блоге: 242
03.03.2025, 21:44
Bogradan, попробуйте параллельно вместе со мной создать CMake проект в VS на SFM 2.6.2

Скачивание SFML

Скачайте архив собранной библиотеки SFML для VS 2022, как на скриншоте ниже, по ссылке: https://github.com/SFML/SFML/releases/tag/2.6.2 (прокрутите страницу вниз)



Извлеките архив куда-нибудь, например, на диск C в папку libs. Удобно хранить все библиотеки в одной папке. Я скопировал архив в папку libs и сделал "Extract Here":

Название: 4b3764e57fe4a476a91a1426db19b65f94407529.png
Просмотров: 106

Размер: 6.9 Кб

Зайдите в указанную ниже папку и скопируйте путь:



Этот путь нужно добавить в PATH. Если не знаете, как это сделать, то пишите. В PATH этот путь нужно добавить до запуска VS.

Новый CMake проект в VS 2022

Запустите VS. Выберите "Создать новый проект":



Появится новое окно, где нужно выбрать тип проекта. Выберите "CMake Project", как на скриншоте и нажмите кнопку "Далее":



В новом окне нужно заполните поля: имя проекта, место создания проекта, поставьте галочку и нажмите кнопку "Создать":



Будет создан консольный проект c "hello world":

Название: c39a175defdf0204141fb431cd9872b9fd101cad.png
Просмотров: 100

Размер: 1.8 Кб

Вы можете его запустить на Ctrl+F5 (или пустой зелёный треугольник на верхней панели инструментов VS)

Подключение SFML

Теперь я захожу в указанную на скриншоте ниже папку и копирую путь:



Этот путь я использую в CMakePresets.json в VS, добавив такую конструкцию:

JSON
1
2
3
4
                "SFML_DIR": {
                    "value": "C:\\libs\\SFML-2.6.2\\lib\\cmake\\SFML",
                    "type": "PATH"
                }
в этой секции:
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        {
            "name": "x64-debug",
            "displayName": "x64 Debug",
            "inherits": "windows-base",
            "architecture": {
                "value": "x64",
                "strategy": "external"
            },
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "Debug",
                "SFML_DIR": {
                    "value": "C:\\libs\\SFML-2.6.2\\lib\\cmake\\SFML",
                    "type": "PATH"
                }
            }
        }
Откройте в VS-проекте файл CMakeLists.txt и добавьте эти строки:

Code
1
2
find_package(SFML 2.6 COMPONENTS system window graphics REQUIRED)
target_link_libraries(hello-sfml sfml-system sfml-window sfml-graphics)
Откройте файл hello-sfml.cpp и замените код на следующий:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <SFML/Graphics.hpp>
 
int main() {
    sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
    while (window.isOpen()) {
        sf::Event event;
        while (window.pollEvent(event)) {
            if (event.type == sf::Event::Closed)
                window.close();
        }
        window.clear();
        window.display();
    }
    return 0;
}
Запустите код на выполнение: Ctrl+F5
1
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
03.03.2025, 22:06
Bogradan, появились неотложные дела, поэтому только сейчас публикую видео

Если будут вопросы, обращайся к XLAT, он лучше знает SFML
Вложения
Тип файла: zip sfml.zip (13.69 Мб, 30 просмотров)
1
 Аватар для Bogradan
8 / 7 / 1
Регистрация: 22.03.2016
Сообщений: 343
03.03.2025, 22:49  [ТС]
Спасибо большое. Я впитаю в себя все ваши знания, и стану уберкрейзи разработчик 2D шутанов.
0
Модератор
Эксперт Java
 Аватар для alecss131
2895 / 1401 / 412
Регистрация: 11.08.2017
Сообщений: 4,487
Записей в блоге: 2
03.03.2025, 22:58
Цитата Сообщение от Bogradan Посмотреть сообщение
DirectX
Ну такой себе выбор, АПИ очень похож на WinAPI, а винапи это боль да и последняя версия по сложности как вулкан. Почти все гайды/уроки очень стары и используют устаревший DirectX SDK, который уже давно не обновлялся, сейчас это часть Windows SDK, правда части там нету (больше полезных утилит).
Игры это не только графика. Это еще текст, звук, сеть (не обязательно) и главное физика. Для 2д игр хватит с лихвой библиотеки Box2D. Еще надо не забывать про свою реализацию анимаций (как покадровой так и скелетной, а у нее еще и смешивание анимаций), дерева состояний и переходов для анимаций, написание ИИ (на ифах далеко не уедешь) и тд. 2д освещение придется писать самому, если понадобится и всякие спецэффекты и частицы.
Так что самое оптимальное все использовать готовый движок и писать игру а не движок. А то дальше движка вряд ли зайдет. И будут очень больше затраты на оптимизацию, чтобы вся поделка (я про свой движок и игре на нем) выдавала нормальный фпс
1
 Аватар для Bogradan
8 / 7 / 1
Регистрация: 22.03.2016
Сообщений: 343
03.03.2025, 23:02  [ТС]
Да, вы правы. Ну мне кроме Godot и sfml остальное противно, слишком мудрёно. Я вообще фигею как сложно движок просто запустить, ни один без ошибок ещё не запускался. Попробую разобраться с этим всем. Я устанавливал себе Unreal и он работает, но в компиляторе почему-то нет и там всё на C#, бред какой-то. Godot очень понятный и простой, но тоже с ошибками. SFML такой же, ошибки всякие и чё с ними делать не понятно.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
03.03.2025, 23:11
Цитата Сообщение от Bogradan Посмотреть сообщение
Я вообще фигею как сложно движок просто запустить, ни один без ошибок ещё не запускался.
Godot запускается из коробки, редактор скриптов на GDScript встроенный, какие могут быть проблемы?
0
 Аватар для Bogradan
8 / 7 / 1
Регистрация: 22.03.2016
Сообщений: 343
03.03.2025, 23:17  [ТС]
Я так понял Godot-ту Visual Studio вообще не нужен, он сам по себе и там же С++ встроенный. Правильно?

Добавлено через 3 минуты
Если программировать на Godot, VS можно удалять я так понял.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
03.03.2025, 23:22
Цитата Сообщение от Bogradan Посмотреть сообщение
Если программировать на Godot, VS можно удалять я так понял.
Если программировать на GDScript, то да, VS не нужна
GDScript это отдельный язык, созданный специально для Godot. Он похож на питон, но есть отличия. Если писать на нем, то код пишется в самом Godot и для языка доступна очень удобная документация, а сама игра запускается мгновенно, т.к. не нужна традиционная компиляция...

Цитата Сообщение от Bogradan Посмотреть сообщение
и там же С++ встроенный
нет, в Godot писать на С++ можно, но тогда сам проект нужно собрать с самим движком из исходников. Для этого уже нужна внешняя IDE, компиляция долгая, документация отсутствует, для тебя будет сложно
1
9986 / 2958 / 497
Регистрация: 05.10.2013
Сообщений: 8,088
Записей в блоге: 242
03.03.2025, 23:26
Цитата Сообщение от Bogradan Посмотреть сообщение
SFML такой же, ошибки всякие и чё с ними делать не понятно.
Мою инструкцию не пробовали? Тоже ошибки? Можно узнать, что за ошибки? Чтобы я имел ввиду, что может быть не так.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
03.03.2025, 23:40
Цитата Сообщение от Bogradan Посмотреть сообщение
SFML такой же, ошибки всякие и чё с ними делать не понятно
Ну я же показал на видео, что настройка SFML занимает пару минут. А дальше уже пишешь спокойно код... Как по мне, SFML это хороший выбор для изучения С++. Однако, создать игру на Godot и GDScript будет легче и быстрее.
Цитата Сообщение от Bogradan Посмотреть сообщение
Я устанавливал себе Unreal и он работает, но в компиляторе почему-то нет и там всё на C#, бред какой-то.
Вы писали на C++/CLI, толком не знаете С++, а вот уже хотите в Unreal Engine писать на С++. Всё нужно делать поочередно и в своё время. Рано вам туда лезть. К тому же игровой движок это не только программирование. Программирование это малая часть разработки игры. Нужно потратить определенное количество времени, чтобы ознакомиться с самим движком. В первое время можно вообще только блюпринты использовать.
К тому же, вы хотите создать 2D игру. Unreal используется больше для создания 3D игр. Нужно выбирать движок по предназначению.

Добавлено через 4 минуты
Цитата Сообщение от Bogradan Посмотреть сообщение
Я вообще фигею как сложно движок просто запустить, ни один без ошибок ещё не запускался.
Движок Unity на C#, обычно не требует никакой настройки. И в отличие от Unreal, удобен не только для 3D, но и для 2D игр
1
 Аватар для Bogradan
8 / 7 / 1
Регистрация: 22.03.2016
Сообщений: 343
03.03.2025, 23:44  [ТС]
Запустился SFML!!! СПасибо "Royal X". Мой спаситель. Всё sfml теперь моя вторая работа будет, 2D шутер буду делать.

Добавлено через 1 минуту


Добавлено через 54 секунды
У меня разрядность не правильно стояла, 64 вместо 32 которую скачал.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
03.03.2025, 23:45
Цитата Сообщение от Bogradan Посмотреть сообщение
Запустился SFML
Если будут проблемы при написании на SFML, то создавай отдельные темы в разделе https://www.cyberforum.ru/sfml/
Если проблема будет связана с чистым С++ кодом, то можешь и в этом разделе.
Но в текущей теме больше не пиши. Так не принято на форуме. Один вопрос - одна тема.
1
 Аватар для Bogradan
8 / 7 / 1
Регистрация: 22.03.2016
Сообщений: 343
03.03.2025, 23:48  [ТС]
Понял. Вы помогли мне определиться, спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.03.2025, 23:48

Алгоритм календаря игр (например в футболе)
необходимо составить календарь футбольных матчей, допустим есть 6 команд char *teams = {&quot;TEAM A&quot;,&quot;TEAM B&quot;,&quot;TEAM...

Движок для игр
Всем привет!!!, хотел узнать возможно ли создать движок на C++ чтобы экспортировать модели из 3ds max а после в самом движке можно было...

Выбор IDE для создания 2D игр
Здравствуйте. Задача сделать пака 2ух – мерные драчки загружая в проект анимацию-как удар(ы) и реакция на удар...(лучше всего секвенцию...

Выбор учебника по программированию 3D игр
Привет. Нашёл 2 учебника и хочу что бы вы посоветовали из приведённых двух какой лучше для новичка выбрать.... (имею ввиду какой...

Книга по разработке игр
Не посоветуете мне книгу по разроботки игры. С чего начинать ? Какую книгу выбрать ?


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Опции темы

Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru