САБ - прогресс

Обсуждение работы движка сервера. Ваши предложения по улучшению игры. Вопросы по интерфейсу и механике игры

Модератор: Gorlum

Ответить
Gorlum
Император Вселенной
Сообщения: 7526
Зарегистрирован: 13 июн 2009, 15:06
Контактная информация:

САБ - прогресс

Сообщение Gorlum »

Решил создать тему, что бы держать людей в курсе, как движется написание САБа. И что бы не задрачивали по десять раз с одними и теми же вопросами!
  • Checklist:
  • Модифицировать боевой движок с учетом САБа
  • Переписать алгоритм расчета лута с учетом САБа
  • Протестировать модификации в боевом движке и алгоритме лута
  • Создание записей САБа в таблице AKS (пул флотов на одну атаку) для всех флотов
  • Отделить темплейты от кода в части управления флотом
  • Присоединение флота к существующему пулу
  • Интерфейс присоединение флота к существующему пулу
  • Учет флотов-защитников при атака САБом
  • Переписать боевой отчет с учетом САБа
Gorlum
Император Вселенной
Сообщения: 7526
Зарегистрирован: 13 июн 2009, 15:06
Контактная информация:

Re: САБ - прогресс

Сообщение Gorlum »

Сегодня на сервер установлен новый скрипт обсчета лута. Состояние сервера будет сохранено и в случае серьезных проблем будет сделан откат. Результаты тестирования предполагается подитожить завтра вечером.
  • Новая система обсчета лута выглядит следующим образом:
  • С планеты нельзя вывести больше, чем по половине каждого ресурса
  • При грабеже ресурсы загружаются на борт с учетом соотношения на планете. Например, если на планете 10к металлов и 20к кристаллов, то на каждую часть вывезенного металла будет вывезено 2 части кристаллов
  • Пример: на планете 10к металла, 20к кристаллов и 5к дейтрия. Емкость флота - 20к. Будет загружено 5к металла, 10к кристаллов и 2,5к дейтрия (всего - 17,5к).
  • Если в том же случае емкость флота будет 10к, будет загружено 2857 металла, 5714 кристаллов и 1428 дейтрия.
Gorlum
Император Вселенной
Сообщения: 7526
Зарегистрирован: 13 июн 2009, 15:06
Контактная информация:

Re: САБ - прогресс

Сообщение Gorlum »

Скрипт лута признан рабочим. Всем пострадавшим от глюков скрипта количество XP за рейды восстановлено.

Переходим к следующей фазе.
Gorlum
Император Вселенной
Сообщения: 7526
Зарегистрирован: 13 июн 2009, 15:06
Контактная информация:

Re: САБ - прогресс

Сообщение Gorlum »

ЫЫЫЫЫЫЫЫЫЫЫЫЫ (бьется головой об стенку)

Вам кто-то говорил, что оГейм - модульный и скиновый? Плюньте ему в морду!

Потратил почти весь день на то, что бы отделить на странице fleet.php код от оформления, выкинуть ненужные куски и привести файл к читабельному виду. А таких файлов 4 - т.е. еще три. Плюс - собственно файл работы с САБом. Там вообще пиздец - четыре разных человека писали минимум. Без комментариев (комментарии на француском не считаются). О какой-либо реюзабельности кода нет и речи. И вообще - про качество кода хочется сложить длинную, печальную, матерную балладу.

В очередной раз не понял, как вообще работал САБ раньше - он не мог работать в принципе! Боевой движок ждет данных в одном формате, САБ отдает их совсем в другом. Хотя бы в одни и те же таблицы отдает - уже хорошо... Ну и попытки записать строковые переменный в таблицу БД в поле типа INTEGER - поразили до глубины души.

Осознал всю наивность первой попытки переписать САБ с использованием готовых кусков.
Осознал всю наивность второй попытки переписать САБ с нуля и потом его аккуратно подключить.
В общем - только сначала разгрести старый код, потом понять, как оно должно было работать и только потом медленно, печально и аккуратно править. Про оптимизацию вообще молчу.
Gorlum
Император Вселенной
Сообщения: 7526
Зарегистрирован: 13 июн 2009, 15:06
Контактная информация:

Re: САБ - прогресс

Сообщение Gorlum »

Н-да. По всему коду оГейма видно, что хотели как лучше - а получилось как всегда.

Вот вроде есть темплейты. Только толку с них - чуть более, чем никакого. Потому что отсутствуют в темплейтах операторы условного выбора. Т.е. если нужно в одном и том же темплейте написать в одном случае "ДА", а в другом - "НЕТ" - приходится выворачиваться. Например, делать обе надписи и только одну делать видимой в браузере средствами CSS. Либо использовать два разных темплейта. Либо хреначить напрямую в темплейт код, сгенеренный в PHP. Последнее - самое удобное, но целиком перечеркивает саму идею темплейтов. Делать два темплейта, отличающихся одной строчкой, а потом поддерживать их синхронность - тоже не очень хорошо. Ну и наконец, выводить оба варианта и управлять их видимостью как-то не совсем отвечает идее темплейтов. Т.е. темплейты вроде как и есть - а на самом деле они как бы для галочки. Тем более, что сейчас доступен один-единственный темплейт и приципиально других я как бы и не видел.

