14.07.2011, 13:53 | #1 |
Новичок
Регистрация: 24.03.2010
Сообщений: 23
Сказал(а) спасибо: 7
Поблагодарили 5 раз(а) в 4 сообщениях
|
[DEV] StormCore (Java WoW Emu)
Вот, решил начать писать 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. Причина: возвращение проекта |
19.08.2011, 20:15 | #121 |
Гость
Сообщений: n/a
|
математика.
Я точно не смотрел(проверял) апдейтполя, и поиск по маске. Скорее всего можно что то выкинуть, но точно утвержать в cpp коде не могу. |
19.08.2011, 21:32 | #122 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
ваши глаза вас обманывают. типов объектов несколько больше, чем привели вы. чуть выше я привел их все. проверьте на значениях выше TYPE_CORPSE. ни на какие размышления не наводит?
а то что приведенное вами совпадение имеет место быть, это всего лишь выдавание желаемого за действительное. это напоминает мне очень старую байку: |
Пользователь сказал cпасибо: | Lordronn (19.08.2011) |
19.08.2011, 22:32 | #123 | |
MaNGOS Dev
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
|
Цитата:
Ваши данные: ID_AIGROUP = $8; ID_AREATRIGGER = $9; TYPE_AIGROUP = $100; TYPE_AREATRIGGER = $200; Проверяем: TYPE_AIGROUP = 1 << ID_AIGROUP; // 1 << 8 = 100h TYPE_AREATRIGGER = 1 << ID_AREATRIGGER; // 1 << 9 = 200h Последний раз редактировалось zergtmn; 19.08.2011 в 22:40. |
|
Пользователь сказал cпасибо: | RomanRom2 (19.08.2011) |
19.08.2011, 22:57 | #124 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
да, мой косяк. посыпаю голову пеплом и приношу извинения.
попробую объясниться: вижу: ID_AIGROUP = $8; ID_AREATRIGGER = $9; NUM_OBJECT_TYPES = $0A; и TYPE_CORPSE = $80; TYPE_AIGROUP = $100; TYPE_AREATRIGGER = $200; , т.е. последние три строчки списков и их соответствующе сравниваю. отсюда косяк. нельзя читать форумы в перерывах между программежом... пойду проверять программеж, может и там всё поперепутал... выходит, совпадения возможно и не случайны и ЕСТЬ ФОРМУЛА |
29.08.2011, 12:35 | #125 |
Гость
Сообщений: n/a
|
А9 не так уж и прост в создании...да и необходимо попутно реализовывать другие вещи, по возможности ставлю заглушки
Мапменеджер - "Злодей", следит за картами и обновляет их переодически ( 100мс ). Работает, но пока только как заглушка. Карты обновляет, но самих карт, то нет ^^ . Точнее есть прообраз карт со списком зарегистрированных объектов. Да и до LOS пока далеко, нужны данные карт, переделать( написать ) навмеш... Система статов - тянет еще больше: спелы, итемы, ауры. Везде заглушки не получится сделать, да и все равно необходима реализация. зы честно говоря при программировании на джава начинаю немного завидовать cpp в плане работы с памятью, многие фокусы реализовать невозможно. В итоге массив значений-параметров ( m_uint32Values ) пришлось заменить на байтбуффер...надеюсь производительность не сильно упадет. Иначе придется костыли лепить еще те. Как там делфи в этом плане поживает? ззы баги, опечатки... а ведь иногда же запускается и работает. зззы как ФОРМУЛА поживает? |
29.08.2011, 14:01 | #126 | |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Цитата:
Код:
[StructLayout(LayoutKind.Explicit)] struct UpdateField { [FieldOffset(0)] public int IntValue; [FieldOffset(0)] public uint UIntValue; [FieldOffset(0)] public float FloatValue; } Код:
union UpdateField { int32 IntValue; uint32 UIntValue; float FloatValue; } |
|
29.08.2011, 14:10 | #127 |
Гость
Сообщений: n/a
|
нативного нету
немного оптимизации: ____ при CMSG_CHAR_ENUM - мы получаем информацию о персонажах, которая в дальнейшем не используется. решил экономить - храню её до получения CMSG_PLAYER_LOGIN . Памяти сожрет побольше, но ненадолго (либо дроп по тайм-ауту, либо логин и очистка ненужных данных ). в итоге запрос к characters уменьшился (ну хоть на 60 байт), и упростилась проверка принадлежности гуида персонажа аккаунту - нет в сохраненных данных - значит чужой. ____ LoadInventory, загрузка инвентаря плеера. Имеем на каждый нормальный итем двойное обращение к ObjectMgr::GetItemPrototype...я понимаю, что поиск по хештаблице очень быстрый, но зачем когда 2 строки выше уже получили, что надо ? Последний раз редактировалось Minimajack; 30.08.2011 в 17:15. |
12.09.2011, 17:55 | #128 |
Гость
Сообщений: n/a
|
Доделал конвертор дбц2хмл (ver 12340)
test.7z запускать или батник (extract.bat) или в коммандной строке с параметром quick. Кто хочет получить "все" может убрать параметр. Ищет в текущей директории папку с дбц файлами и извлекает их в папку хмл (без нее вылезет ошибка). Работает в 5 потоков, поэтому товарищи, у кого 1 процессор, извиняйте; добавлять настройки не буду( можно и подождать ). зы остались не разобранными только простые gtХХХххх.dbc и Achievement_Criteria.dbc (до него руки пока не дошли и пока явно не дойдут) |
12.09.2011, 20:34 | #129 |
Пользователь
Регистрация: 26.08.2011
Сообщений: 35
Сказал(а) спасибо: 6
Поблагодарили 5 раз(а) в 4 сообщениях
|
Хм... буквально пол года назад, может чуть больше, на айте тринити искал людей кто со мной начнёт делать сервер на Python или Java
Оказалось что ещё кому то в голову пришла такая идея, и не просто пришла а реализовывается Бегло просмотрел все сообщения, и я так понял что это просто попытка сделать подобие мангосу. А может стоит подумать и усовершенствовать, например как на офе, возможность бг между различными реалмами, или инсты. Ещё о поддержки кластерной системы, например по мапам. Собственно первое и второе связанно между собой. |
12.09.2011, 21:52 | #130 | |
Гость
Сообщений: n/a
|
Цитата:
java хз, пока в основном наброски |
|
13.09.2011, 03:18 | #131 |
Пользователь
Регистрация: 26.08.2011
Сообщений: 35
Сказал(а) спасибо: 6
Поблагодарили 5 раз(а) в 4 сообщениях
|
Я не предлагаю сделать на питоне Это я предлагал раньше Я начал делать, сделал проверку логина и пароля, и отправку реалмов, и не кто не слова не написал что хочет делать, наоборот написали зачем оно нужно я и бросил.
Я предлагаю раз уж ты начал, и тут если люди которые не пишут что бы ты бросал, может стоит обсудить как сделать так, на яве, что бы каждый игровой сервер обслуживал определённых клиентов или лучше локацию. Например все бг вынести отдельно, на отдельный мир, а инсты отдельно. ну и игру отдельно. Ну и на базе этого, сделать бг межреалмное. Хотя, это нужно только для оч крупных серверов) так что может и не стоит даже думать об этом. |
13.09.2011, 22:39 | #132 |
Гость
Сообщений: n/a
|
сначала нужно сделать - что бы работало.
|
14.09.2011, 01:30 | #133 |
Пользователь
Регистрация: 26.08.2011
Сообщений: 35
Сказал(а) спасибо: 6
Поблагодарили 5 раз(а) в 4 сообщениях
|
Ну, как бы мангос работает, а легко его раскинуть на кластер? Нет
По этому нужно перед тем как делать - продумать как делать. Но вообщем то это просто мысли вслух Если будет делать один человек, это будет очень сложно и долго. |
Пользователь сказал cпасибо: |
14.09.2011, 09:21 | #134 | |
Гость
Сообщений: n/a
|
Цитата:
http://www.jgroups.org/ . |
|
14.09.2011, 12:07 | #135 | |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
Цитата:
|
|
18.09.2011, 02:20 | #136 |
Новичок
Регистрация: 14.03.2010
Сообщений: 11
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
|
интересно у вас тут, munche надо звать
__________________
"Я стал смертью, уничтожителем миров" |
25.09.2011, 15:46 | #137 |
Гость
Сообщений: n/a
|
как запустить данную весчь ?
Хочется посмотреть |
20.02.2012, 20:44 | #138 |
Ученый
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
|
Через Java машину.
По поводу SMSG_CHAR_ENUM: может стоит загружать всю информацию о персонажах на отдельный CharacterServer? И оттуда сервер уже будет получать через сеть/сокет/кластер. Жрать оперативы это конечно будет прилично, но можно оптимизировать, т.е. держать в ОЗУ наиболее активных персонажей. К примеру средняя база на 300к голов занимает около 3х гигов, если произвести хорошую оптимизацию и того меньше будет. Последний раз редактировалось HuntsMan; 20.02.2012 в 20:48. |
20.02.2012, 23:51 | #139 | |
Пользователь
Регистрация: 06.01.2012
Сообщений: 98
Сказал(а) спасибо: 12
Поблагодарили 33 раз(а) в 21 сообщениях
|
Цитата:
|
|
07.03.2012, 12:54 | #140 |
Новичок
Регистрация: 24.03.2010
Сообщений: 23
Сказал(а) спасибо: 7
Поблагодарили 5 раз(а) в 4 сообщениях
|
С начало сделали форк, а потом а потом вообще перезалили.
https://github.com/TRILLIUM-EMU/TRILLIUM-CORE Можно ли как-нибудь сделать чтоб у них было что это форк? update: удалили Последний раз редактировалось mAdloVe; 08.03.2012 в 19:17. Причина: Поставил смайл которого не должно было быть (только заметил) - update |
14.03.2012, 15:03 | #141 | |
Гость
Сообщений: n/a
|
Цитата:
|
|
Пользователь сказал cпасибо: | Inn04ka (14.03.2012) |
14.03.2012, 15:18 | #143 |
Новичок
Регистрация: 24.03.2010
Сообщений: 23
Сказал(а) спасибо: 7
Поблагодарили 5 раз(а) в 4 сообщениях
|
Как не нарушать лицензию клиента?
Как я понимаю вытягивать данные из клиента нельзя. А значит тулы с данными возможностями в репу коммитать нельзя. Как поступить тогда? |
15.03.2012, 08:13 | #144 | |
Умный
Старожил
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
|
Цитата:
Это как оружие - создавшие его не несёт ответственности за то кем и как оно будет применено |
|
2 пользователя(ей) сказали cпасибо: | Gerald (15.03.2012) |
27.07.2012, 15:51 | #145 | |
Новичок
Регистрация: 08.03.2010
Сообщений: 20
Сказал(а) спасибо: 8
Поблагодарили 2 раз(а) в 1 сообщении
|
Цитата:
PS: Проект еще жив? Как то я поздно узнал о нем Хочу участвовать. Могу пожертвовать билд-сервер и сделать континус-интегрейшн, реализовав фэншуйную сборку под мэйвеном, ну и разумеется участие в разработке. Последний раз редактировалось LLIbIcpEP; 27.07.2012 в 15:54. |
|
27.07.2012, 21:37 | #146 | |
Пользователь
Регистрация: 06.01.2012
Сообщений: 98
Сказал(а) спасибо: 12
Поблагодарили 33 раз(а) в 21 сообщениях
|
Цитата:
зы У меня заглохло на стадии входа в мир... |
|
30.07.2012, 04:49 | #147 |
Новичок
Регистрация: 08.03.2010
Сообщений: 20
Сказал(а) спасибо: 8
Поблагодарили 2 раз(а) в 1 сообщении
|
https://github.com/llibicpep/JMaNGOS
Товарищи, не зачем нам замораживаться. Поехали дальше Итак, теперь у нас есть мэйвен, и все наше счастье весит 1МБ. Все зависимости есть в публичных репозиториях, например, JBoss или Codehaus. Кроме jsr-310-ri-0.6.3.jar, ее надо подкладывать ручками. Уже есть Nexus для проекта, там будут все депенденси и проксирование публичных репо (ручками всегда подкладывать не будем), но я пока не готов открыть доступ в паблик из секьюрных соображений. Так-же есть Jenkins, но там еще нет ни одной джобы... Все равно код пока не компилится. Почему? Такое впечатление, что с последнем коммитом в СтормКор что-то не докоммитилось. PS: JMaNGOS не MaNGOS на джаве, да, урок понял PPS: Давай налетай, без вас я в протоколе год разбираться буду. Опкоды для меня темный лес. Но вместе осилим PPPS: Автор, давай тоже размораживайся Ну хотя-бы сделай мне небольшой интродакшн по тому, что есть... Теперь есть nexus, со всеми зависимостями, в паблике. Последний раз редактировалось evilstar; 30.07.2012 в 22:23. |
31.07.2012, 08:29 | #148 |
Пользователь
Регистрация: 06.01.2012
Сообщений: 98
Сказал(а) спасибо: 12
Поблагодарили 33 раз(а) в 21 сообщениях
|
есть рабочий реалм сервер, и обработка пакетов мирового сервера.
У меня есть экстрактор dbc в xml, классы для работы с wmo, adt, m2 моделями, построение трианглмеша. Что непонятно пиши. |
31.07.2012, 08:40 | #149 |
Новичок
Регистрация: 08.03.2010
Сообщений: 20
Сказал(а) спасибо: 8
Поблагодарили 2 раз(а) в 1 сообщении
|
В последнем коммите стормкора встречаются импорты следующих классов, хотя самих классов нету:
org.stormcore.authserver.network.realm.serverpacke ts.SMSG_SESSION_KEY; org.stormcore.realmserver.network.auth.serverpacke ts.SMSG_SESSION_KEY; org.stormcore.realmserver.RealmService; org.stormcore.realmserver.services.PlayerService; org.stormcore.realmserver.entity.PlayerEntity; org.stormcore.realmserver.RealmServer: Services.init(); - класс Services не импортирован, что это вообще не ясно |
31.07.2012, 08:51 | #150 | |
Пользователь
Регистрация: 06.01.2012
Сообщений: 98
Сказал(а) спасибо: 12
Поблагодарили 33 раз(а) в 21 сообщениях
|
Цитата:
Могу перевести весь свой код для сборки мэйвеном и выложить в паблик, но это займет время. Нужно очень много почистить , так как там накопилось очень много мусора. |
|
31.07.2012, 08:57 | #151 |
Новичок
Регистрация: 08.03.2010
Сообщений: 20
Сказал(а) спасибо: 8
Поблагодарили 2 раз(а) в 1 сообщении
|
Ну, было-бы не плохо начать с чего-то, что все-таки компилится. Разгадывать паззл, когда в нем не хватает деталей, уж очень не просто. Вообще шикарно было-бы, если бы мне рассказали примерную архитектуру проекта, и где у нас что.
Давай попробуем все это смержить, что бы я пустил уже крутиться билды на CI. Ресурсы уже все есть, домен проделегирован, осталось форум донастроить и html страничку на главной написать в русском и английском варианте. |
31.07.2012, 09:06 | #152 | |
Пользователь
Регистрация: 06.01.2012
Сообщений: 98
Сказал(а) спасибо: 12
Поблагодарили 33 раз(а) в 21 сообщениях
|
Цитата:
|
|
31.07.2012, 09:09 | #153 |
Новичок
Регистрация: 08.03.2010
Сообщений: 20
Сказал(а) спасибо: 8
Поблагодарили 2 раз(а) в 1 сообщении
|
Сорри, я думал у тебя форк mAdloVe. Я могу взглянуть? Может я не с того проекта форк сделал
|
31.07.2012, 09:14 | #154 |
Пользователь
Регистрация: 06.01.2012
Сообщений: 98
Сказал(а) спасибо: 12
Поблагодарили 33 раз(а) в 21 сообщениях
|
|
31.07.2012, 09:16 | #155 |
Новичок
Регистрация: 08.03.2010
Сообщений: 20
Сказал(а) спасибо: 8
Поблагодарили 2 раз(а) в 1 сообщении
|
Ой, да ладно, мы же с вами оба понимаем что в реальном мире код никогда не бывает идеальным ))
Я же могу помочь, как минимум я могу переводить на мэйвен - мне для этого не нужно глубоко знать проект и его архитектуру. |
31.07.2012, 09:21 | #156 | |
Пользователь
Регистрация: 06.01.2012
Сообщений: 98
Сказал(а) спасибо: 12
Поблагодарили 33 раз(а) в 21 сообщениях
|
Цитата:
зы как насчет OSGI ? |
|
31.07.2012, 09:26 | #157 |
Новичок
Регистрация: 08.03.2010
Сообщений: 20
Сказал(а) спасибо: 8
Поблагодарили 2 раз(а) в 1 сообщении
|
Я думаю должен быть корневой проект, и в нем как модули - эмулятор, экстракторы, тулзы, не?
OSGI, Spring, IoC... это все хорошо, но что я могу сказать не имея представления о том, что сейчас есть? Раз уже что-то есть, то архитектура уже наверное была выбрана, так уже будем ее придерживаться - это же java way. Не будем начинать с нуля, когда уже что-то есть, будем переиспользовать |
31.07.2012, 09:49 | #158 | |
Пользователь
Регистрация: 06.01.2012
Сообщений: 98
Сказал(а) спасибо: 12
Поблагодарили 33 раз(а) в 21 сообщениях
|
Цитата:
я сечас на работе, исходники смогу подчистить, но залить на гитхаб - только вечером. |
|
31.07.2012, 09:53 | #159 |
Новичок
Регистрация: 08.03.2010
Сообщений: 20
Сказал(а) спасибо: 8
Поблагодарили 2 раз(а) в 1 сообщении
|
Да, вообще мне тоже пора уже бы ехать.
Так что, будем вместе работать? Не против названия? А то уже домен зарегал |
31.07.2012, 10:42 | #160 |
Ученый
Регистрация: 02.04.2010
Сообщений: 237
Сказал(а) спасибо: 41
Поблагодарили 99 раз(а) в 44 сообщениях
|
Читаю и прямо душа радуется
Я для саморазвития полгода назад начал свой велосипед писать используя только Qt, запустил персонажа в мир, потом работа появилась и теперь времени не хватает
__________________
SpellWork Qt4 |