PLut старая проекция сильно ограничивала меня, особенно без наличия художника Соответственно, если когда-нибудь я к ней вернусь, это скорее всего будет что-то на основе пререндеренной из моделек графики, как в Last Stand Dead Zone, например. Ну а пока-что я планирую развивать проект именно в том ключе, который есть сейчас. Когда движок будет более-менее готов, можно будет продолжать и сам After: Survival, с которого все началось тем более, что все наработки сохранились, необходимо просто их перенести на новую кодовую базу. С собственным шрифтом я так и сделал - взял за основу старый код и прикрутил к нему метод загрузки из туториала по LWJGL. В оригинале тутора шрифт был одноцветным и на черном фоне, я довел его до того вида, что есть сейчас. И т.д. Из последних нововведений за сегодняшнюю ночь:
- Улучшено качество кода. Унифицирована структура проекта
- Добавлено ведение лога в файл
- Добавлено наложение водяного знака на скриншот
- Доработан Launcher в сторону дальнейшего упрощения прикручивания новых настроек
Cybermax ты про какую версию? для старой нужен мобильник или эмулятор J2ME на комп, типа Kemulator. Для новой нужен JRE7 x64, так как движок был полностью перенесен на компьютерную яву. Билд для компа: http://kiqsite.wen.ru/after/res/dis...istributive.rar
По поводу исключительно x64 - я ЗНАЮ, как сделать автоматическую подгрузку библиотеки соответствующей битности, но из-за глюков антивируса у меня все другие версии dll, кроме x64, удаляются сразу после распаковки, поэтому потестить и положить их в билд я не могу, займусь этим, когда разберусь с антивирусом
Итак, новый билд уже здесь
- Автоопределение платформы (Windows, Linux, x86, x64)
- Исправлены баги
- Улучшено качество кода, унифицирована структура проекта.
- Добавлено ведение лога в файл
- Добавлен встроенный скриншотер (F5)
- Починен и доработан Launcher
- Самописная простенькая геометрия объектов. Для каждого объекта задается два объема - реальный и физический, при этом реальный объем - это размер кадра спрайта, а физический релятивно привязывается к нулевым координатам реального, то есть при его задании можно писать нечто вроде (50, 50, 50, 50) - первые два параметра это отступ от верхнего левого угла. Ну, в демке видно - реальный желтым, а физический зеленым или красным в случае коллизии
- Взаимодействие с игроком теперь полностью происходит вне движка, на данный момент в классе HUD. Это позволило значительно почистить код движка
-В связи с предыдущим пунктом добавлены такие методы как world.getActor() и world.setActor(AFTPointObject actor), которые устанавливают контроль над каким-либо объектом со стороны игрока
- Добавлен спринт (SHIFT)
- Возвращено отсечение невидимых объектов
- Добавлен новый объект - ящик
- Добавлена демонстрация динамического прицела - он расширяется, когда вы двигаетесь, а при наведении на ящик - меняет иконку
- Мелкие внутренние доработки
Свежая версия
- Починена загрузка нативных библиотек
- Исправлены мелкие баги
- Переделана система HUD и GUI в сторону расширения функциональности и удобства работы
- Добавлены AFTGuiText и AFTGuiTextBox для вывода текста
- Убрана еще пачка зависимостей от AWT
Свежая версия. Добавлены две значительные фичи
- Добавлена колоизация в двух вариантах - Rectangle и Circle
- Переписана камера - теперь она "плавающая", то есть следует за персонажем, при этом обзор чуть лучше в направлении взгляда. Так же засчет этого убран "шум", возникающий при столкновении с объектами, когда камеру начинало колбасить.
- Добавлен SlidePopup при наведении на дерево (просто ради демонстрации текущих возможностей GUI)
- Исправлены некоторые досадные косяки
Итак, работа движется. Что уже сделано:
- Добавлена достаточно мощная система AI (в плане движковой реализации, а умных ботов уже пусть потом кто-нибудь напишет)
- Рендерер практически полностью переведен на шейдеры.
- Мягкий свет - размытие лайтмапы по гауссу
- В игровой библиотеке теперь взаимодействовать с объектами можно только с определенного расстояния
- Полностью переписаны матрицы и трансформации в соответствии со стандартом OpenGL для нативной совместимости с GLSL (ох, сколько я на это нервов убил :zloj: )
- Убраны префиксы из названий классов, PointObject и TiledObject переименованы в Entity и Terrain соответственно
- Из рендерера убраны ненужные функции (еще не все) и добавлены удобные новые, в основном для GUI - drawPoint, drawStraight(рисует прямую в указанном направлении с указанной длинной)
Планы вообщем-то грандиозные, в частности перевести все на pointer'ы, добавить тени. Так же планирую уже начать пилить SDK
Записал пока-что видос с плавной сменой дня и ночи:
ComradeAndrew пока что нет, ибо все методы 2D теней, которые я видел все равно ориентируются на полигональные объекты. Я сейчас делаю расчет построения полигональной фигуры на основе спрайта, по методу поиска границ
У меня почему-то на E не юзается ничего.
При подходе к краю карты точка относительно которой поворачиваешь направление взгляда игрока мышкой смещается, т.е. не продвигается вместе с камерой и получается такой момент, когда курсор справа игрока, а игрок смотрит влево. Возникает в фулскрине.
И ещё не очень юзерфрендли управление - откидывание курсора при прохождении через игрока(когда он поворачивается). Да в общем-то любое неконтролируемое смещение курсора игрока во время непосредственно игры - не очень приятно.
ComradeAndrew на Е пока ничего и не юзается, это просто демонстрация всплывающей подсказки Края карты это да, я там сделал ограничение камеры, чтобы она за пределы уровня не вылетала, но это дает такой вот эффект. Курсор никуда не откидывается, это камера съезжает по направлению взгляда, так и должно быть
ComradeAndrew никто не мешает создать в игровой библиотеке класс, производный от камеры, и оверрайдить метод update() Мне нравится такая камера, но можно вместо
и все, камера будет жестко закреплена в центре персонажа, за исключением ограничения по краям уровня. Но можно в init() в своем классе камеры добавить строчку
C++ Source Code:
checkworld = false;
и проверка на выход за границы мира осуществляться не будет и мы получим что-то вроде этого:
Свежая демка
- Исправлено освещение, теперь все источники света правильно попадают в поле зрения
- Значительно доработана консоль. Появилось автодополнение на Tab, причем, если найдена одна команда, она сразу вставляется в строку ввода, а если несколько, на первый Tab выводится список доступных команд, а на второй - вставляется первая из них. Также теперь при вводе любой команды без аргументов выводится ее текущее значение. Доступные команды: exit - выход, debug_draw 0|1 - включает отключает отрисовку BBOX, CBOX и VBOX, light_draw 0|1 - при нуле будет эффект fullbright, time N - позволяет задать время (только час, минуты автоматически обнулятся)
- Стандартные коллекции в большинстве случаев заменены узкоспециализированными аналогами, что значительно повысило скорость работы засчет отсутствия постоянного приведения типов.
- Начато имплементирование визуальных слоев, пока еще на начальном этапе, но затем это позволит делать перекрываемые сверху источники света, например. Внутри слоя объекты сортируются по полю height - условной высоте, чем выше, тем ближе к нам он рисуется.
- Добавлен класс StringUtils, предоставляющий удобную и быструю работу со строками (активно используется в коде консоли, например).
- Доработан графический конвеер, теперь все debug боксы рисуются поверх освещения