Страница 1 из 1

SuperNova goes public!

Добавлено: 23 сен 2010, 14:06
Gorlum
"Сверхновая" стала публичным проектом! Загрузить исходный код можно из репозитория
git://github.com/supernova-ws/SuperNova.git

Disclaimer aka Отмазка: Внимание! Проект находится в стадии альфа-версии! В настоящее время он не предназначен для production-использования! Код предоставляется "as-is". Вы используете его на свой страх и риск! Автор не несет ответственности за материальный, моральный, кармический, душевный и любой другой ущерб, причиненный вам от использования, неиспользования, самим фактом существования этого кода или любым другим способом.

Код распространяется под лицензией GNU GENERAL PUBLIC LICENSE Version 2, June 1991. Сама лицензия находится в файле docs/license.txt дистрибутива.

В этом форуме проводится обсуждение проекта пользователями проекта. Администрация оставляет за собой право не отвечать на сообщения.
Замечания по багам в публичной версии движка лучше всего оставлять на github по адресу: http://github.com/supernova-ws/SuperNova/issues

Требования:
MySQL 5.x
PHP >= 5.2.х
Web-server
XCache >= 1.2.х - опционально, но крайне, крайне желательно. Без XCache не будут работать некоторые фишки и заметно возрастет нагрузка на MySQL.
Для работы подсистемы автоматического апдейта и подсистемы кэширования темплейтов должна быть разрешена запись на диск аккаунту веб-сервера

P.S. Я не отвечаю на вопросы: "Что такое git?", "Как поставить эту версию?", "Как настроить веб-сервер?" и прочие. Если вы задаете такой вопрос - вам не подходит эта версия. Впрочем, может быть кто-то из пользователей поделится инструкциями.
P.S.S. Я оказываю платные услуги по установке и настройке "Проекта Сверхновая" на серверах пользователя. Системы - linux/windows плюс вышеизложенные требования.

install.txt

Добавлено: 13 окт 2010, 23:15
Gorlum
Disclaimer aka Отмазка
======================
ВНИМАНИЕ! Проект находится в стадии альфа-версии! В настоящее время он не предназначен для production-использования! Код предоставляется "as-is". Вы используете его на свой страх и риск! Автор не несет ответственности за материальный, моральный, кармический, душевный и любой другой ущерб, причиненный вам от использования, неиспользования, самим фактом существования этого кода или любым другим способом.

ВНИМАНИЕ! Хотя СН является клоном оГейм, она НЕ ЯВЛЯЕТСЯ ОФФЛАЙК! Т.е. многие аспекты игры отличаются как от официального оГейма, так и от RR. Движок изменен, что бы соответствовать моему пониманию об интересной игре. Принимайте это во внимание, когда решаете - устанавливать этот движок себе или нет.

ВНИМАНИЕ! Статус проекта "Сверхновая" - альфа-версия. Практически это означает, что очередной апдейт может полностью изменить отдельный аспект игры.

Примерный план развития движка содержится в файле docs/changelog.todo

Код распространяется под лицензией GNU GENERAL PUBLIC LICENSE Version 2, June 1991. Сама лицензия находится в файле docs/license.txt дистрибутива.


Предуведомления о необходимости наличия квалификации
====================================================
Данные инструкции предполагают умение самостоятельно настроить или использовать сторонний веб-хостинг, знакомство с MySQL и PHP, доступ к инструментам управленя MySQL и хостингом. Если вы не обладаете опытом самостоятельной настройки сайтов - этот дистрибутив вам не подойдет

ВНИМАНИЕ! Я не могу протестировать все возможные комбинации и версии MySQL & PHP & XCache & веб-серверов! Это означает, что при некоторых комбинациях и настройках среды движок может не работать. Именно для этого нужны навыки настройки и конфигурации веб-серверов.


Требования
==========
MySQL 5.x
PHP >= 5.2.х
Web-server
XCache >= 1.2.х - опционально, но крайне, крайне желательно. Без XCache не будут работать некоторые фишки и заметно возрастет нагрузка на MySQL.

Движок разрабатывается под Windows + Apache Friends XAMPP Lite (Basis Package) version 1.7.3 (включен только Apache+PHP+XCache и MySQL). Продакшн крутится под CentOS + lighttpd + XCache.

На localhost движок ВСЕГДА работает в режиме display_errors=1


Расположение движка
===================
В настоящий момент движок может работать только из корневого каталога домена любого уровня. Т.е. он может быть установлен по адресам

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

http://domain.com

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

