forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=28)
-   -   IRC Network (http://forum.boolean.name/showthread.php?t=8414)

Damp 31.05.2009 16:22

IRC Network
 
Либа для работы с IRC. В либе имеется чат, простой, но все необходимое есть.

Почему именно IRC:
Потомучто это надежно (технологии около 20 лет), просто и функционально. Не нужно писать сервер самому, не нужно его запускать, содержать, платить за размещение. А если и есть необходимость держать у себя, запускается элементарно.

Что можно передавать по IRC:
Передаются строки, но строку можно интерпретировать как массив байтов, а из байтов составляется любой тип данных.
В либе есть функция IrcSendGameMsg с помощью которой можно посылать любые строки с символами chr(0..255), обычным способом нельзя передавать символы chr(10), chr(13) и на некоторых серверах chr(0).
Публичные серверы ограничивают сообщение примерно на 200...250 байтах (список ограничений присылается при коннекте). Интервал между сообщениями обычно не контролируется, но лучше не слать больше 1-2 сообщений в секунду.
Если держать сервер у себя, то конечно можно снять любые ограничения.

Конечно на базе IRC контры не сделаешь. Но для пошаговых, для игр на кликах мыши, логических и могих других вполне подходит.

Примеры того, что делалось:
шашки
http://blitz.pp.ru/forum/showthread....&threadid=3780
арена
http://blitz.pp.ru/forum/showthread....&threadid=3621
карты
http://irgpro.narod.ru/0.html
+см. тему "Подарю основу для создания ммо"

Также в архиве с либой примеры:
Мультиплеер с управлением стрелками, как в классических танчиках.
И пример ICQ+IRC бота (семпл по работе с ICQ гейтом).
http://irgpro.narod.ru/IRC_Network/IRC_Network.rar - либа и примеры 50Kb

Тестировать игры можно без интернета. Для этого нужно скачать какой-либо IRC сервер, например bircd. Запустить и коннектиться на "127.0.0.1".
http://irgpro.narod.ru/IRC_Network/bircd_irc_server.rar - если нужен сервер 150Kb

И еще немного теории, примерная схема создания мультиплеера на "пересылающем сервере", т.е. на сервере не моделирующем игровой мир - http://irgpro.narod.ru/IRC_Network/shem.gif

Пишите интересные игры, онлайн и не онлайн тоже ;)

Tadeus 01.06.2009 17:03

Ответ: IRC Network
 
А не найдется ли у кого-нибудь ICQ-библиотеки для блица? Мне самому так влом делать по сухой документации AOL'a :(

Damp 02.06.2009 09:26

Ответ: IRC Network
 
Да уж, протокол аськи это что-то :) Тоже не осилил.
Хотя так подумать теоретически на блице можно написать.

Tadeus 03.06.2009 14:36

Ответ: IRC Network
 
Цитата:

Сообщение от Damp (Сообщение 106504)
Да уж, протокол аськи это что-то :) Тоже не осилил.
Хотя так подумать теоретически на блице можно написать.

Да можно, но блин, они так специально написали чтобы меньше было сторонних клиентов. Можно даже практически, проблема в том, что протокол этот надо самостоятельно разбирать.

Кому интересно, вот: http://dev.aol.com/aim/oscar

Есть кстати библиотеки на ПХП, можно в них покопаться.

Damp 03.06.2009 17:12

Ответ: IRC Network
 
На делфи есть пример, правда уже не работающий в связи со сменой протокола.
А что хочешь делать из icq :) ?
Для игр просто плохо подходит, хотя шашки делались.
Соединение только 1х1 к сожалению, групп нет, + жесткие ограничения по частоте отправки.

Tadeus 03.06.2009 18:25

Ответ: IRC Network
 
Ну, нашел я ПХП скрипт, только там черт ногу сломит, пытаюсь всё же как-то да переделать под блиц :)
Через бота можно игру сделать...

Abiron 02.07.2009 21:15

Ответ: IRC Network
 
Для игр irc лучше аськи. Но там примерно 300байт в секунду придел сообщений(в среднем по сервам). Кстати где то тут видел исходник мморпг на irc. ПХП класы не юзай, имхо, они старые, еще до смены и сырые.

Damp 02.01.2010 15:29

Ответ: IRC Network
 
Уже чего только не протаскивалось через irc, и с управлением на кликах и на кнопках, и с мышью.
В тестах выясяется, что во всех открытых сетях, если слишком часто слать, сервер начинает накапливать сообщения и выдавать их пачками, получается что пинг дойти до нескольких секунд даже при хорошем соединении.
Поэтому лучше не слать больше 1 сообщения в секунду на бесплатный сервер, или поднимать свой (что тестировалось и доказало полную работоспособность)
Это конечно маловато, но например танчики с управлением на кнопках можно сделать при условии, что хотябы 1 сообщение в 3 секунды допустимо. Если кому-то интересно могу поделиться, или может соберусь написать небольшой рассказик.

