Четверг, 25 Апреля 2024, 16:47

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Клиент GM + Сервер C++ (Help Me!)
Клиент GM + Сервер C++
lumennesДата: Суббота, 24 Сентября 2011, 15:13 | Сообщение # 1
Убийца Diablo
Сейчас нет на сайте
В общем не так давно занялся изучением C++ и в голову ударила мысль написать сервак для клиента GM на этом ЯПе.
Писал.. писал.. писал.. но так и не дописал... В общем проблема заключается только в передаче и приеме данных, все остальное я сам смогу сделать.

Как доброй души человек выкладываю сервак c++ на всеобщее пользование. Можете делать с ним что хотите, хоть написать сервак убийцы WoW biggrin Только прошу о следующем: покажите пример передачи данных с клиентом GM (естественно на 39dll) и этим серваком C++. Думаю на форуме есть люди, которые хотя бы знаю азы C++, ну или хотя бы подскажут что-то.

В общем не смотря на будущую критику, заранее спасибо smile


Как мало вы знаете, как громко вы судите...
StageДата: Суббота, 24 Сентября 2011, 15:37 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Quote
WSADATA WsaData; //не знаю что это, но без этого ничего работать не будет!

Переписал 10 строк из какого-то туториала по сокетам. Уходи.
QvantДата: Суббота, 24 Сентября 2011, 15:42 | Сообщение # 3
почти ветеран
Сейчас нет на сайте
lumennes, вообщето это ты должен нам показать ример передачи данных с клиентом GM biggrin
Проще написать код с нуля чем разбираться в чужом да ещё и написанным новичком .

lumennes, в чём возникнула сложность ?
1)сначала делаешь клиент/сервер на GM по справке 39длл
2)изучаеш протокол ТСР и его реализацию на С++
3)передаёш данные от GM к вашей программе на С++ на локалхосте

Тут внимание ! 39 длл в заголовке передаёт размер пакета в обратном порядке , а функция передачи строки оканчивается символом "00" а так всё стандартное.
RorschachДата: Суббота, 24 Сентября 2011, 16:03 | Сообщение # 4
участник
Сейчас нет на сайте
lumennes, ты знаешь как передавать и принимать данные на GM? С остальным могу помочь.

Добавлено (24.09.2011, 15:52)
---------------------------------------------
То есть с сетью в С++.

Добавлено (24.09.2011, 16:03)
---------------------------------------------
Только сейчас посмотрел код, улыбнуло.


Never compromise. Not even in the face of Armageddon.
AGENTX001Дата: Суббота, 24 Сентября 2011, 16:11 | Сообщение # 5
почётный гцупер
Сейчас нет на сайте
портируй 39dll на плюсы!!
lumennesДата: Суббота, 24 Сентября 2011, 16:13 | Сообщение # 6
Убийца Diablo
Сейчас нет на сайте
Quote (Stage)
Переписал 10 строк из какого-то туториала по сокетам. Уходи.

сам уходи.
Quote (Qvant)
вообщето это ты должен нам показать ример передачи данных с клиентом GM

если бы был асс в C++ наверное бы показал.
Quote (Qvant)
в чём возникнула сложность ?

сложность именно в том что я не могу понять как принимать и получать данные между сервером на C++ и клиентом GM на 39dll.
Quote (Qvant)
1)сначала делаешь клиент/сервер на GM по справке 39длл

он у меня есть, впрочем любой на 39dll подойдет. вот.
Quote (Qvant)
2)изучаеш протокол ТСР и его реализацию на С++

ну я его можно сказать заучил уже, но все равно не то
вот например что я использую
Code

char RecvBuffer[1];
  while(recv(cliSocket,RecvBuffer,sizeof(RecvBuffer),0)!=0)
  {
           printf("%i",RecvBuffer[0]);  
  }

это прием данных от клиента сервером и функция printf("%i",RecvBuffer[0]); по моему мнению должна выводить ту цифру действия которого (блин) ему послал клиент, например игрок перемещается (индификатор 4) должен отправлять 4 на сервер (ниже код GML)
Code

if x!=tx or y!=ty {
dll39_buffer_clear(0);
dll39_write_byte(4,0);
//dll39_write_short(x,0);
//dll39_write_short(y,0);
dll39_message_send(con.server,0,0,0); }
tx=x;
ty=y;

Ну в общем короче если клиент отправляет 4 к примеру то серв должен принимать 4 и наоборот, но вместо этого либо 1, либо ироглифы...
Quote (Qvant)
3)передаёш данные от GM к вашей программе на С++ на локалхосте

что я и пытаюсь сделать)
Quote (Qvant)
Тут внимание ! 39 длл в заголовке передаёт размер пакета в обратном порядке , а функция передачи строки оканчивается символом "00" а так всё стандартное.

вот этого я точно не понимаю. преобразовывать данные в обратном порядке или отбрасывать "00" на конце?
Quote (Rorschach)
ты знаешь как передавать и принимать данные на GM? С остальным могу помочь.

ну как передавать данные между GM сервером и клиентом знаю..
Quote (Rorschach)
То есть с сетью в С++.

а с сетью C++ не получается..


Как мало вы знаете, как громко вы судите...
RorschachДата: Суббота, 24 Сентября 2011, 16:14 | Сообщение # 7
участник
Сейчас нет на сайте
Quote (AGENTX001)
портируй 39dll на плюсы!!

А зачем? Хотя портировать думаю не сложно(и даже можно), но сишником эта штука не нужна.


Never compromise. Not even in the face of Armageddon.
lumennesДата: Суббота, 24 Сентября 2011, 16:28 | Сообщение # 8
Убийца Diablo
Сейчас нет на сайте
Quote (Rorschach)
Только сейчас посмотрел код, улыбнуло.

я старался)))
Quote (AGENTX001)
портируй 39dll на плюсы!!

каким образом?

Добавлено (24.09.2011, 16:28)
---------------------------------------------
кажись я догадался как портировать 39dll в C++)))


Как мало вы знаете, как громко вы судите...
RorschachДата: Суббота, 24 Сентября 2011, 16:30 | Сообщение # 9
участник
Сейчас нет на сайте
Quote (lumennes)
кажись я догадался как портировать 39dll в C++)))

Не знаю что ты там придумал, но сейчас тебе эта задача не по зубам, инфа 100%


Never compromise. Not even in the face of Armageddon.
QvantДата: Суббота, 24 Сентября 2011, 16:31 | Сообщение # 10
почти ветеран
Сейчас нет на сайте
И и чего сложного ?
Вот послал ты один байт:
dll39_write_byte(4,0);
dll39_message_send(con.server,0,0,0)


И смотри что пришло сервер в формате HEX .
По умолчанию 39длл прикрепляет заголовок к TCP пакету из 2 байтов

Code
dll39_set_format(sockid,method,sepstr)
При отправке сообщений через tcp-сокет сообщения должны быть разделены.
DLL предоставляет два метода разделения.
dll39_format_binary: Двоичный режим. Установка этого режима приводит к тому, что каждое tcp-сообщение имеет 2-байтовое числовое прикрепление, которое содержит информацию о данных в этом сообщении. Этот метод установлен по умолчанию и рекомендуется к использованию в онлайн-играх.


Но порядок байтов в 39длл в заголовке идёт наоборот

поэтому первые два байта в ТСP пакете будут иметь вид чтото типа этого 0100h (два байта меняются местами , по идеи должно быть 0001h , но в 39dll сделано нестандартно)
третий байт будит твоя информация 04h


Сообщение отредактировал Qvant - Суббота, 24 Сентября 2011, 16:38
QvantДата: Суббота, 24 Сентября 2011, 16:33 | Сообщение # 11
почти ветеран
Сейчас нет на сайте
PS. В сети есть исходники на 39длл на С++ , но зачем если итак там ничего сложного нет

а при передачи строки
dll39_write_string(string,bufid)

аналогично придёт на сервер заголовок два байта , потом приходит сама строка , и 39длл добавляет символ null (00h)
это тоже в справке написано


