Итак, не прошло и года.
Я случайно нашёл этот проект у себя на компе, вспомнил про него и решил продолжить. До НГ не смогу -- мне нужно доделать игру на конкурс и сдать сессию. А вот на новогодних каникулах МБ начну.
В общем. Движок это дело хорошее. Но делать движок для "любой игры мира" -- весьма самонадеянно и невозможно. Поэтому я решил ограничить спецификацию.
Варианта два.
1) Продолжить тему с попыткой воссоздать tes: Arena (те же типы блоков и полублоков с точки зрения графики и перемещения, магия, характеристики, персонажи с характеристиками)
2) Игра в сеттинге "Кольская сверхглубокая". А именно: вы должны пройти N лабиринтов, полных врагов, чтобы достигнуть нижнего этажа и сразиться там с главным боссом в виде грибницы. Т.е. это стрелялка. Играете за Ж-12.
В принципе, на мой взгляд, второй вариант предпочтительнее, учитывая сложность первого.
Что для него нужно в рамках текущего состояния проекта? Вот мой список, в порядке выполнения:
1) Добавить функцию рейкаст-стрельбы. Смысл в том, что как и обычный луч он будет получать список всех сущностей, чтобы найти пересечения с ними, но ещё он будет получать функцию оружия. Типа shoot(shooterID, angle, creatures, ak74). Ну и дальше внутри будет код вроде ak74.hit(creatures[hittedCreatureID])
2) Добавить существ. Я уже с ужасом вспоминаю, как тяжело мне было заставить их правильно работать в старой версии, но всё же. Сделать существ банальным Dictionary или типа того, чтобы в этом словаре хранить все поля сущности. Чисто для лёгкой расширяемости. Ну ещё так можно на изичах сохранять состояние всех сущностей на диск в виде файла. + 1 поле будет текстурой/спрайтом из SFML, наверное.
3) Добавить анимации. Если честно, этот пункт тоже пугает меня, но возможно SFML поддерживает анимацию. Если нет, то мне придётся пилить свой обработчик анимаций, который будет правильно читать файл и потом анимированно выводить картинку.
4) Сделать меню. Не смейтесь. Я не умею делать менюшки. Вообще. Нужно будет разобраться на предмет создания тыкабельных кнопочек и формочек, как их втыкать.
5) Сделать редактор уровней. В нём можно будет расставлять произвольные блоки и сущностей. Также будет возможно менять свойства блоков и сущностей, создавая новые (банальное редактирование "полей" в виде пар ключ-значение в словаре). И создание мутаторов (функция, которая изменяет произвольный параметр произвольного объекта. У карты это может быть полем "гравитация", у сущности "размер", у оружия "урон" и так далее. Т.е. банально функция, которая принимает объект типа сущность, карта или блок и умножает указанное поле на указанный множитель или заменяет его на указанное значение. Функция эта будет добавляться в очередь команд при запуске уровня. ). Опять же, тут меня больше всего пугает незнание, как сделать все эти формочки и кнопочки, через которые будет идти управление.
6) Добавить p2p мультиплеер.