Последнее что делалось - шутер:
http://irgpro.narod.ru/MW/MWS1.jpg - скрин
http://irgpro.narod.ru/MW/MW.rar - 1.6 метра
(если набрать в начале в чате /go будет тест самого себя)
Управление wasd, мышь2, мышь1.
К сожалению проект заброшен, нет моделеров.

Есть идея сделать боулинг, игру похожую на баскетбол, можно еще городки. Т.е. такое, что не потребует моделеров и мало кем делалось (боулинга по сети вообще не нашел).

Tadeus 02.01.2010 16:54

Ответ: IRC Network
 
Ну, ирк - это мазохизм всё-таки :) Но забавно

Damp 02.01.2010 17:31

Ответ: IRC Network
 
С другой стороны это один из немногих бесплатных вариантов. Даже так подумать... можно сказать единственный )
Написать свой специальный, игровой сервер конечно лучший вариант, правда сложно обеспечить его длительное существование, как практика показывает. Вариант с хостящими игроками тоже не всем подойдет.
Плюс если сделал двиг работающий по irc, перевести на что-то свое будет очень просто, а до этого уже будет что показать, затестить, проверить играбельность и т.д.

Tadeus 02.01.2010 17:36

Ответ: IRC Network
 
Ну, придется переделывать кучу всего. Ведь ирк-сервак лишь рассылает данные, но никак не контролирует игру :)

Damp 02.01.2010 17:53

Ответ: IRC Network
 
)) а что нужно контролировать?
Физика в игре реализуется, хранение персональных данных тоже.
Если есть необходимость, особый контроль может осуществлять допустим бот или живой админ, которых можно запустить с любого клиента. В последствии алгоритм бота просто переложить на свой самописный сервер, если игра захватит массы )
Допустим такая игра как танчики может быть полностью реализована, с прокачкой, сбором предметов, бонусов и т.п. Причем это будет децентрализовано, сдох один сервер, игроки вбили другой и игра продолжается.

moka 02.01.2010 22:31

Ответ: IRC Network
 
То есть хранение всей инфы - локально.
Получается я смогу легко всё хакнуть, и быть богом.
Во вторых, насчёт физики, а как ты синхронизируешь физику в больших уровнях? Что каждый, клиент будет считать всю физику, и посылать кучу инфы другим.
Короче говоря, без сервера, который тоже "думает", слишком большие ограничения и нагрузка на клиенты.

Ещё наводка: а что если юзать PHP запросы, и майскюл сервак? :)
Прикольный тоже изврат получиться!

Tadeus 02.01.2010 22:35

Ответ: IRC Network
 
Цитата:

Сообщение от MoKa (Сообщение 132023)
Ещё наводка: а что если юзать PHP запросы, и майскюл сервак? :)
Прикольный тоже изврат получиться!

Дак можно, только походу даже тормозней будет - так данных посылается и принимается больше. С другой стороны, будет контроль. Вот только скорость непропорционально упадёт. Так что всё-таки лучше не полениться и написать свой сервер, тем более для динамичной игры. Другое дело, что комп нужен будет ) Собсно акцент и преимущество ирка в бесплатности и доступности сервера.

Damp 03.01.2010 12:10

Ответ: IRC Network
 
MoKa, не все так просто ) Опасность вскрытия локальной инфы примерно такая же как и с сервера. Ведь так подумать... все, даже самые серьезные продукты хранят лицензию локально, таких чтобы шли на сервер перед каджым стартом практически нет.
Физику имел ввиду коллизии, игроки не будут ходить сквозь стены, без всяких лишних затрат независимо от числа. Недавно в мморпг "Аллоды" играл, и так прикинул... можно сделать подобное и без игрового сервера, а физики как таковой там итак нет ) нет даже коллизий между игроками (хотя это во многих ммо принято).
Так-то, да, если не пошаговая и основана именно на физике, например гонки или там... футбол, то нужен единый мир, иначе просто никак.

Damp 06.01.2010 18:58

Ответ: IRC Network
 
Вложений: 1
Чтобы не разводить лишних топов напишу тут.
Пример танчиков, которые будут работать при 3-х секундном интервале отправки.
К irc не привязано, там только двиг, без сети, точнее под любую сеть. Главное понять основную мысль, что как бы единый мир не всегда нужен, что можно 4-мя байтами 1 раз в 3 секунды уже получить кое что )).
Конечно асинхрон виден не вооружнным глазом, но лагов нет, игрок не будет тыкать пальцем и возмущаться, визуально все гладко, а что асинхрон допускается, то для фугаса не суть стоит ли танк на пол корпуса впреди ли сзади )