http://my.very.deep.domain.on.crappy.hoster.org
но не может быть установлен по адресу

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

http://hosting.com/ogame/

Права доступа веб-сервера
=========================
В целом, движок может работать из-под веб-сервера с правами доступа "только на чтение". Однако, для корректной работы отдельных подсистем, аккаунту веб-сервера должна быть разрешена запись в отдельный файлы/папки. Ниже приведен список подсистем и соответствующих файлов/папок
[*] Подсистема кэширования темплейтов - каталог /cache. Без этого темплейты каждый раз будут рендериться заново
[*] Для работы подсистемы защиты от взлома аккаунту веб-сервера должна быть разрешена запись на диск в файл /badqrys.txt. Без этого "плохие" запросы не будут сохранятся


Краткий ликбез по GIT
=====================
Создать локальную копию Сверхновой в текущем каталоге (не забываем точку в конце!):

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

git clone git://github.com/supernova-ws/SuperNova.git .
В текущем каталоге появится самая свежая копия Сверхновой из ветки master. Теперь содержимое нужно скопировать в корневой каталог сервера.
Вообще, рекомендуется делать это сразу на сервере - для избежания проблем с копированием (был уже такой случай). Но не у всех хостеры разрешают запускать локально программы, поэтому можно сначала сделать копию на локальном диске.

Обновить локальную копию Сверхновой:

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

git pull
ВНИМАНИЕ!!! Перед обновленем сервер нужно остановить (в левом меню пункт "Администратор", в админском меню пункт "Настройки", поставить галочку "Отключить игру", нажать кнопку "Сохранить" в самом низу страницы)! Только после этого можно производить обновление - иначе результат может быть далекимот ожидаемого.
Теперь, если у вас включено кэширование темплейтов, нужно удалить все файлы в каталоге cache
Так же рекомендуется зайти один раз на страницу "Обзор планеты", что бы движок обновил БД из-под администратора.
И, наконец, после всех этих действий игру можно опять включить (снять поставленную ранее галочку и сохранить изменения).

Собственно, больше ничего не надо :) Впрочем, если вы занимаетесь модификациями движка, вам пригодится следуюшая команда. Откатить все изменения, сделанные на локальной копии:

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

git reset --hard

Пользовательские модификации
============================
Если вы используете свой скин, темплейт или локализацию, НЕ ИЗМЕНЯЙТЕ ВСТРОЕННЫЕ ФАЙЛЫ! Последующие изменения в репозитории могут перезаписать ваши дополнения! Сделайте копию скина/темплейта/локализации под другим именем и уже с копией веселитесь. Изменить скин/темплейт/локализацию по умолчанию можно на странице конфигурации сервера.


Инсталляция, настройки БД
=========================
ВНИМАНИЕ! Почти все таблицы СН хранятся в формате InnoDB! По умолчанию MySQL НЕ НАСТРОЕН на нормальную работу с базами InnoDB! Дефолтных настроек MySQL хватит на работу до 50 пользователей онлайн. Если вы планируете большее количество одновременных игроков, то вам нужно настроить MySQL в соответствии с вашим сервером.
В качестве ПРИМЕРА привожу настройки MySQL своего сервера (2Гб памяти, сервер выделен исключительно для работы СН и поддерживающего форума)

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

innodb_additional_mem_pool_size 20971520
innodb_buffer_pool_size         536870912
innodb_flush_log_at_trx_commit  0
innodb_flush_method             O_DIRECT
innodb_log_buffer_size          8388608
Особо обращаю внимания на переменные innodb_flush_log_at_trx_commit и innodb_flush_method!


