• SiteAnalyzer, технический и SEO-анализ сайтов

Aion 5.8 "Heart of Frost" - Original game server

  • Автор темы Автор темы Dision
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.

Dision

Ефрейтор
Команда форума
VIP
5vqApvI-LXY.jpg


Описание и компоненты продукта
Готовый игровой сервер версии 5.8.0.8
Комплект сервера (Логин сервер, Чат сервер, Игровой сервер)
У серверов общая библиотека Lib
Серверы собраны и работают на языке Java 8+
База данных сервера MySql 8.1
Оригинальная сборка с официальным контентом.
Полностью настраиваемый функционал.

Начинка игрового сервера
Строение даты схожее со строением клиентской даты.
Вся дата спарсена специальными парсерами написанными по строению клиента.
От руки писалась только дата дополнительного контента.
Все расчетные формулы статов предметов их усиление и дополнительные возможности расположены в дате (считываются с оригинальных листов).
Полностью рабочий PVE\PVP контент версии.
Косметическая составляющая на оригинальном уровне (спавны, валкеры, квесты, geo).
Дроп\лут собран по оригинальной версии и работает на двух движках (индивидуальный и глобальный).
Оптимизация ядра на высоком уровне (без утечек памяти и траты лишней).
Так же приведена новая технология разработки кода классов и методов.
Технология Lambda и Stream API.
Дополнительный контент не имеет аналогов в мире фри-серверов (Подробности о контенте на форуме).

Цена сборки без исходного кода: 800$ (Сборка записывается в базу клиентов лицензии)
Цена сборки за исходный код: 1600$

Клиентам 50% скидка на API web приложение

Все обновления выходящие по оригинальному контенту или улучшению и оптимизации кода без платы

Связь
Skype: djneo0066
Mail: djneo0066@gmail.com

Discord: Dision#7358

 
Последнее редактирование:
  • Like
Реакции: WeRn
Стримы с мастерской
 
Последнее редактирование:
Обновление от 14.08.20

Полностью переработана система взаимодействия базы данных с серверами.
Внедрена система управления ОРМ.
Все запросы работают по трем шаблонам.
Модель ОРМ разработана по технологиям Java 8+.
В итоге мы имеем самую быструю работу взаимодействия серверов с базами данных.
Все сервера работают от одной библиотеки.
При написании запросов DAO можно напрочь забыть про обработчики try catch finally.

Пример (Чать запросов из MySQL8ChallengeTasksDAO)
Код:
@Override
	public Map<Integer, ChallengeTask> load(int ownerId, ChallengeType type) {
		Map<Integer, ChallengeTask> tasks = new ConcurrentHashMap<>();
	  
		DB.select(SELECT_QUERY, new ParamReadStH() {

			@Override
			public void setParams(PreparedStatement st, DAOUtils util) throws SQLException {
				util.setInt(ownerId);
				util.setStr(type.toString());
			}

			@Override
			public void handleRead(ResultSet rs, DAOUtils util) throws SQLException {
				while (rs.next()) {
					int taskId = rs.getInt("task_id");
					int questId = rs.getInt("quest_id");
					int completeCount = rs.getInt("complete_count");
					Timestamp date = rs.getTimestamp("complete_time");
					ChallengeQuestTemplate template = DataManager.CHALLENGE_DATA.getQuestByQuestId(questId);
					ChallengeQuest quest = new ChallengeQuest(template, completeCount);
					quest.setPersistentState(PersistentState.UPDATED);
				  
					if (!tasks.containsKey(taskId)) {
						Map<Integer, ChallengeQuest> quests = new HashMap<>(2);
						quests.put(quest.getQuestId(), quest);
						tasks.put(taskId, new ChallengeTask(taskId, ownerId, quests, date));
					}
					else {
						tasks.get(taskId).getQuests().put(questId, quest);
					}
				}
			}
		});
		return tasks;
	}

@Override
	public void storeTask(ChallengeTask task) {
		task.getQuests().values().stream().filter(quest -> quest.getPersistentState() == PersistentState.NEW).forEach(quest -> {
			insertQuestEntry(task, quest);
		});	
		task.getQuests().values().stream().filter(quest -> quest.getPersistentState() == PersistentState.UPDATE_REQUIRED).forEach(quest -> {
			updateQuestEntry(task, quest);
		});
	}

private boolean insertQuestEntry(ChallengeTask task, ChallengeQuest quest) {
		return DB.insertUpdate(INSERT_QUERY, new IUStH() {

			@Override
			public void handleInsertUpdate(PreparedStatement st, DAOUtils util) throws SQLException {
				util.setInt(task.getTaskId());
				util.setInt(quest.getQuestId());
				util.setInt(task.getOwnerId());
				util.setStr(task.getTemplate().getType().toString());
				util.setInt(quest.getCompleteCount());
				util.setTimestamp(task.getCompleteTime());
				st.execute();
				quest.setPersistentState(PersistentState.UPDATED);
			}
		});
	}
 
  • Like
Реакции: WeRn
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху