Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> How to: игровой Java-сервер "для себя" ? Помогите определиться новичку с матчасть 
:(
    Опции темы
53x7u5
  Дата 26.5.2010, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 26.5.2010

Репутация: нет
Всего: нет



Всем привет!

Судя по некоторым темам тут уже попривыкли что многих "начинающих разбираться" новичков в Java приводит желание сделать свою онлайн-игру с киберпокером и лучницами.
Этот топик - не исключение (:

Пару слов о новичке:
Я шарю в AS2/AS3, немного разбираюсь в разработке под Android. В данный момент все свободное время посвящаю изучению Java SE6 по справочнику Г.Шилдта. Пока что осилил только вводную часть книги посвященную обзору основных возможностей среды и работе с данными. Сейчас более подробно остановился на рассмотрении библиотек Java (в данный момент lang). Понятное дело это нифига по сути, но больше чем ничего. К тому же все выглядит очень похожим на AS3 поэтому особых сложностей я думаю не предвидится.

В Java меня привело желание разобраться с разработкой приложений под Android. И тут же всплыли старые неудовлетворенные желания доставшиеся от бурной онлайновой-молодости  smile 
Я хочу поднять небольшую онлайн игру и поэтому прошу наставить меня на путь истинный. Мне доводилось ковыряться в PHP-коде (в основном либо косметическая правка шаблонов для сайтов, либо элементарные обращения к СУБД через flash), но разработка целого сервера - это для меня темный лес.

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

В конечном счете я хотел бы прийти к следующей системе:
  •  игровой сервер написанный на Java без web-представления (т.е. веб-интерфейса для клиентской части нет и не будет);
     
  •  клиентская часть будет представлена в виде flash-приложений интегрируемых в социальные сети, а так же в виде приложений для мобильных платформ (Android);
     
  •  взаимодействие клиентской и серверной части производится через собственное API;
     
  •  графические элементы интерфейсов игры (картинки) хранятся на стороне клиента;

Самый простые примеры похожих игр - OGame или Травиан, Икариам. Игровая логика предполагается аналогичной. Но это уже не суть важно для прототипа, насколько я понимаю.

Я не гонюсь ни за какой прибылью, у меня не горят планы и нет армии геймеров с которых нужно срочно натрясти бабла. Я сам себе заказчик и исполнитель и я хочу:
 1. Разобраться с серверной частью "от и до" подняв проект у себя на локалке с Денвером;
 2. Создать прототип сервера, который потянул бы тестовую нагрузку из 20-50 сферических в вакууме пользователей; (на тот случай если проект станет интересен инвесторам и потребуется продемонстрировать альфу)
 3. ..А далее, если будет вне зависимости от интереса инвесторов - своими силами допиливать игру напильником, увеличивать отказоустойчивость, переносить альфу на реальный сервер, ну и как дальше попрет..

В общем, ребят, планы как всегда наполеоновские. Подскажите хотя бы по азам - с чем еще предстоит разобраться чтобы получить свой первый многопоточный сервер на локалке имеющий "зачатки" игровой логики и выполняющий элементарные операции с СУБД (MySQL к примеру). Я тут немного читал что-то про Tomcat, но так и не понял для себя нужен ли он мне вообще. Быть может для моих задач проще использовать какое-то "коробочное" решение а-ля SmartFoxServer (который к тому же бесплатный для очень маленьких проектов)? Гугление дало только исходники монструозного L2Jserver который одними своими размерами вызвал у новичка холодный пот. Совершенно не понятно как с этой махиной работать. Очень бы хотелось примеров игровых серверов на Java попроще.

Надеюсь на вашу помощь и понимание (:
PM MAIL   Вверх
yeputons
Дата 26.5.2010, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 1.4.2009
Где: Санкт-Петербург

Репутация: 1
Всего: 5



  • Многопоточность. Есть класс Thread и интерфейс Runnable:
    Код

    Thread th = new Thread(new Runnable() {
      public void run() {
        System.out.println("Hello from 2nd thread!");
      }
    });
    th.start();
  • Сеть. Класc Socket. Он и клиент, и сервер. С ним можно работать как с обычными потоками. Т.е. слать байты и объекты Serializable
  • СУБД. Тут я подсказать не могу, сам не работал. Гугление по запросу "java mysql" даёт понять, что надо копать в сторону изучения JDBC и подключения его к MySQL
Я правильно понял вопрос?
PM MAIL ICQ Skype   Вверх
53x7u5
Дата 26.5.2010, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 26.5.2010

Репутация: нет
Всего: нет



yeputons, за ответ спасибо, но вопрос больше относился немного к другому.

Попробую пояснить - я в процессе изучения языка делал несколько тривиальных программулек, компилил их, запускал как в самом Eclipse так и непосредственно через командную строку под Win. С этим проблем не возникло. На локалке это запускается, выполняет свою часть работы и благополучно завершается. А как будет "выглядеть" этот "игровой сервер" будучи залитым к хостеру на сервер? Как его в данном случае запускать, как сделать так чтобы он работал постоянно обрабатывая множественные сессии игроков? 

Для меня это сейчас выглядит как "сделай то-незнаю-что". Весь мой прежний опыт по работе с хостингом заключался только в том чтобы создать новую MySQL, залить в public_html папку с вордпрессом, выставить права на какие-то файлы и папки, подправить htaccess. Больше ничего делать не приходилось. У меня никогда не возникало нужды разбираться в механике работы сайта на том или ином движке (вроде того же WP). В моем "юзерском" понимании после обращения к сайту запрос передавался на управляющие скрипты php которые в свою очередь уже дергали БД и что-то возвращали мне обратно. А как работает сервер на java?

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

На данном этапе все это - вопросы без ответов над наивностью которых я позднее скорее всего посмеюсь, а пока это только вызывает ступор. Посему буду благодарен если кто посоветует книгу посвященную разработке серверной части на java и практике ее настройки и эксплуатации в реальных веб-службах.

Отдельная часть моего вопроса посвящена дополнительному софту что-ли. Понятно что мне понадобится разобраться с самой Java. Понадобится научиться работать с СУБД через Java. Я сегодня читал на хабре небольшое ревью по архитектуре социальной сети Campus.ru. Половины честно не понял)
Nginx, Tomcat, отдельные "балансировщики нагрузок" для СУБД, JMS-сервер, календарный сервер, система фай мой мозг "мониторинга системы". Пачка отвисла уже на "балансировщике нагрузок". Вот это вот все неизвестное и непонятное тоже требуется для любого в-перспективе-сильно-нагруженного-проекта? Я не боюсь со всем этим разбираться, мне только понять нужно ли все это для моих задач или ради 20-50 тестовых игроков мне все это не потребуется.

Уфф.. Я не умею предельно лаконично выражать свои мысли, уж простите, но я надеюсь что у кого-нибудь да и хватит терпения дочитать всё до конца и дать развернутый ответ. Если я где-то фигню ляпнул - говорите пожалуйста. Я чисто по незнанию) smile 
PM MAIL   Вверх
Vasay
Дата 27.5.2010, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



53x7u5, 

Вопрос первый:

Игра будет реал-тайм или пошаговая?

От ответа на этот вопрос зависит то направление в котором вам придется двигаться в процессе изучения.

В случае пошаговой игры можно использовать web-сервер сделав общение клиента и сервера через xml поверх http. Сервер вашей игры будет представлять собой web-сервис.

В данном случае нужно смотреть в сторну:
Java EE:
-Servlets
-Web-сервисы
-XML

Это, конечно, не единственный вариант - но ИМХО, наиболее простой.


В случае реал-тайм игры Вам придется писать свой собственный сервер. Смотреть надо в сторону
Java SE:
- socket-ы
- многопоточность



--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
53x7u5
Дата 27.5.2010, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 26.5.2010

Репутация: нет
Всего: нет



Vasay, игра в реальном времени. Игра по сути больше похожа на экономический симулятор. Никаких боёв с крутыми анимациями. Игровой интерфейс - таблицы с какими-то текущими данными, такими как "время до атаки", "кол-во ресурсов которые генерируют шахты", "время перемещения юнита" ну и т.д. По сути это будет просто большое количество "игровых процессов" завязанных на таймеры. Но если вдаваться в подробности то "таймер" будет просто обновлять данные по каждому игровому пораметру вычисляя время с момента предыдущего обновления и умножая его на какой-то коэффициент. То есть, например, если шахта производит 10 угля в час, то если с момента последнего обновления "экрана" прошло полчаса мы делаем +5 к кол-ву ресурсов. По тому же принципу будут производится и все остальные действия. Просто математика.


<оффтоп>Я плохо понимаю чем обусловлен выбор между EE и SE, если честно. В моем понимании EE предлагает "из коробки" больше возможностей, но требует бОльших ресурсов. Я взялся за SE потому что J2EE не подходит для разработки под Android. На форумах обычно встречаю объяснение а-ля "EE предназначен для корпоративных решений для веб-серверов". Вроде что всякими дополнительными вещами EE нагружен под завязку, а в каких конкретных случаях нужен EE, а в каких достаточно SE - мне как новичку не ясно.
Частично что-то пытался почерпнуть отсюда</оффтоп>
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0474 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.