Инсталляция, настройки веб-сервера
==================================
СН рассчитана на использования кэшера оп-кодов xCache. Хотя движок может работать и без него, этот режим не является штатным. Без кэшера оп-кодов некоторые возможности движка будут заблокированы, а так же возрастет нагрузка на MySQL.
Как и любой кэшер оп-кодов, xCache нуждается в особых настройках веб-сервера. Как правильно настроить веб-сервер для работы с xCache можно узнать в интернете (www.google.com) и на домашней странице xCache (http://xcache.lighttpd.net/)


Инсталляция, базовый вариант
============================
1. Создайте БД "supernova" в UTF-8
2. Создайте в MySQL пользователя "supernova_user" и дайте ему все права на базу "supernova"
3. Загрузите в БД файл docs/supernova.sql
4. Скопируйте файл docs/config.php.sample в корневой каталог Сверхновой и переименуйте его в config.php
5. В файле /config.php в строке
"pass" => "MYSQL_PASSWORD", // Пароль доступа MySQL сервера.
замените MYSQL_PASSWORD на пароль пользователя БД
6. В файле /config.php в строке
"secretword" => "SUPERNOVA", // Ключевое слово для создания Cookies
замените SUPERNOVA какой-либо последовательностью символов
7. Загрузите дистрибутив Сверхновой в корневой каталог веб-сервера
8. Зайдите в игру с админскими правами. По умолчанию админский логин/пароль admin/admin
9. Смените пароль администратора на странице /options.php
10. Настройте игру на странице /admin/settings.php
11. Сверхновая готова к запуску!


Инсталляция, продвинутый вариант
================================
Настройки доступа к БД находятся в файле /config.php
Настройки игры находятся в таблице <db_prefix>config. Назначение настроек интуитивно понятны из названий переменных
Так же некоторые настройки игры хранятся в файле /includes/constants.php
Все изменения - на ваш страх и риск


Апгрейд с RR
============
Автоматический апгрейд с баз RR в разработке. Частично апгрейд производится автоматически запуском файла update.php

В СН относительно RR изменено местоположение баннера. Раньше ссылка была
/scripts/createbanner.php
Новая ссылка
/banner.php

Используйте средства веб-сервера (mod_rewrite) для перенаправления запросов. В частности, правило для lighttpd будет следующим:

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

#Redirects old-style banners to new one
server.modules += ( "mod_rewrite" )
url.rewrite-once = (
  "^/scripts/createbanner.php(.*)" => "/banner.php$1"
)

Ссылки
======
Основной сайт проекта: http://supernova.ws

Форумы
------
Форум проекта: http://forum.supernova.ws
Форум поддержки: viewforum.php?f=73
Форум для багрепортов: viewforum.php?f=65

Сверхновая на github
--------------------
Страница проекта: http://github.com/supernova-ws/SuperNova
Репозиторий: git://github.com/supernova-ws/SuperNova.git

Сверхновая на sourceforge
--------------------
Страница проекта: http://sourceforge.net/projects/supernova-ws/
Репозиторий: git://supernova-ws.git.sourceforge.net/gitroot/supernova-ws/supernova-ws


Помощь проекту
==============
Вы можете помочь проекту, отправив WebMoney на кошельки:
WMZ (WM-USD) Z409323360409
WMR (WM-RUB) R961266352219
WMU (WM-UAH) U726314912308

Если вы пользуетесь ВебМанями для покупки различных электронных товаров, то вы можете а) купить привычный электронный товар по хорошей цене б) помочь проекту. http://gorlum.plati.ru - пополнения сотовых, Skype, WoW - игра и ТК и прочие электрические товары за WM. Каждая покупка, сделанная с этого линка, принесет мне небольшие комиссионные.

Помните! Ничто так не укрепляет веру в нужность работы, как пожертвование!


Updated: 2010-10-13 22:39

Re: SuperNova goes public!

Добавлено: 14 окт 2010, 23:41
Gorlum
Исправлена проблема с правами доступа к форуму. Теперь зарегестрированные пользователи могут сюда писать.

О коде Сверхновой

Добавлено: 05 фев 2011, 16:18
Gorlum
Код в Сверхновой делится на несколько частей. Каждая из них имеет свое происхождение, свою идеологию и свою структуру
1. Оригинальный код XNova 0.8b RageRepack v226. Сборная солянка из оригинального кода XNova 0.8b и кучи модов с просторов интеренета, вбитых в оригинальный движок при помощи лома и какой-то матери. Качество варьируется от "хорошого" (очень, очень мало такого кода!) до "ужасного" и попросту "нерабочего". Например, в коде RR ПОЧТИ ВСЕ параметры, попадающие через запросы GET и POST передавались в БД напрямую без какой либо проверки и обработки! В общем - одна сплошная дыра для SQL-injection и радость малолетних хакероидов (школоты, начитавшейся журнала "Хакер").

2. Этап "совместимости" (от запуска сервера в июне 2009 и примерно до апреля-мая 2010го). Тогда я максимально старался сохранить обратную совместимость с исходным кодом для более легкого встраивания модов из инета. Но за почти год работы сервера не нашлось ни единого мода, который мне бы захотелось встроить в движок, а геммороя из-за неоптимальной архитектуры и грубой состыковки старых модов было предостаточно. И примерно в это время я решил плюнуть на совместимость с родным движком и начать переписывать код целиком. Качество кода этого этапа так же варьируется от "хорошого" (тоже мало) до "ужасного". Нерабочий код был только в тестовых версиях и фиксился до выкатывания на паблик. Алгоритмы максимально наследуют оригиналу, поэтому если были какие-то логические ошибки в расчетах - они успешно повторялись в новом коде.

3. Этап "пре-паблик" (май 2010 - октябрь 2010). Я плюнул на совместимость и принялся переписывать целые подсистемы. Зачастую происходило так - сообщени о баге или заявка на фишку, я нахожу причину, хватаюсь за голову при виде кода и начинаю переписывать. Так были переписаны Альянсы, Друзья, система отправки флотов и многое-многое другое, включая кучу подсистем. Подробнее можно посмотреть в docs/changelog_dev.txt исходников. Код - от "плохого" в начале этапа до "очень хорошего" в конце. В это же время я начал следовать phpBB Coding Standarts и подключил библиотеку темплейтов от phpBB3. Алгоритмы этого этапа примерно 50 на 50 - половина следует за оригиналом, половина переписывается с нуля.

4. Этап "паблик" (октябрь 2010 - декабрь 2010). Несколько инсталляций и отзывов заставили переработать подсистемы статистики и апдейтера, а так же проработать документацию для сторонних пользователей. Так же отзывы показали, что от унаследованного кода нужно избавлятся полностью. Полурабочие системы регистрации и входа в игру, нерабочая система восстановления паролей, нерабочая очередь построек (отключенная на моих серверах, но включаемая в настройках) и множество других косяков - то, на что я и игроки моих вселенных уже не обращали внимание. Так же обнаружилось несколько неприятных багов, о которых игроки моих серверов не сообщали ни разу. Обнаружилась нестойкость движка к подмену данных на стороне клиента - изначально в RR так же полностью отсутствовала проверка корректности получаемых данных, а сам я очень жестко банил на сервере хакеров и проблема остро не вставала... до начала эксплуатации в других условиях. Заодно стало понятно, что код предыдущих этапов надо переписывать по той же причине. Начал перетрушивать файловую организацию двжка. Чем больше файлов - тем медленнее работает сервер. На моем сервере это незаметно, но на слабеньких серверах, на хостингах и просто на плохо настроенных компьютерах полезли проблемы. Код от "средненького" до "очень хорошего". Почти всё, переписанное или написанное на этом этапе использует мои собственные алгоритмы (там, где это имеет смысл). Остальные алгоритмы либо элементарные, либо модифицированы для увеличения скорости работы.

5. Этап "оптимизации" (начиная с января 2011 года). Нагрузочное тестирование на одном из серверов продемонстрировало полную несостоятельность самой критичной части движка - менеджера летящих флотов - и подтвердило мнение о необходимости полностью избавлятся от унаследованного кода, меняя алгоритмы работы. Собственно, результаты работы этого этапа вы можете наблюдать на сервере. Достаточно сравнить скорость и стабильность работы предыдущей версии и текущего релиза.

В движке СН есть баги - как и в любом программном продукте. По последним прикидкам 80% багов происходят из унаследованного кода (его качество понятно из отсутствия защиты от SQL-injection!), 15% - от кода, писанного на 2-3 этапе разработки (мои глюки, глюки на стыке моего кода с унаследованным, использование неправильных алгоритмов) и 5% привнесены на 4-5 этапах.

Не стоит путать "баги" с "особенностями". Я с самого начала открещивался от оффа. Копировать чужое мне неинтересно. Кроме того, отдельные аспекты оффа вызывали недоумения, вопросы и лично мне портили удовольстви от игры. Я завязал играть на оффе, когда выяснил, что вышедшего из нуб-зоны игрока может атаковать топ-1.
Я меняю те части игры, которые не нравятся лично мне, на те, которые мне нравятся. Т.е. я делаю игру, в которую лично мне интересно играть. Все пожелания и предложения рассматриваются именно в таком ключе - будет ли мне интересно играть в игру с такими изменениями? Например, мне (за небольшим исключением) нравится текущая система расчета боя. Система оГейма мне кажется крайне нелогичной, неинтуитивной и неинтересной. Поэтому я буду доделывать свою систему, а не ориентироваться на офф.

Вообще, статус проекта, как такового - "Альфа". Это значит, что отдельные аспекты игры в ходе разработки могут быть изменены. Планы изменений есть в исходниках - желающие могут с ними ознакомиться.

Надеюсь этот пост снимет большую часть вопросов о проекте.