![]() |
![]() |
![]() |
#1 |
Новичок
Регистрация: 24.03.2010
Сообщений: 23
Сказал(а) спасибо: 7
Поблагодарили 5 раз(а) в 4 сообщениях
![]() |
![]()
Вот, решил начать писать emu пресловутой игры на Java, так как данная игра и язык представляют для меня большой интерес. Хочется совместить приятное с полезным и углублять свои знания в Java. Может кого-нибудь заинтересует моя задумка...
На данный момент удалось реализовать аутентификацию с реалм сервером. Выкладываю исходники своего творения. Прошу строго не судить. [HIDE="Устарело"] Проект переехал с http://github.com/ШтормКоре в http://github.com/JMaNGOS git clone git://github.com/JMaNGOS/storm.git В данный момент проект storm заморожен. UPDATE: storm закрыт полностью все наработки перебрались в JMaNGOS [/HIDE] В свою очередь все наработки были перенесены в новый проект "JMaNGOS". И сейчас все работы ведутся над "JMaNGOS". Проект http://github.com/JMaNGOS git clone git://github.com/JMaNGOS/JMaNGOS.git Последний раз редактировалось mAdloVe; 14.09.2013 в 18:42. Причина: возвращение проекта |
![]() |
![]() |
![]() |
#41 |
Kobold Dev
Регистрация: 29.07.2010
Сообщений: 21
Сказал(а) спасибо: 5
Поблагодарили 2 раз(а) в 2 сообщениях
![]() |
![]()
Над контейнерами и кешированием подумайте.
![]()
__________________
World Database Development Group |
![]() |
![]() |
![]() |
#42 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
![]() ![]() ![]() ![]() ![]() ![]() |
![]()
а чо тут думать, все придумано для нас. для доступа к базе в джаве используют entity или модный нынче hibernate.
dbc - в базу данных. карты - в бинарный формат, но можно тоже в базу (сам у себя пока еще не решил. пока сделан бинарный формат, смысла в sql загонять не увидел.). что имеется ввиду под контейнерами и кешированием? |
![]() |
![]() |
![]() |
#43 |
Гость
Сообщений: n/a
|
![]() |
![]() |
![]() |
#44 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
![]() ![]() ![]() ![]() ![]() ![]() |
![]()
ну не знаю... может и имеет смысл кешировать шаблоны объектов (респонсы), остальное - постоянно изменяющиеся данные. только чего их кешировать, загрузил их в память в виде справочников и все.
|
![]() |
![]() |
![]() |
#45 |
Гость
Сообщений: n/a
|
![]()
to madlove:
вижу мучения автора...возникает вопрос, вы смотрели исходники других мморпг-серверов сделанных на джава? Возможно стоит поглубже покопаться в них? Ведь не сотни человек занимаются разработкой, постоянно рефакторить код - ждать работы еще пяток лет. Возможно стоит пере использовать архитектуру уже рабочего сервера. Не говорю - сделать из линейдж( как пример ) - вов, но все же базовая архитектура ( нио, конфигурация, пулы) может быть, если и не использована, то неплохо изучена на основе других. |
![]() |
![]() |
#46 |
Новичок
Регистрация: 24.03.2010
Сообщений: 23
Сказал(а) спасибо: 7
Поблагодарили 5 раз(а) в 4 сообщениях
![]() |
![]()
to Minimajack:
Ищу новый тут развития. |
![]() |
![]() |
![]() |
#47 |
Умный
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
![]() |
![]() |
![]() |
![]() |
![]() |
#48 |
Гость
Сообщений: n/a
|
![]()
2 mAdloVe :handleLogonProof()
После вычислений не сохраняете SessionKey ( K ) в базу. |
![]() |
![]() |
#49 |
Новичок
Регистрация: 24.03.2010
Сообщений: 23
Сказал(а) спасибо: 7
Поблагодарили 5 раз(а) в 4 сообщениях
![]() |
![]() |
![]() |
![]() |
![]() |
#50 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
![]() ![]() ![]() ![]() ![]() ![]() |
![]()
а их зачем сохранять?
|
![]() |
![]() |
![]() |
#51 |
Гость
Сообщений: n/a
|
![]()
кстати, если будет время - реализуйте все же ThreadPool ...уверен винда в текущей реализации больше 200 клиентов не потянет...уж слишком жирно создавать на каждого клиента по потоку...
а лучше выкинуть половину и реализовать на http://www.jboss.org/netty Последний раз редактировалось Minimajack; 27.07.2011 в 17:15. |
![]() |
Пользователь сказал cпасибо: | mAdloVe (27.07.2011) |
![]() |
#52 | |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
![]() ![]() ![]() ![]() ![]() ![]() |
![]()
в виндах это называется IOCP
Цитата:
![]() Последний раз редактировалось RomanRom2; 27.07.2011 в 17:46. |
|
![]() |
![]() |
![]() |
#53 | |
Гость
Сообщений: n/a
|
![]() Цитата:
Подскажите пожалуйста...клиент серверу отдает полностью пакеты, либо может на кусочки порубать или слить несколько в один? зы кстати тоже подумал о сообщении между логин и гейм серверами... |
|
![]() |
![]() |
#54 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
![]() ![]() ![]() ![]() ![]() ![]() |
![]()
да других вариантов и не дано. логон сервер может быть где угодно в интернете. например в москве. и к нему подключены реалмы из других городов, питер там, казань, новосибирск, красноярск... и чо? из сибири в москву за ключем в базу лазить на 3306 порт?
![]() нее, это неправильно. я изначально спроектировал (и реализовал) полностью динамическую структуру всего игрового сервера (который включает в себя авторизационный сервер (биллинг) и неограниченное число реалмов и батлграундов). все компоненты автоматически регистрируется на своих "аплинках". нуу... я писал об этом на сайте. |
![]() |
![]() |
![]() |
#55 | |
MaNGOS Dev
Регистрация: 08.03.2010
Адрес: Ханты-Мансийск
Сообщений: 28
Сказал(а) спасибо: 27
Поблагодарили 13 раз(а) в 8 сообщениях
![]() |
![]() Цитата:
ORM конечно повышает производительность разработки, но использовать его нужно осторожно. Всё конечно зависит от кривизны, но jdbc всегда быстрее чем ORMы. В любом случае если проект для обучения то hibernate нужно попробовать ![]() Я юзал плагин в еклипсе, он показывал какой в Итоге запрос уходит в БД от ORM, полезная штука оказалсь) |
|
![]() |
![]() |
![]() |
#56 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
![]() ![]() ![]() ![]() ![]() ![]() |
![]()
да хрен его знает почему...
мне часто приходится сталкиваться с тестовыми заданиями для нанимаемых на работу джава программистов. ну типа: 1. Реализация клиент серверного приложения: N-уровневое меню Для реализации использовать Hibernate JPA, Postgresql. Программа должна состоять из серверной и клиентской частей. ... 2. Реализация приложения Чат Необходимо реализовать чат со структурой: страница авторизации; страница регистрации; основная страница; личный кабинет; ... Общие требования: кросс браузерность IE 6-9, Firefox, Chrome, Opera все данные хранятся в БД (Postgres) работа с базой через Hibernate наличие текстового логирования (log4j) |
![]() |
![]() |
![]() |
#57 |
MaNGOS Dev
Регистрация: 08.03.2010
Адрес: Ханты-Мансийск
Сообщений: 28
Сказал(а) спасибо: 27
Поблагодарили 13 раз(а) в 8 сообщениях
![]() |
![]()
да потому что бизнес, побыстрее сделать продукт чтобы начать его продавать, а потом уже думать об оптимизации)
Minimajack советую почитать что такое maven очень полезная штука, если проект настроишь, мне помог в своё время с дипломом, сам всё необходимое скачает и настроеть, главное pom.xml самому настроить, да и к тому же можно на нём генерить проекты для еклипса и для IDEA ![]() Последний раз редактировалось Dereka; 28.07.2011 в 04:19. |
![]() |
![]() |
![]() |
#58 | |
Гость
Сообщений: n/a
|
![]() Цитата:
![]() ![]() |
|
![]() |
![]() |
#59 |
MaNGOS Dev
Регистрация: 08.03.2010
Адрес: Ханты-Мансийск
Сообщений: 28
Сказал(а) спасибо: 27
Поблагодарили 13 раз(а) в 8 сообщениях
![]() |
![]() |
![]() |
![]() |
![]() |
#60 |
Гость
Сообщений: n/a
|
![]()
уперся в буффер...в мангосе под него выделяется 65536 байт, если его не хватает выделяется до 8 мегабайт 128*256*256 (в зависимости от нужд).
как вариант использовать динамический буфер. Возможно у кого то есть статистика среднего размера пакета, что бы память поберечь; или забить и выделять 65 кб динамического буфера, а там как карта ляжет? |
![]() |
![]() |
#61 | |
Умный
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
![]() |
![]() Цитата:
ИМХО 65к это не тот случай который сильно сбережет память ;-) |
|
![]() |
![]() |
![]() |
#62 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
![]() ![]() ![]() ![]() ![]() ![]() |
![]()
такого размера пакеты поперли только тогда, когда ввели ачивки. тогда же и появилась фишка с третим байтом в поле "длина". до того момента пакеты не превышали 16кб. и те - были за редким исключением. средний размер пакета варьировался от 700 байт до 3.5кб.
у себя выделяю 16кб под входящий и 64кб под исходящий буферы. |
![]() |
![]() |
![]() |
#63 |
Гость
Сообщений: n/a
|
![]() |
![]() |
![]() |
#64 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
![]() ![]() ![]() ![]() ![]() ![]() |
![]()
так чо сказать то хотел?
![]() |
![]() |
![]() |
![]() |
#65 |
Гость
Сообщений: n/a
|
![]()
как написать фабрику объектов? желательно через список объектов в хмл.
есть Код:
<opcodes> <opcodelist build="xxxx" path="org.wowemu.realm.network.packet"> <opcode id="0x00" class = "R_CMD_AUTH" direction = "DOWNSTREAM" /> <opcode id="0x01" class = "R_CMD_PROOF" direction = "DOWNSTREAM" /> </opcodelist> ...... </opcodes> зы пора отдохнуть ![]() |
![]() |
![]() |
#66 |
Гость
Сообщений: n/a
|
![]() |
![]() |
![]() |
#67 |
Гость
Сообщений: n/a
|
![]()
Плагин http://sourceforge.net/projects/eclipsecopyrigh/ решает проблемы с добавлением и обновлением копирайтов
|
![]() |
Пользователь сказал cпасибо: | mAdloVe (01.08.2011) |
![]() |
#68 |
Гость
Сообщений: n/a
|
![]()
login.7z (4.06MB)
тестовый вариант, в компилированном виде, т.к. репозитария нет ![]() пока - максимальная совместимость с мангосом, т.е. все ключи в бд. Необходимо доделать пару опкодов( реконнект ) и прикрепить банлист. А то в связи с использованием guice весь код перелопатил, пришлось пока вырубить банлист и сервис обновления( реалмлист не обновляется ). Дома в линуксе с клиентом проверял, на работе клиента нет, да и линукса тоже ![]() зы может кому интересно будет ззы через денек-два файл снесу, а то 4 метра держать на форуме жирно ( файлбим и прочие зарублены на проксе ) ---------------------- архив перезалит |
![]() |
![]() |
#69 | |
Гость
Сообщений: n/a
|
![]() Цитата:
Если на них забить ( ну не часто же происходит перезапуск ) , да и забить на realmlist в БД, то никакого обновления realmlist-а, банлиста из БД тащить не надо будет, открываем еще сокет для реалмов, и спокойненько принимаем с него команды для обновление банлиста и популяции, запроса ключей. Возник вопрос по ходу дела...connection Timeout вообще присутствует как таковой в логин сервере? И если да, то чему равно значение ? ![]() ззы архив в предыдущем сообщении устарел, реализованы 10 основных опкодов для логин сервера, и для совместимости с мангосом добавлен сервис обновления реалмлистов и банлистов... |
|
![]() |
![]() |
#70 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
![]() ![]() ![]() ![]() ![]() ![]() |
![]()
я чото не очень теперь понимаю, кто именно пишет JavaEmu
![]() |
![]() |
![]() |
![]() |
#71 |
Гость
Сообщений: n/a
|
![]()
я тоже хочу подучиться java, вот и пишу по тихому вечерами
![]() mAdloVe - свое, я - свое. Смысл один. Все же ввел понятие совместимости в конфиг Код:
network.compatible = MANGOS
Последний раз редактировалось Minimajack; 03.08.2011 в 16:20. |
![]() |
![]() |
#72 |
Гость
Сообщений: n/a
|
![]()
2mAdloVe
у org.jboss.netty.buffer.ChannelBuffer есть не только readByte() есть и readShort(), readInt(), readLong() etc...сам же выбираешь ByteOrder.LITTLE_ENDIAN ...зачем парится с байтами и сдвигами? |
![]() |
![]() |
#73 |
Новичок
Регистрация: 24.03.2010
Сообщений: 23
Сказал(а) спасибо: 7
Поблагодарили 5 раз(а) в 4 сообщениях
![]() |
![]() |
![]() |
![]() |
![]() |
#74 |
Гость
Сообщений: n/a
|
![]() |
![]() |
![]() |
#75 |
Гость
Сообщений: n/a
|
![]()
текущая версия логин сервера, делается под 3.3.5
не реализовывал только работу с патчами. Не вижу смысла. http://filebeam.com/fb069dfc963d144740eb8188c2faf8c0 под линуксом запускать Код:
java -Xms8m -Xmx32m -ea -cp ./libs/*:wowemu_login.jar org.wowemu.login.loginserver Последний раз редактировалось Minimajack; 04.08.2011 в 07:47. |
![]() |
![]() |
#76 | |
Новичок
Регистрация: 29.04.2010
Сообщений: 11
Сказал(а) спасибо: 18
Поблагодарили 4 раз(а) в 2 сообщениях
![]() |
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#77 |
Гость
Сообщений: n/a
|
![]() |
![]() |
![]() |
#78 |
Гость
Сообщений: n/a
|
![]()
что то я застрял...вроде все нормально, или глаз уже замылен
в общем, делаю реалм... коннект - отсылаю SMSG_AUTH_CHALLENGE приходит CMSG_AUTH_SESSION...проверяю, все гуд, sha1 digest совпадает с заданым клиентом... инициализирую криптосистему сессионным ключом отсылаю SMSG_AUTH_RESPONSE отсылаю SMSG_ADDON_INFO а в ответ тишина, только через секунд 10 клиент шлет пакет( нормально не расшифровывается) и разрывает соединение. Чувствую ошибка в кодировании(декодировании) заголовка... в HmacSHA1 ну не может быть ошибки...стандартная 3 строчки кода. в SARC4 использовал реализацию от JCE...не прокатило, на просторах гугла нарыл частную реализацию...заголовки как и положено уходят кодированными в 4 байта ( первые маленькие)...но клиент молчит ![]() Crypt ![]() SARC4 ![]() может кто увидит ошибку? а то меня уже колбасит ![]() |
![]() |
![]() |
#79 |
Гость
Сообщений: n/a
|
![]()
всем сорри...код правильный, это я неправильный
![]() перепутал клиентский и серверные SARC4 ![]() |
![]() |
![]() |
#80 |
Гость
Сообщений: n/a
|
![]()
Ну вот...реалм-сервер дошел до стадии когда необходимы ключи сессий клиентов.
т.к. ключи будут передаваться( планируется ) по дополнительному каналу между логин и реалм серверами встает вопрос о защите этого канала. Кто что использует? Городить свои грабли или воспользоваться уже существующими ( в сис-ме вов ) алгоритмами? Мне конечно быстрее SARC4 втулить и кодировать содержимое пакета целиком. |
![]() |