Войти
ПроектыФорумОцените

[2d] Infinite world [sandbox, multiplayer]

Страницы: 1 2 Следующая »
#0
1:39, 9 апр. 2013

Название: Infinite World
Используемый ЯП, библиотеки: JAVA; Netty, Slick2d, Twl;
Жанр: сандбокс с элементами рпг
Команда: Пока всё делаю сам.
Исходный код: https://code.google.com/p/infinite-world/
Описание: двухмерный сандбокс с тайловым миром, с элементами рпг, выполненный в многопользовательском режиме.
Строить, разрушать, воевать, изучать - всё это будет возможно в игре.

Реализовано:
- смена дня\ночи
- строительство
- крафт
- генерация локаций
- освещение(тестовая версия)
- хар-ки персонажей и прокачка
- физика воды
- интерфейс
- нпц, и зачатки AI

Ближайшие цели:
- Сохранение мира, и персонажей при выходе, с ипользованием БД, или без.
- Оптимизация трафика
- AI нпц, текущий AI никуда не годится
- наполнение рецептами, предметами, объектами (флора и фауна), и прочее

Видео:

+ Показать

Скриншоты:
+ Показать

Пример генерируемого мира(Осторожно! Большая картинка!):
+ Показать

Демо-версия:
Запускаться сервер и клиент должны через .jar, но если с этим какие-то проблемы - присутствуют батники.
Внимание! игра работает только с запущенным сервером.
Внимание! для запуска игры нужен установленный JRE 1.7(java runtime environment)
Изначально сетевые настройки стоят на localhost, но их можно поменять в файлах netconfig.ini
Ссылка

Требуются:
Художник, т.к. вся графика так или иначе взята с интернета. Оплачивать нечем, могу обещать увековечить имя героя в титрах :)


#1
11:28, 9 апр. 2013

Во-первых, хочу высказать своё уважение по поводу объёма проделанной работы.

Во-вторых, так как сам уже около года занимаюсь с игрушкой на Slick2d, TWL, Netty, могу помочь советами.

А так, было бы неплохо, если бы был запущенный сервер в инете (всякие германские выделенные сервера стоят около 200 р в месяц), со страницей с апплетом. Я понимаю, что тут многие начнут плеваться "Java умерла, апплеты в аду" и тд, но всё равно так будет удобней тем, кто может себе позволить его запустить.

По поводу библиотек: сам я отказался месяца три назад от связки Slick2d+TWL по нескольким причинам:

1) Slick2d мёртв или медленно умирает. Его создатель забил на него года три назад, насколько я помню.
2) Производительность у этого движка достаточно слабая, есть вещи, которые при том же количестве спрайтов и в той же Java+LWJGL дают раз в 12 больше FPS
3) Крайне неудобно портировать на андроид. SlickAE, конечно, существует, но его производительность ещё хуже, чем у оригинального Slick2d, так как он работает ещё выше на слой (тк он - обёртка вокруг libGDX)
4) Создание темы в TWL Theme Editor (Насколько я понимаю, твои окошки - это стыренная его тема) - отдельный род извращений, как и использование его в коде. Крайне много вещей работают, по-моему, совсем неочевидно.
5) Лучше код писать под JRE/JDK 1.6, так как всякие вещи вроде Android, GWT и прочая и прочая поддерживают в основном эту версию, а особо крутых вещей там вроде не добавлялось. В любом случае, работать оно будет в JRE 1.7 так же, а возможностей портирования будет гораздо больше.

Кстати, если нравится Java, написание игр и TBS а-ля Герои 3 и Battle for Wesnoth, можешь написать в личку. И да, у нас есть художник.
#2
11:42, 9 апр. 2013

JohnLivingston
> А так, было бы неплохо, если бы был запущенный сервер в инете (всякие
> германские выделенные сервера стоят около 200 р в месяц), со страницей с
> апплетом.
Думал об этом - будет, но позже.

От Slick2d отказываться буду, на нём не так много сделано. TWL останется, т.к. привязывается как в LWJGL, так и к libgdx.

JohnLivingston
> 4) Создание темы в TWL Theme Editor (Насколько я понимаю, твои окошки - это
> стыренная его тема)
Да, темы, а точнее бекграунды его, но всё написано кодом, и xml, редактором не пользовался.

JohnLivingston
> Лучше код писать под JRE/JDK 1.6, так как всякие вещи вроде Android, GWT
Спасибо, не знал что андроиды и GWT 1.6 кушают. Не думаю, что это вызовет затруднения.

#3
14:36, 9 апр. 2013

Cо связкой TWL+libGDX всё далеко не так просто, как кажется. Дело в том, что когда-то давно, на заре создания libGDX, TWL был выбран в качестве гуя. Но тут есть такая проблема, о которой нужно помнить всегда, когда работаешь с libGDX: каждая следующая версия отличается от предыдущей как небо от земли. Код, который компилировался в 0.9.5 может не заработать в 0.9.6. В то же время по всему интернету остаются руководства, сделанные для очень старых версий, но выпадающие в поиске как релевантные. Из-за этого и у меня сложилось в начале впечатление, что libGDX+TWL = рабочая связка, но потом...

