protax / 4a-engine Goto Github PK
View Code? Open in Web Editor NEWSimple 2d rpg game engine
License: MIT License
Simple 2d rpg game engine
License: MIT License
Нужно нарисовать спрайты ко всем внутриигровым персонажам. Все апдейты\изменения хотелось бы видеть здесь, например, в папке res/. Насчет анимаций будет отдельное задание
Движок должен уметь скреплять несколько текстур внутри одного текстурного блока
Нужно написать на C/C++ интерфейс (*.hpp файл), в котором отражены все основные функции, которые хотелось бы использовать для программирования логики игры и по возможности подробно описать их (например, в doxygen), как то так:
/**
* Функция отрисовки главного героя на сцене
* \param stage_name Идентификатор сцены
* \param character_name Иденификатор персонажа
* \param position Положение песонажа на сцене
*/
void drawMainCharacter(stage_t stage_name, character_t character_name, position_t position);
К конкретным параметрам функций и именам требований нет, но по завершению такого интерфейса с его использованием будет писаться Python-код
Добавить поддержку сборки и запуска на системах Linux
Нужно добавить удобное управление игровым персонажем. То есть, по назначенным кнопкам (wasd, стрелки, что угодно + кнопка действия, кнопка меню) игра должна знать об их нажатии (действие, меню) или удержании (идти в направлении). Думаю, это должен быть класс с конструктором, в котором назначаются все кнопки на свои действия, и, как минимум, методом типа setKeyCallback
. В этом коммите управление реализовано как раз с помощью callback-вызова (glfwSetKeyCallback
, стр.343, это стандартный вызов из либы glfw, его и можно использовать) и соответствующей callback-функции (key_callback
, стр.49). Также, обязательно сделать все это thread-safe, то есть обернуть это в mutex-ы, что примерно сделано в классе keyHandler
(стр.12). Если это будет класс, то реализацию методов нужно сделать в .cpp файле в src/, а заголовок в .hpp в include/ и прописать #include "YourClass.hpp"
в реализации
Вот что надо знать:
После коммита с Google Codestyle перестали отображаться все динамические объекты. Работает только StaticGameObject
В файле IListenable.cpp есть куча классов с одинаковой реализацией
Создать класс игрового цикла, через который можно настраивать частоту смены кадров, анимации персонажей (и их скорость), управление игрой с помощью клавиатуры
Обновить систему сборки, автоматизировать добавление новых модулей
Например, вместо int - int32_t или int64_t
Анимировать спрайты: когда стоит на месте, идет или бежит и все такое
Описать интерфейс класса и привести реализацию в соответствие. Сейчас очень непонятно, чем он занимается
И внести соответствующие изменения в CMakeLists
Сейчас везде используется std::shared_ptr<>
, хотя во многих местах можно использовать std::unique_ptr<>
. Нужно проанализировать это и подумать над тем, как пользователь будет создавать такие объекты.
При смене fps с 60 на 30 движок падает с белым экраном
Иногда при запуске программы выводится ошибка в консоль и программа крашится:
ERROR::SHADER::FRAGMENT::COMPILATION_FAILED 0(1) : error C0000: syntax error, unexpected $undefined at token "<undefined>"
Может оказаться, что кто-то не в курсе, что тут вообще происходит, так что неплохо бы знать теорию:
OpenGL
C/C++
Git
Нужно сделать идентификатор объекта уникальным и повторно неиспользуемым
Движок должен уметь находить объекты, которые сталкиваются и обрабатывать такие события
Во время освобождения выделенных ресурсов в консоль выводится строка
[OpenGL error]: 0x502 C:/Users/karpe/4a-engine/lib/Texture.cpp on line 32
Есть преположение, что ошибка происходит не в деструкторе текстуры, а немного ранее
Сейчас движок рисует кадры и обрабатывает события в одном потоке. Нужно разобраться, как это можно оптимизировать
Написать класс загрузчика, который бы мог загружать (с диска) шейдеры, текстуры, спрайты для удобного их использования в движке
Нужно сделать (или найти) инструмент для вывода в лог ошибок. Также, эти ошибки надо обрабатывать
Переписать код, используя Google C++ Codestyle
Импортировать настройки glfw, рендерера, и чего угодно из констант или config-файла
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.