BLANCO
-> П
.java
Хочу рассказать про свой проект связывания Game Maker'a и Java.
 
Давно начали говорить о переносе игры First Bird на другую платформу, но никто не решался:
где-то времени не было, где-то навыков. Stasundr решительно продолжал разработку на GM'e и это все забылось.
 
В этом году в универе в рамках программы ООП мы проходили многопоточность, работу с БД, работу в сети.
Немного подумав, чтобы не делать кучу бестолковых, никому ненужных лабораторок, я решил сделать одну игру, совместив все темы в одной работе.
И тут я вспоминаю про нашу fb и практически сразу принимаю решение делать сервер для клиента игры, благо они уже были отделены друг от друга.
Без проблем договорился с преподавателем, он даже, как я понял, был за такой эксперимент.
 
Проблемы появились еще на этапе проектирования. Необходимо было выбрать по какому принципу будет работать многопоточность.
Вариантов было несколько, но чтобы на этом не тормозить я остановился на самом простом: 1 клиент - 1 поток.
 
Далее нужно было сделать элементарное - передать данные с сервера на клиент и обратно. Проблемы вылезли снова.
Как оказалось, работа 39DLL библиотеки отличается от работы сетевых утилит Java платформы. Обмен байтами происходит, но 39 и java по-разному формируют и кушают пакеты, в результате чего где-то данные теряются, а где-то вдруг появляются ненужные.
Парило это очень сильно, т.к. что делать с 39dll я понятия не имел, что там происходит и как - не понятно. На форуме 39dll никто ничем толком не помог, руки почти опустились. Спустя некоторое время, поговорив со Stasundr'ом и попарсив передачу данных, стало понятно что к чему.
Все оказалось очень просто: 39dll при формировании пакета байтов сам вписывает в начало 2 байта, где первый - это кол-во байтов в пакете, а второй - байт разделитель (0). Соответственно и считывал он аналогично.
 
Дело оставалось за малым - написать оболочку для сетевой составляющей явы для работы c 39dll. Все заработало!
Затем дело дошло и до БД.
На последнем этапе, который, можно сказать, продолжается до сих пор, появляются непонятные мне траблы, из-за которых казалось бы правильно написанный код ведет себя странно и порой непредсказуемо.
 
На данный момент сервер работает, но немного некорректно. В принципе, он и рассчитывался чисто как эксперимент.
Не знаю что в планах у Stasundr'a, но надеюсь, что мое начинание поддержат и в дальнейшем игра все-таки перейдет на более продвинутую платформу .NET, например.
 
Если вдруг кому надо исходники, то пишите.
Автор: DuffDodger [2011-06-22 19:09:09] [ +2 ]
Всего комментариев: 9
1. Wollf
2011-06-22 22:27:46 [ 0 ]


    *Ошибся в названии игры в краткой версии поста.
    *Маленькие отступы между строками, с чего бы это?
    *Незначительные орфографические ошибки.
А по сабжу - молоток что разобрался,хвалю Smile
Йакуд,мне не нравится как работает тэг list.

2. WeslomPo
2011-06-23 21:26:16 [ 0 ]


Дай исходники почитать Smile.
Ну и замечания Wollf'а по делу. Строки как-то странно выглядят.
 
По статье, оно и понятно что 39dll по другому формирует пакеты.
Во-первых, у него открыты исходники.
Во-вторых, сразу же и следовало сниффером посмотреть что приходит от 39DLL и почему (как вы и сделали).
 
Я думаю что можно и на Ява остаться, т.е. сервер с Linux дешевше, чем Windows сервер.

3. DuffDodger
2011-06-23 22:14:17 [ 0 ]


Что со строками я сам не знаю..
 
WeslomPo, ты дропбоксом пользуешься? Если да, дай мыло, я папку с проектом расшарю

4. WeslomPo
2011-06-24 03:53:43 [ 0 ]


i at weslompo.ru

5. Йакуд
2011-06-26 12:59:14 [ 0 ]


Чем он тебе не нравится?

6. Йакуд
2011-06-26 12:59:57 [ 0 ]


Поправил строки. Теперь должно все отлично отображаться!

7. Wollf
2011-06-26 16:51:49 [ 0 ]


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

    пункт первый
    пункт второй
    пункт третий
That's I was talkin 'bout!

8. Йакуд
2011-06-26 16:53:08 [ 0 ]


Вот так вот нужно:
  • пункт первый
  • пункт второй
  • пункт третий

Text
[list][*] пункт первый
[*] пункт второй
[*] пункт третий[/list]

9. Wollf
2011-06-26 16:54:40 [ 0 ]


Ага, разобрался,спасибо)