Damp 07.01.2010 11:59

Ответ: IRC Network
 
Вложений: 1
И как логическое завершение - эти же такнчики с сетью, на базе irc, возвращаясь к теме топа )
Всего лишь 5 строк кода для инициализации, столько же для приема сообщений и танчики готовы.
Можно тестить на одном компе в 2-а окна.
Ну, вроде больше добавить нечего, что имел по теме выложил, если кто решит делать что-то в таком духе, чем смогу помогу при желании ;)

firstvirus 20.01.2010 13:12

Ответ: IRC Network
 
В ирц-сетях бродит интересная игра Арена. Как то делал 3Д клиент для нее. Получилось не плохо и стало интереснее играть народу. Но тогда пришлось писать библиотеку самому и только под себя :)
Игр в Ирц-сетях довольно много. Ко многим из них подойдет красивый 3Д клиент.

Damp 21.01.2010 09:31

Ответ: IRC Network
 
Ага, играл практически во все в рамках обычных клиентов.
В осовном это текстовые игры, хотя есть с примитивной графикой, шашки например.
Бывают и рпг ) чисто текстовые. В мафию играют.
Самая популярная пожалуй викторина, в больших сетях постоянно хоть человек 10 да сидит.

radiantstudio 03.02.2010 03:09

Re: IRC Network
 
Спасибо за танчики Damp! Натолкнул на некоторые мысли.

Damp 27.08.2010 09:31

Ответ: IRC Network
 
Продолжая тему.

Ветка конечно не по проектам, но тут будет уместнее рассказать как дополнив пример из поста 17 получился ремейк батл сити.


Тестить можно в 2 окна, если ни кого не будет.

Управление:
Движение танка - стрелки или кнопки 8,4,5,6 в цифровой части.
Поворот башни - скроллер, или удержание кнопки под ним (мышь3) + движение мыши, или кнопки 7,9 в цифровой части клавы.
Огонь - мышь1 или правый контрол (нажать и удерживать).
Посмотреть кто есть кто - левый контрол.
Выход - F12.

Чтобы стартовать всем желающим в чате нужно набрать /+
Остановить может любой из игроков набрав /-
Вновь зашедшие могут только наблюдать, пока игроки не остановят игру и не начнут набор команды заново. Всего могут 8 человек играть.

http://damp.ucoz.ru/BattleCity3DNet.rar - 900Кб

---
Написал еще одну либу по irc, но для себя, слишком не читабельная. Может будет время перепишу нормально. Либа практически копирует потоковые функции блица.
Т.е. используя irc можно отсылать любые данные: byte, short, int, float, string, записывая и читая их как обычный поток, типа

;отправка
IRCWriteFloat(EntityX(Tank))
IRCWriteFloat(EntityY(Tank))
IRCWriteFloat(EntityZ(Tank))
SendIRCMsg()

;прием
RecvIRCMsg()
If IRCReadAvail()
X#=IRCReadFloat()
Y#=IRCReadFloat()
Z#=IRCReadFloat()
PositionEntity Tank,X,Y,Z
EndIf

Damp 30.08.2010 21:31

Ответ: IRC Network
 
Вложений: 1
Итак еще один вариант. Либа - IRC4Games.
Более удобный в плане отправки координат и вообще ближе к игровым нуждам.

Некоторые функции:
IRCOpenStream(сервер, порт, свой ник) ;открыть поток
IRCJoinGame(имя игры, пароль[=""]) ;зайти в игру (оно же создать игру)
IRCRecvMsg() ;принять сообщение (вызывается каждый цикл)
IRCSendMsg() ;отправить

IRCReadAvail%() ;сколько байт еще не прочитано
IRCEof%() ;True если прочитано все сообщение
IRCMsgFrom$() ;возвращает ник отправителя сообщения

;чтение
IRCReadByte(byte%)
IRCReadShort(short%)
IRCReadInt(Int%)
IRCReadFloat(Float#)
IRCReadString(String$)

;запись
IRCWriteByte%(byte%)
IRCWriteShort%(short%)
IRCWriteInt%(Int%)
IRCWriteFloat#(Float#)
IRCWriteString$(String$)

Функции практически копируют родные блицевские для работы с потоком, больше похоже на UDP.
За 1 раз можно отправить примерно 30-40 float. Правда лучше не чаще 1 раз за 2 сек.

Кстати следщее, что может попробую это UDP сеть по типу хамачи. IRC использовать как TCP связку, в такой сети без TCP для старта не обойтись. Должно будет работать независимо от того за nat или нет пользователи. Точнее уже пробовали, работает.


Часовой пояс GMT +4, время: 19:54.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Перевод: zCarot