Вот ссылка на сообщение из официального блога от 18 декабря 2011 года.

Если коротко, TWL is deprecated. Он использует java.beans, что местами мешает его использовать. В общем, лучше прочесть текст по ссылке. Они отказались от TWL в пользу scene2d.ui. И это, кстати, правда удобная штука.

#4
23:47, 9 апр. 2013

JohnLivingston
> Cо связкой TWL+libGDX всё далеко не так просто, как кажется
Не знал, спасибо. В любом случае мне нравится архитектура слика, хоть его и забросили.
Пока его производительность или возможности не станут узким местом - останусь на нём.

Пока занимаюсь утечками на сервере, их навалом. Вот например, с начала до 1 минуты загрузка сервера, и его простой. После - заход клиента :) С 2-х минут выход, и снова вход
потом GC периодически чистит, но хотелось бы уменьшить работу GC

+ Показать

#5
16:46, 10 апр. 2013

а из-за чего у тебя сервер жрёт такое количество памяти? Как ты хранишь/записываешь/передаёшь карту игроку? А то я просто не понимаю, откуда такой дикий расход памяти.

#6
21:22, 10 апр. 2013

x-and
Идея отличная, много народу осталось после terraria, кто хотел бы продолжение.

#7
3:07, 11 апр. 2013

JohnLivingston
> а из-за чего у тебя сервер жрёт такое количество памяти?
> Как ты хранишь/записываешь/передаёшь карту игроку?
На первый вопрос ответа нет. Тестирую, ищу. Это не нпц, не физика воды, даже не включение карт при входе игрока. Где-то в обработке игрока видимо.
Отсылаю всё пакетами, через собственную надстройку над нетти. Но она не ест столько, изначально тестировал огромными количествами пакетов - работало нормально.
Второй вопрос очень ёмкий. В двух словах - мир состоит карт(чанков). Карта это набор блоков (128х512), каждый блок - объект. Отсылаю игроку всю карту при входе небольшими пакетами по 16х16 блоков.

UnitPoint
> Идея отличная, много народу осталось после terraria, кто хотел бы продолжение.
До такой игры мне просто нереально далеко. Но стараюсь!


Нашел пару мест, график использования памяти выглядит уже лучше. Но всё еще далёк от идеала.

#8
10:57, 12 апр. 2013

А как у тебя сообщения превращаются в байты? Как именно идёт сама запись на диск/в сообщение? Serializable? Externalizable?

Если будет не влом - почитаю код, посмотрю, в чём дело. Но, скорее всего, будет влом. Надо свой проект делать.

#9
13:09, 12 апр. 2013

JohnLivingston
> А как у тебя сообщения превращаются в байты? Как именно идёт сама запись на
> диск/в сообщение? Serializable? Externalizable?
Нет, стандартными средствами делать не стал. передаю только нужное. приведу пару листингов,думаю всё станет на свои места:
Осторожно! Много текста

+ Показать

Это первый раз, когда я кому-либо показываю свой код.
#10
8:19, 14 апр. 2013

Сделал тест-кейсы для своего сетевого фреймворка - да, немного памяти кушает, gc тихонько работает, всё хорошо. Событий записи\чтения примерно в 10 раз больше, чем в игре, но там всё плохо :) Танцы с бубном мне видимо еще надолго обеспечены...

#11
16:32, 14 апр. 2013

Очень здорово, успехов!

#12
15:17, 16 апр. 2013

На утечку памяти сделал костыль, каждые 10-20 сек запускаю gc.
Последние изменения:
- Убрано мерцание освещения.
- Исправлено запас дыхания не опускался до 0.
- Исправлено текучая сверху вода не давала игроку двигаться\прыгать
- Исправлено без введенного пароля нельзя войти в игру
- Исправлено инфа о ударе и воскрешении больше не выкидывает клиент

Maugan Ra
> Очень здорово, успехов!
Спасибо, стараюсь!

#13
0:45, 29 апр. 2013

Изменения:
- Система погоды, в совсем тестовом режиме.
- Начаты работы с базой данных, подключение к ней.
- Сохранение\загрузка карт - начата работа.
- При входе проверяется пароль, и выдается ошибка.
- Карты сохраняются\загружаются как положено.
- Сохранение\загрузка нпц.
- Исправлены мелкие баги с паденим сервера, и клиента.
- Карты сохраняются автоматически, каждые 10-15 минут, включая все объекты
внутри карты. Работает только, когда карта активна( в ней есть игроки)
- Исправлен баг со статическими объектами.
- Добавлена сохранение\загрузка статичных объектов в БД (флора, предметы, факелы
и тд)

Видео с погодными условиями:

+ Показать

Из изменений главное - персонаж, его характеристики, инвентарь теперь сохраняются. Окружающий мир тоже, а это значит, что приближается тот час, когда сервер будет запущен на постоянной основе. ^_^

WiP игрового апплета

+ Показать

#14
0:59, 30 апр. 2013

На завтра (23-00) по мск намечен небольшой тест. Ссылка на клиент и входные данные будут за пару часов до теста.

Страницы: 1 2 Следующая »
ПроектыФорумОцените

Тема в архиве.