И так - везде.
Gorlum
Император Вселенной
Сообщения: 7526
Зарегистрирован: 13 июн 2009, 15:06
Контактная информация:

Re: САБ - прогресс

Сообщение Gorlum »

(рыдает) Будь проклят тот день, когда я услышал об этом оГейме!

Для тех, кто понимает: вот кусок кода:

Код: Выделить всё

$select       = doquery("SELECT * FROM {{table}}", "planets");
  while ($row = mysql_fetch_array($select)) {
    if ($galaxy     == $row['galaxy'] &&
      $system     == $row['system'] &&
      $planet     == $row['planet'] &&
      $planettype == $row['planet_type']) {
      if ($row['id_owner'] == $user['id']) {
        $YourPlanet = true;
        $UsedPlanet = true;
      } else {
        $UsedPlanet = true;
      }
      break;
    }
  }
На секундочку - (galaxy, system, planet, planet_type) - это, фактически ключи в таблице! А уже с (id_owner) - уникальный ключ.

Для остальных - поиск в таблице БД по критерию ведется ПОЛНЫМ ПЕРЕБОРОМ!
Gorlum
Император Вселенной
Сообщения: 7526
Зарегистрирован: 13 июн 2009, 15:06
Контактная информация:

Re: САБ - прогресс

Сообщение Gorlum »

Еще чудо-кусок кода

Код: Выделить всё

  if ($MyGameLevel > ($HeGameLevel * $protectionmulti) AND
    $TargetPlanet['id_owner'] != '' AND
    $protection           == 1  AND
    $target_mission       == 1  AND
    $HeGameLevel < ($protectiontime * 1000)) {
    message("<font color=\"lime\"><b>".$lang['fl_noob_mess_n']."</b></font>", $lang['fl_noob_title'], "fleet." . $phpEx, 2);
  }

  if ($MyGameLevel > ($HeGameLevel * $protectionmulti) AND
    $TargetPlanet['id_owner'] != '' AND
    $protection           == 1  AND
    $target_mission       == 5  AND
    $HeGameLevel < ($protectiontime * 1000)) {
    message("<font color=\"lime\"><b>".$lang['fl_noob_mess_n']."</b></font>", $lang['fl_noob_title'], "fleet." . $phpEx, 2);
  }

  if ($MyGameLevel > ($HeGameLevel * $protectionmulti) AND
    $TargetPlanet['id_owner'] != '' AND
    $protection           == 1  AND
    $target_mission       == 6  AND
    $HeGameLevel < ($protectiontime * 1000)) {
    message("<font color=\"lime\"><b>".$lang['fl_noob_mess_n']."</b></font>", $lang['fl_noob_title'], "fleet." . $phpEx, 2);
  }

  if (($MyGameLevel * $protectionmulti) < $HeGameLevel AND
    $TargetPlanet['id_owner'] != '' AND
    $protection           == 1  AND
    $target_mission       == 1  AND
    $MyGameLevel < ($protectiontime * 1000)) {
    message("<font color=\"lime\"><b>".$lang['fl_noob_mess_n']."</b></font>", $lang['fl_noob_title'], "fleet." . $phpEx, 2);
  }

  if (($MyGameLevel * $protectionmulti) < $HeGameLevel AND
    $TargetPlanet['id_owner'] != '' AND
    $protection           == 1  AND
    $target_mission       == 5  AND
    $MyGameLevel < ($protectiontime * 1000)) {
    message("<font color=\"lime\"><b>".$lang['fl_noob_mess_n']."</b></font>", $lang['fl_noob_title'], "fleet." . $phpEx, 2);
  }

  if (($MyGameLevel * $protectionmulti) < $HeGameLevel AND
    $TargetPlanet['id_owner'] != '' AND
    $protection           == 1  AND
    $target_mission       == 6  AND
    $MyGameLevel < ($protectiontime * 1000)) {
    message("<font color=\"lime\"><b>".$lang['fl_noob_mess_n']."</b></font>", $lang['fl_noob_title'], "fleet." . $phpEx, 2);
  }
Какой класс? 9? или 8й? Ибо даже абитура уже так не пишет, не говоря о первокурсниках. Типичный говнокод - размноженный методом копи & пасте.

Это если принять во внимание, что код попросту нерабочий. Найдите в нем одну ошибку, повторенную шесть раз. Она неочевидна, но присмотритесь к названиям переменных. Это к вопросу, почему нубзащита работает так странно...
Gorlum
Император Вселенной
Сообщения: 7526
Зарегистрирован: 13 июн 2009, 15:06
Контактная информация:

Re: САБ - прогресс

Сообщение Gorlum »

САБ - запущен.
Ответить

Вернуться в «Движок сервера: жалобы и предложения»