Перейти к содержанию

finfan

Новичок
  • Публикаций

    6
  • Зарегистрирован

  • Посещение

  • Отзывы

    0%

Сообщения, опубликованные finfan


  1. Доброго времени суток друзья!
    Есть на руках эмулятор, который разрабатывался с 2014 года.
    На данный момент эмулятор разрабатывается в закрытом режиме. Мы ищем 5 человек, которые получат его бесплатно в замен на фидбэк (тестинг).

    Язык: Java, Groovy

    Основные фишки:

    • Реализация GameWorld'ов (аналог инстансов)
    • Новый движок зон
    • Шаблонизатор velocity для билда ваших любимых HTML
    • КаГ на оффе спавн
    • ACP из коробки
    • Божественный чат фильтр
    • Вменяемые формулы (не все xD)
    • DROP каГ на оффе
    • Поддержка fence
    • Dependly inject
    • Божественный рефактор global AI (вменяемый)
    • Поддержка модулей (extensions)
    • Существенное улучшение сетевого потока (позволяет держать больше игроков с наименьшими лагами у клиента)
    • И т.д. т.к. вы всё равно не получите исходы, вам не надо знать больше ;D!

    Дальнейшие планы:

    • Полный рефактор работы с базой и подключение хибернейт (люди смогут безболезненно поменять базу данных с MySQL на Postgres или любую другую)
    • Реврайт всех дверей, т.к. сейчас они не очень лол ;D
    • Замки/Форты и их осады
    • Party система
    • Кланы
    • Олимпиада (вынос её в отдельный модуль)
    • REST API

    Модульные (то что можно подключать и отключать - как плагины) проекты:

    • Олимпиада
    • "Combo Breaker!"
    • "Пикачу я выбираю тебя!"
    • "Вызов дерзости"
    • "Hunter X Hunter"
    • "Dynamic Environment"
    • "C.H.A.S.E.R."
    • "Reaper"
    • "Fairy Arcana"

    P.S. Чуть не забыл, ВСЕ фидбэкеры будут получать обновления БЕСПЛАТНО, БЕЗ РЕГИСТРАЦИИ и СМС.

    • Like 1

  2. 1 час назад, Mangol сказал:

    В 3 варианте необходимо использовать методы которые обеспечивают thread safe. Может выйти так, что смерть сразу 2-ух игроков, и один из них притянет уже старый кэш. Отсюда уже будут проблемы.

    Можно тогда переменную counter сделать volatile и по плану всё будет нормально ;D либо синхронайз запулять там где нужно, хотя всё это - дерьмо, лучший вариант это листенер ;D


  3. Это просто примеры, вам надо смотреть конкретно свою реализацию.

    Вариант 1:

    int counter = registeredPlayers.size();
    for(Player next : registeredPlayers) {
    	if(next.isDead()) 
    		counter--;
    }
    
    if(counter <= 1) {
      //завершаем эвент
    }

     

    Вариант 2:

    //изначально имеем слушатель или костыль типо слушателя, который записывает данные. Лучший вариант
    
    void onPlayerDie(Player participiant) {
      // удаляем участника из листа если он отъехал
    	registeredPlayers.remove(participiant);
    	if(registeredPlayers.size() <= 1) {
         	//завершаем эвент 
        }
    }

     

    Вариант 3:

    // у нас в эвенте есть прееменная
    private int counter;
    
    // которая считает убитых при их смерти
    counter++;
    
    //и ещё есть максимальное кол-во участников в текущем эвенте
    private static final MAX_PLAYERS = 20;
    
    // определяем после counter++ есть ли победитель?
    boolean hasWinner = MAX_PLAYER - counter <= 1;
    if(hasWinner) {
    	//то завершаем эвент
    }

     

    Хороший Тон - Слушатель, т.к. нет особой вылазки в код. Не надо конкретно лазить в Event код чтобы менять что-то внутри его функционала.

×
×
  • Создать...