Сообщение отредактировал Qvant - Суббота, 24 Сентября 2011, 16:36
lumennesДата: Суббота, 24 Сентября 2011, 16:56 | Сообщение # 12
Убийца Diablo
Сейчас нет на сайте
Все заработало! biggrin

Как мало вы знаете, как громко вы судите...
QvantДата: Суббота, 24 Сентября 2011, 17:06 | Сообщение # 13
почти ветеран
Сейчас нет на сайте
lumennes, ну вот , теберь делай движок сервера на С++ и продавай его за $ всем желающим сделать ММО на GM smile
lumennesДата: Понедельник, 26 Сентября 2011, 02:18 | Сообщение # 14
Убийца Diablo
Сейчас нет на сайте
Quote (Qvant)
ну вот , теберь делай движок сервера на С++ и продавай его за $ всем желающим сделать ММО на GM

ок cool у меня у самого тоже есть идея создать moo на сервере C++ happy

Добавлено (26.09.2011, 02:18)
---------------------------------------------
Кому нужен сервер C++ с использованием 39dll и клиент GM обращаться в ЛС biggrin пример сервера убицы WoW'a готов cool P.S. 10$


Как мало вы знаете, как громко вы судите...
VinchensooДата: Понедельник, 26 Сентября 2011, 13:57 | Сообщение # 15
Злобный социопат с комплексом Бога
Сейчас нет на сайте
lumennes, ты ничего не сделаешь. Нахамил человеку, который в теме хоть что-то смыслит, в отличие от тебя.

Ты даже на гм не в состоянии еще нормальный сервер написать(в плане качества кода, не то, что на С++).

Удачки


PoloДата: Понедельник, 26 Сентября 2011, 14:11 | Сообщение # 16
частый гость
Сейчас нет на сайте
lumennes, лучший сервер - сервер на perl. Еще в придачу MySQL и готово, стабильная работа - легкий код (и не надо морочиться с C).

lumennesДата: Понедельник, 26 Сентября 2011, 14:26 | Сообщение # 17
Убийца Diablo
Сейчас нет на сайте
вы все такие "умные", я поражаюсь.

Quote (Vinchensoo)
Нахамил человеку, который в теме хоть что-то смыслит, в отличие от тебя.

где именно и кому? 0_о

Quote (Vinchensoo)
lumennes, ты ничего не сделаешь.

Quote (Vinchensoo)
Ты даже на гм не в состоянии еще нормальный сервер написать(в плане качества кода, не то, что на С++).

давайте люди свои ИМХО оставят при себе, ок.

Quote (Polo)
лучший сервер - сервер на perl. Еще в придачу MySQL и готово, стабильная работа - легкий код (и не надо морочиться с C).

учить еще один ЯП пока в мои планы не входило, так что пока остановлюсь на C++ и при том мне морочится не приходится уже, так как использую 39dll.


Как мало вы знаете, как громко вы судите...
05142Дата: Понедельник, 26 Сентября 2011, 14:26 | Сообщение # 18
постоянный участник
Сейчас нет на сайте
Polo, лучший сервер - на nodeJS + NoSQL(MongoDB). Ассинхронный ввод\вывод + javascript (и не надо морочиться с C и Perl).

mecinvader
PoloДата: Понедельник, 26 Сентября 2011, 14:29 | Сообщение # 19
частый гость
Сейчас нет на сайте
05142, эт если ресурсов ГЛАЗОМ жуй. happy

Добавлено (26.09.2011, 14:29)
---------------------------------------------
+ на локальном может и не потянет.




Сообщение отредактировал Polo - Понедельник, 26 Сентября 2011, 14:30
lumennesДата: Понедельник, 26 Сентября 2011, 14:31 | Сообщение # 20
Убийца Diablo
Сейчас нет на сайте
Polo, 05142, кстати в чем плюс серверов на этих ЯП?

Как мало вы знаете, как громко вы судите...
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Клиент GM + Сервер C++ (Help Me!)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг