forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   MMO??? Что и как ? O_o (http://forum.boolean.name/showthread.php?t=6337)

klopmaks 05.09.2008 00:12

MMO??? Что и как ? O_o
 
Может быть ктото подкинет простой сетевой игры...
С сервером простеньким чтобы только передвижение просчитывало и клиентом.
Типа кубы ходят по плейну. Или просто какую нибуть инфу о работе блица с сервером.
Или может просто пример игры по локальной сети.
Простенький пример.
Или может уроки какие нибуть, статьи на эту тему.
Заранее благодарен всем.

А теперь короткое ЧаВо по моему посту:
1. Да я нуб который ничего не умеет
2. ДА я уже начал делать мморпг
3. Прошу свои "умные" посты постить в другой теме , не здесь

Спасибо за внимание.

ABTOMAT 05.09.2008 01:07

Ответ: MMO??? Что и как ? O_o
 
Фак Ю! (FAQ)
http://forum.boolean.name/showthread.php?t=4775
http://forum.boolean.name/showthread.php?t=4760

Спасибо Тадеусу за статьи. (Жаль что мало кто их читает или даже ищет) Это имхо базовые знания которые нужны для создания сетевой игры разумеется. Не ММО, разумеется, для этого нужен вагон терпения и опыт.

Кроме того обрати внимание что должна быть сервер-клиентная архитектура игры, то есть всё, что обрабатывает игровую логику, физику, коллизии - должно быть собрано вчётко в одном месте, а то, что обрабатывает инпут, вывод и необязательную физику, которая на игры влияния не оказывает (колыхание травы, например) - в другом месте, чтобы когда будет написана основа разделить уже это всё на непосредственно сервер и клиент.
Кроме того всё надо обязательно стандартизировать, никаких глобальных переменных для игрока, оружия и т.п. т.к. это делает невозможным добавление и обработку новых игроков.

Передачу данных свести к минимуму. Не передавать строки кроме случаев, где по-иному никак и ни в коем случае не в цикле (имя игрока один раз при коннекте). Продумай, шо будеш делать если пинг от юзера (или сервера) слишком велик. Например, ЕСЛИ всё ещё нет пинга И игрок бежал ТОГДА продолжить заставлять персонажа бежать дальше пока ситуация с пингом не изменится ИНАЧЕ если есть пинг - делать шо "скажет" клиент, если нету пинга то ничего не делать.

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

ffinder 05.09.2008 01:09

Ответ: MMO??? Что и как ? O_o
 
иногда человек так задает вопрос что невозможно ему ответить...
по пунктам:
1. не путай онлайн и ММО (отличие в слове "массивная")
2. на Блице никто в здравом уме сервер писать не станет.
3. тебе надо будет написать И клиент, И сервер.
4. уроки и статьи находятся на http://blitzetc.blitzmax.ru/index.ph...B9%D1%82%D0%B8
5. вот еще по русски: http://gamedev.ru/articles/?sect=8 (заметь я потратил на поиск ровно 1 минуту)

MiXaeL 05.09.2008 01:47

Ответ: MMO??? Что и как ? O_o
 
Тебе оно надо?
Цитата:

Вообще-то сначала я собирался делать MMORPG, но умные люди сказали: "убей сибя, пешы арканоед"

SBJoker 05.09.2008 01:56

Ответ: MMO??? Что и как ? O_o
 
Немог пройти мимо такой темы и решил ответить конкретно на поставленый вопрос:
> MMO??? Что и как ? O_o

Модно, круто, прибыльно и долго, дорого, нереально малыми силами. Ж)

Антихрист 06.09.2008 16:36

Ответ: MMO??? Что и как ? O_o
 
Для начало Изучи всё о пакетах(прием отправка) посмотри примеры с udp соединением(Tcp не покатит на онлаин игру-это будет слаидшоу)

jimon 06.09.2008 16:59

Ответ: MMO??? Что и как ? O_o
 
Антихрист
это вопрос кривизны рук, а не отличий технологий tcp и udp

Tadeus 06.09.2008 17:10

Ответ: MMO??? Что и как ? O_o
 
2Антихрист О, чудо! Как же тогда работают современные ММОРПГ на тсп? :D

Антихрист 06.09.2008 17:11

тогда добавлю имхо tcp не покатит.Тем более если он(а) в этом нечего не понимает

Современные игры делают на BLitz? :D без библ?

Tadeus 06.09.2008 17:17

Ответ: MMO??? Что и как ? O_o
 
Цитата:

Сообщение от Tadeus (Сообщение 85913)
2Антихрист О, чудо! Как же тогда работают современные ММОРПГ на тсп? :D

Цитата:

Сообщение от Антихрист (Сообщение 85915)
Современные игры делают на BLitz? :D без библ?

Где я хотя бы слово сказал о блице?

Антихрист 07.09.2008 04:37

Ответ: MMO??? Что и как ? O_o
 
Цитата:

Сообщение от klopmaks (Сообщение 85811)
Может быть ктото подкинет простой сетевой игры...
С сервером простеньким чтобы только передвижение просчитывало и клиентом.
Типа кубы ходят по плейну. Или просто какую нибуть инфу о работе блица с сервером.
Или может просто пример игры по локальной сети.
Простенький пример.
Или может уроки какие нибуть, статьи на эту тему.
Заранее благодарен всем.

А теперь короткое ЧаВо по моему посту:
1. Да я нуб который ничего не умеет
2. ДА я уже начал делать мморпг
3. Прошу свои "умные" посты постить в другой теме , не здесь

Спасибо за внимание.

Tadeus Ну речь то идет о создании Игры на Blitz3d. Ему с udp будет проще. :stop:

Tadeus 07.09.2008 10:30

Ответ: MMO??? Что и как ? O_o
 
Цитата:

Сообщение от Антихрист (Сообщение 85943)
Tadeus Ну речь то идет о создании Игры на Blitz3d. Ему с udp будет проще. :stop:

В данном случае имхо надо использовать их совместно. Например, ТСР для логина, регистрации, чата и т.п., а ЮДП - для передвижения и действий.

klopmaks 14.09.2008 16:18

Re: MMO??? Что и как ? O_o
 
спасибо Тадеусу за статии =)
Там дальше приводиться пример "кубо-гонок"
Я там немного застрял...
Код я понял и переписал так что у одного клиента вид(камера) от одного куба
у второго от второго. И управление.
Потоки тоже вроде поменял , но мне выдает 1 клиент что стрим_1 даз нот екзист
Кода немного поетому я выложу. Вопрос в первую очередь к Tадуесу помогите плз.

1 Клиент
Const out_port=53424
Const in_port=53425
Global Stream_1=CreateUDPStream(53425)
Global Stream_2=CreateUDPStream(53424)
Global op_ip$=Input()
Global cub
Global cub2

Graphics3D 640,480,32,2
SetBuffer BackBuffer()

plane=CreatePlane()
plane_tex=LoadTexture("terrain-1.jpg")
PositionEntity plane,0,-1,0
EntityTexture plane,plane_tex
ScaleTexture plane_tex,15,15

cub=CreateCube()
MoveEntity cub,-2,0,0
cub2=CreateCube()
MoveEntity cub2,2,0,0

cam=CreateCamera(cub)
PositionEntity cam,0,5,-10

While Not KeyHit(1)
If KeyDown(200) MoveEntity cub,0,0,.1
If KeyDown(208 ) MoveEntity cub,0,0,-.1
If KeyDown(203) TurnEntity cub,0,1,0
If KeyDown(205) TurnEntity cub,0,-1,0
UpdateNetwork()
RenderWorld
Flip
Wend

End

Function UpdateNetwork()
WriteLine Stream_1,EntityX(cub)
WriteLine Stream_1,EntityZ(cub)
WriteLine Stream_1,EntityYaw(cub)
SendUDPMsg Stream_1,Int_IP(op_ip$),in_port
If RecvUDPMsg(Stream_2) Then
PositionEntity cub2,Float(ReadLine$(Stream_2)),0,Float(ReadLine$( Stream_2))
RotateEntity cub2,0,Float(ReadLine$(Stream_2)),0
EndIf
End Function

Function Int_IP(IP$)
d1%=Left(IP$,Instr(IP$,".")-1):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
d2%=Left(IP$,Instr(IP$,".")-1):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
d3%=Left(IP$,Instr(IP$,".")-1):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
d4%=IP$
Return (d1 Shl 24) + (d2 Shl 16) + (d3 Shl 8 ) +d4
End Function

2 Клиент

Const out_port=53425
Const in_port=53424
Global Stream_1=CreateUDPStream(53424)
Global Stream_2=CreateUDPStream(53425)
Global op_ip$=Input()
Global cub
Global cub2

Graphics3D 640,480,32,2
SetBuffer BackBuffer()

plane=CreatePlane()
plane_tex=LoadTexture("terrain-1.jpg")
PositionEntity plane,0,-1,0
EntityTexture plane,plane_tex
ScaleTexture plane_tex,15,15

cub=CreateCube()
MoveEntity cub,-2,0,0
cub2=CreateCube()
MoveEntity cub2,2,0,0

cam=CreateCamera(cub2)
PositionEntity cam,0,5,-10

While Not KeyHit(1)
If KeyDown(200) MoveEntity cub2,0,0,.1
If KeyDown(208 ) MoveEntity cub2,0,0,-.1
If KeyDown(203) TurnEntity cub2,0,1,0
If KeyDown(205) TurnEntity cub2,0,-1,0
UpdateNetwork()
RenderWorld
Flip
Wend

End

Function UpdateNetwork()
WriteLine Stream_1,EntityX(cub2)
WriteLine Stream_1,EntityZ(cub2)
WriteLine Stream_1,EntityYaw(cub2)
SendUDPMsg Stream_1,Int_IP(op_ip$),in_port
If RecvUDPMsg(Stream_2) Then
PositionEntity cub,Float(ReadLine$(Stream_2)),0,Float(ReadLine$(S tream_2))
RotateEntity cub,0,Float(ReadLine$(Stream_2)),0
EndIf
End Function

Function Int_IP(IP$)
d1%=Left(IP$,Instr(IP$,".")-1):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
d2%=Left(IP$,Instr(IP$,".")-1):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
d3%=Left(IP$,Instr(IP$,".")-1):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
d4%=IP$
Return (d1 Shl 24) + (d2 Shl 16) + (d3 Shl 8 ) +d4
End Function

Tadeus 14.09.2008 16:31

Ответ: MMO??? Что и как ? O_o
 
В ЮДП нет клиентов и серверов. И тот код, что я давал работает так: каждый запускает и вводит ИП второго игрока. Ну, а потом начинается беготня кубиками.

klopmaks 14.09.2008 17:36

Re: MMO??? Что и как ? O_o
 
Да?
А если мы запускаем два раза эту програму на одной машине.(одну из блица , вторую компилируем) и вводим 127.0.0.1 то тогда что будет ?


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

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