Показать сообщение отдельно
Непрочитано 27.01.2014, 21:40   #1
Пользователь

Автор темы (Топик Стартер) Open source Blade & Soul Scala Server Emulator

Git репозиторий:
https://github.com/HeXLaB/play.bns
Перенос еще не закончен, и продолжается прямо сейчас.

// ---------------------------------------------------------------------------------------

http://goo.gl/VwnNfK

Наш апдейтер, для тех кому нужен последний клиент работающий с нашей сборкой. Он регулярно обновляется и соответствует поддержке сервера.

По умолчанию апдейтер качает в папку .target рядом с ним.

Как указать папку куда качать клиент? Есть 2 варианта.

Вариант первый:

bns.updater.exe -t куда_качаем

Вариант второй:
* запускаем bns.updater.exe
* выключаем
* открываем config.json (должен создатся рядом с bns.updater.exe)
* заменяем .target на желаемый путь
* запускаем bns.updater.exe

VirusTotal: report

// ---------------------------------------------------------------------------------------

Итак, с чего же начать..., пожалуй начну с того что я являюсь членом закрытой команды разработки Blade & Soul. Но есть желание разрабатывать Blade & Soul как open source проект. Почему open source? Просто потому что проект само собой огромный, естественно он требует огромного количества ресурсов. Конечно можно насобирать такое количество ресурсов если есть хорошее финансирование, или программисты работают за хлеб, хм, может быть обратится к индусам(слышал они работают за копейки)? Нет, пожалуй давайте лучше создадим open source проект.

Какие у нас цели:
1) конечно же создать эмулятор Blade & Soul в всей его полноте
2) создать масштабируемую платформу
3) использовать как можно меньше shared-state
4) вывести эмуле-строение на новый уровень
5) избегать глобальных сервисов
6) для разработчиков скриптов/ДП должен быть удобное API без необходимости использовать synchronized..., Atomic..., Thread..., Unmodifiable etc
7) "just-in-time development" (термин сам придумал ), расширяем, пишем скрипты без необходимости перекомпилировать/перезапускать сервер. Почти как WYSIWYG

Что у нас уже есть:
1) рабочий сервер авторизации
2) рабочий лобби сервер
3) рабочий гейм сервер

Технологии которые мы используем:
* Scala http://www.scala-lang.org/
* Maven http://maven.apache.org/
* Akka http://akka.io/
* Slick http://slick.typesafe.com/
* Logback http://logback.qos.ch/

Общая модель:
Код:
                            игровой мир(актор систем)
                    |                                  |
           игровая карта 1 (актор)            игровая карта 2 (актор)
                   инстансы                          инстансы
             игроки, нпц, и тд                 игроки, нпц, и тд

1) все игроки на одной карте/инстансе обрабатываются синхронно
** нету проблем с synchronizatin, deadlocks, memory visibility и тд
2) общение между мирами асинхронно
3) миры могут быть на одном потоке или нескольких (зависит от нагрузки и конфигурации)
4) миры могут быть на одной машине или нескольких (зависит от нагрузки и конфигурации)
5) безболезненное распределение нагрузки
6) это решение проблемы https://forum.zone-game.info/showthread.php?t=33785

ЧАВО:
1) почему Scala, а не Java, C#, С++, Go...
* vs Java - Scala это очень мощный язык, на много мощней Java и намного удобней даже Java 8, не говоря уже о Java 7-, полная совместимость с любыми либами Java
* vs Any - Akka, Slick работают лучше всего/только с Scala
* vs C# - в Scala можно сделать все что есть в C# и даже больше (речь не о Desktop Applications)
* vs C++ - "ресурсов" нужно еще больше...
* vs Go - язык слишком молодой, и я как и язык не готов брать на себя такую ответственность

2) почему open source
* open source проект это лучшее место для обучения и реализации своих идей
* если посмотреть на сферу MMODEV'а а именно Lineage II или Aion имеют огромную историю, четко видно что все именно благодаря такому проекту как
l2jserver -> l2jfree -> l2emu -> l2emu-rt -> l2...
-> Rebellion -> Phoenix -> Overworld ...
и
aionemu -> mir, aionengine, aionlighting
нехилая база, не так ли?
* каждый работающий в сфере Lineage II и Aion имеет работу благодаря выше названным проектам
* возможность каждому (без сомнения) внести свою часть в проект
* open source проекты часто оставляют вне конкуренции любые коммерческие проекты

3) сейчас снова появится 100500 команд и тру девов
это правда и с вероятностью 100% я могу сказать что так и будет, но посмотрите сами, где они сейчас? где тру девы L2 и Aionа? правильно, ушли на помойку туда откуда они и пришли...

4) с какой версией клиента мы работаем
мы работаем с последней версией Корейского клиента

5) я не умею делать это, это и это, что мне делать?
на самом деле работы хватит всем, играя на оф серверах вы можете собирать информацию как работает тот или иной механизм, вы можете анализировать трафик, вы можете собирать дампы трафика с оф серверов, вы можете писать утилиты, вы можете заниматься тестированием реализованных вещей другими людьми, вы можете модерировать тикеты, вы можете предлагать свои идеи, вы можете разбирать клиент на части и искать в нем полезную информацию, и в конце концов вы можете поднимать боевой дух команды! что очень важно!

------

Hm, how to start..., let's start with introducing myself, I'm member of closed-source Blade & Soul development team. But I have a great desire to develop Blade & Soul as open source project. Why open source? Just because project itself is huge, of course it requires huge amount of resources. Of course you can collect such a huge amount of resources if you have a lot of money or programmers work for a piece of bread No, let's create open source project.
Our aims:
1) of course create Blade & Soul Emulator in its completeness
2) create scalable platform
3) use shared-state as rare as possible
4) bring emulation to new level
5) avoid global services
6) for script developers/DP should be provided useful API without requirement how to use synchronized..., Atomic..., Thread..., Unmodifiable etc
7) "just-in-time development" (custom term ), expand, write scripts without any need to rebuild/recompile/rerun application. Almost as WYSIWYG

What we already have:
1) working Auth Server
2) working Lobby Server
3) working Game server

Technologies we use:
* Scala http://www.scala-lang.org/
* Maven http://maven.apache.org/
* Akka http://akka.io/
* Slick http://slick.typesafe.com/
* Logback http://logback.qos.ch/

FAQ:
1) why Scala, but Java, C#, C++, Go...
* vs Java - Scala is very powerful language, much more powerful then Java and much more flexible and useful then Java 8, without even mentioning Java 7-, plus full compatibility with all Java Libraries.
* vs Any - Akka, Slick work better/only with Scala
* vs C# - Scala can do anything C# has and even more (I'm not talking about Desktop Applications)
* vs C++ - you need even more human resources
* vs Go - language is too young, I as well as language is not ready to take such a huge responsibility

2) why open source
* open source project is the best place to study and implement your own ideas
* if you look on MMORPG development sphere you can see that Lineage II as well as Aion have huge history. You can without drought see that because of l2jserver and aionemu we have such a huge heritage. just look:
l2jserver -> l2jfree -> l2emu -> l2emu-rt -> l2...
-> Rebellion -> Phoenix -> Overworld ...
and
aionemu -> mir, aionengine, aionlighting
cool!, isn't it?
* every worker has a job because of projects mentioned above
* everyone (without dough) can contribute!
* open source projects often are leaving out of the competition any commercial projects

3) maybe a lot of fake teams may appear
this is true, this will probably happen, but look, where are they? where these "true" developers? you are right, they are eating rubbish...

4) what client do you use
we use latest Korean client

5) I don't have enough skills but I want to participate, what I can do?
truly everybody can have piece of work, you may play on Live server to collect data, how this or that works, you may analyze traffic, you may collect traffic dumps from Live servers, you may write different utils, you may help to test this or that, you may moderate tickets, you may suggest your ideas, you may analyze client and try to eject useful information, and in the end you can lift the team's morale! that is very important!
__________________
l2jfree | M.O.R.F. | A.P.S. | Aion | GW2 | BnS

Последний раз редактировалось hex1r0; 16.02.2014 в 16:41.
hex1r0 вне форума Ответить с цитированием
Сказали спасибо: