-
Автор темы
- #1
Всем привет! Сегодня мы начнем разрабатывать свою собственную игру. В этом уроке мы:
Теперь приступим к выбору библиотеки. На мой взгляд, одной из лучших вариантов на сегодняшний день является высокоуровневая библиотека SFML. Почему именно она, вы поймете во время разработки. Но только лишь её использовать не круто, нам потребуется средство отладки (если это так можно назвать). И тут нам на помощь приходит старая-добрая библиотека ImGui. Опять же, почему именно она, вы поймете во время разработки. Все ссылки будут предоставлены в конце статьи.
Установка библиотек. Я не буду описывать установку ImGui + SFML, так как это можно вывести в отдельный урок. К тому же до меня это уже сделали более опытные и умные люди. Я настоятельно советую ознакомиться с этим *
Создание заготовки, или MainLoop. Весь смысл SFML заключается в повторяющемся цикле, то есть как бы в покадровом отображении определенных действий, сдвигов игрока, противников, анимации предметов. Далее вы все поймете.
Создайте файл main.cpp и вставьте туда этот код:
В коде прокомментирована каждая строчка, поэтому не думаю, что есть смысл описывать все то же самое здесь. Надо отметить, что никак иначе библиотеку использовать нельзя, это стандартная заготовка для любой игры. Если вы хотите работать без ImGui, то код основного цикла будет проще, но вы лишитесь очень эффективного инструмента.
Что же дальше? Если вы про раздел, то я буду продолжать писать для вас гайды, возможно, они будут меньше, а может, и больше. Но я склоняюсь к первому варианту. Также я очень жду других обитателей этого раздела и надеюсь, что их будет не меньше чем в разделе "Разработка игрового ПО". Если вы про игру которую мы будем делать, то тут вариантов много. Я буду делать платформер с видом сверху, суть которого заключается в квестах и поединках, но в статьях я буду описывать и другие типы игр и показывать их отличия, а также реализовывать их.
- выберем библиотеку, на основе которой будем писать игру
- установим выбранную библиотеку
- попробуем сделать заготовку
- обсудим планы на будущее
Теперь приступим к выбору библиотеки. На мой взгляд, одной из лучших вариантов на сегодняшний день является высокоуровневая библиотека SFML. Почему именно она, вы поймете во время разработки. Но только лишь её использовать не круто, нам потребуется средство отладки (если это так можно назвать). И тут нам на помощь приходит старая-добрая библиотека ImGui. Опять же, почему именно она, вы поймете во время разработки. Все ссылки будут предоставлены в конце статьи.
Установка библиотек. Я не буду описывать установку ImGui + SFML, так как это можно вывести в отдельный урок. К тому же до меня это уже сделали более опытные и умные люди. Я настоятельно советую ознакомиться с этим *
Пожалуйста, авторизуйтесь для просмотра ссылки.
*, который кстати, меня вдохновил. Там все подробно и понятно написано и переписывать это не имеет смысла. Тут показана установка ImGui поверх SFML, но чтобы установить саму SFML вы можете перейти по *
Пожалуйста, авторизуйтесь для просмотра ссылки.
*. Это официальная документация на английском, но с картинками, да и базового знания английского вам хватит. Чуть не забыл, устанавливайте статическую версию библиотеки, чтобы обойтись без лишних dll файлов в папке с игрой.Создание заготовки, или MainLoop. Весь смысл SFML заключается в повторяющемся цикле, то есть как бы в покадровом отображении определенных действий, сдвигов игрока, противников, анимации предметов. Далее вы все поймете.
Создайте файл main.cpp и вставьте туда этот код:
Код:
#include "imgui.h"
#include "imgui-sfml.h"
#include <SFML/Graphics/RenderWindow.hpp>
#include <SFML/System/Clock.hpp>
#include <SFML/Window/Event.hpp>
using namespace sf;
int main()
{
sf::RenderWindow window(sf::VideoMode(640, 480), "Window"); // создаем окно с названием "Window" и разрешением 640X480
window.setVerticalSyncEnabled(true); //устанавливаем вертикальную синхронизацию для плавности картинки
ImGui::SFML::Init(window); //инициализируем окно ImGui в нашем основном окне
sf::Clock deltaClock; //создаем "таймер" который поможет обновлять окно
while (window.isOpen()) //основной цикл программы, работающий, пока окно открыто
{
sf::Event event; //событие, может быть равно "закрытию программы", "нажатию клавиши" и др.
while (window.pollEvent(event)) //обработчик события
{
ImGui::SFML::ProcessEvent(event); // программа принимает на себя событие
if (event.type == sf::Event::Closed) // обработчки события, в данном случае, закрытия окна
{
window.close();
}
}
ImGui::SFML::Update(window, deltaClock.restart()); // обновляем окно
ImGui::Begin("ImGui Window"); // создаём окно ImGui
ImGui::End(); // end window
window.clear(Color::White); // заполняем окно заданным цветом
ImGui::SFML::Render(window);// отображаем окно ImGui в основном окне
window.display(); // отображаем все это на экране
}
ImGui::SFML::Shutdown(); // завершаем работу ImGui при закрытии программы
}
Что же дальше? Если вы про раздел, то я буду продолжать писать для вас гайды, возможно, они будут меньше, а может, и больше. Но я склоняюсь к первому варианту. Также я очень жду других обитателей этого раздела и надеюсь, что их будет не меньше чем в разделе "Разработка игрового ПО". Если вы про игру которую мы будем делать, то тут вариантов много. Я буду делать платформер с видом сверху, суть которого заключается в квестах и поединках, но в статьях я буду описывать и другие типы игр и показывать их отличия, а также реализовывать их.
Данная статья получилась больше, чем я думал, но это к лучшему. Всем спасибо за внимание, ждите следующих уроков.
(скачивать для своей VS)
Остальные ссылки есть в статье по установке ImGui + SFML.
Пожалуйста, авторизуйтесь для просмотра ссылки.
(скачивать для своей VS)
Остальные ссылки есть в статье по установке ImGui + SFML.
Последнее редактирование: