Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D

Ответ
 
Опции темы
Старый 23.08.2007, 19:43   #1
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Счастье Проблема аццкого мегапроЭкта ...

Вот тут создаю аццкий мегапроэкт.. ну типо онлайн рпг..

Так.. уже есть меню и перемещение по карте. Но вот проблема в том, что если кто-нибудь подключается, сразу появляются УЖАСНЫе тормоза и лаги... В чём может быть проблема, кроме моих кривых рук ?

Вот в общем функция обновления игрока:

Function Updateplayer ( p.Player , m$)
If  m = myid Then
PositionEntity camera , EntityX (p\Model) , EntityY (p\Model)+30 , EntityZ (p\Model) - 25 ;Камера над игроком

TranslateEntity p\Model , 0 , -1 , 0 ;гравитация нах
PointEntity p\Model , Cursor ;поворачиваем объект к курсору
RotateEntity p\Model , 0 , EntityYaw (p\Model) , 0 ;типо чтоюы игрока не вертело


SendNetMsg 2,PackMsg$(myent),myid,0

End If


End Function
И две функции для инета...

Function PackMsg$(ent)
 Return EntityX(ent)+"|"+EntityY(ent)+"|"+EntityZ(ent)+"|"+EntityYaw(ent)
End Function
Function UnpackMsg(ent,dat$)

 xp=Instr(dat$,"|")
 x=Float(Left(dat$,xp))
 dat$=Right(dat$,Len(dat$)-xp)
 yp=Instr(dat$,"|")
 y=Float(Left(dat$,yp))
 dat$=Right(dat$,Len(dat$)-yp)
 zp=Instr(dat$,"|")
 z=Float(Left(dat$,zp))
 dat$=Right(dat$,Len(dat$)-zp)
 yaw=Float(Left(dat$,Len(dat$)))
 PositionEntity ent,x,y,z
 RotateEntity ent,0,yaw,0
End Function


Кстати, могу дать исходники...
(Offline)
 
Ответить с цитированием
Старый 23.08.2007, 20:01   #2
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Проблема аццкого мегапроЭкта ...

Проверь в каком именно учаске лаги, просто сделай перед операцией Time=Millisecs()
и после операции
TotTime=Millisecs()-Time
Узнаешь затраченное врмя на опр участок кода. Так определи место лагов. Потом уже детально форсируй - читай.
(Offline)
 
Ответить с цитированием
Старый 23.08.2007, 20:15   #3
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Re: Проблема аццкого мегапроЭкта ...

хм.... жрёт сильно фпс функция Updateplayer ... после доключения кого либо ужассно тормозит..
(Offline)
 
Ответить с цитированием
Старый 23.08.2007, 22:31   #4
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Re: Проблема аццкого мегапроЭкта ...

выяснил.. аццкие глюки из-за SendNetMsg 2,PackMsg$(myent),myid,0 ... блин, кто знает , что делать? мона , конечно, сделать, чтобы эта фунция а раз в секунду выполнялась, но всё таки как-нибудь по другому можно?
(Offline)
 
Ответить с цитированием
Старый 23.08.2007, 22:58   #5
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Проблема аццкого мегапроЭкта ...

Я вызываю апдейт сети с фиксированной частотой,а не каждую итерацию.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 23.08.2007, 23:18   #6
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Re: Проблема аццкого мегапроЭкта ...

хы, то есть , отправляем данные один раз в секунду? а не будет как бы такие задержки?
(Offline)
 
Ответить с цитированием
Старый 23.08.2007, 23:28   #7
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Проблема аццкого мегапроЭкта ...

откалибруй, ну 10мс, например
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 23.08.2007, 23:37   #8
Raiter
Гигант индустрии
 
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений
(для 92 пользователей)
Re: Проблема аццкого мегапроЭкта ...

Моё скромное имхо:

1) Блицевкий ДП не пригоден для создания ММОРПГ
2) Знаний у тебя совершенно не достаточно. Вижу ты прочитал статью Тадеуса и решил что уже сможеш создать Онлайн игру? Заблуждаешся! И еще я вижу что ты тупо копипастиш код из статьи. ИМХО в суть ты даже не вьехал!
(Offline)
 
Ответить с цитированием
Старый 24.08.2007, 00:08   #9
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Re: Проблема аццкого мегапроЭкта ...

1. Для мморпг может и нет, но для простенькой рпг у думаю пригоден
2. В принципе вьехал, но всё таки немного не понятно
3. Поставил таймер , но всё равно тормоза.
(Offline)
 
Ответить с цитированием
Старый 24.08.2007, 00:42   #10
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Смущение Re: Проблема аццкого мегапроЭкта ...

по ходу дела прошу простить, ибо ступил сильно.. ставли таймер на отправку сообщений, а на считывание забыл..

Спустя 2 часа.. Ы

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

Спустя 12 часов. Ы

норм работает, но хотя бы когда ОДИН раз выполняешь функцию передачи данных, это ужас.. Тормоз на 0,5 секунты появляется...
(Offline)
 
Ответить с цитированием
Старый 24.08.2007, 16:38   #11
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Re: Проблема аццкого мегапроЭкта ...

никогда не передавай строки (только когда нуно передать имя игрока или текст)
Передавай байты и будет тебе счастье (но РПГ все равно не выйдет )
__________________
(Offline)
 
Ответить с цитированием
Старый 24.08.2007, 21:47   #12
MiXaeL
Бывалый
 
Аватар для MiXaeL
 
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений
(для 267 пользователей)
Re: Проблема аццкого мегапроЭкта ...

tormoz +1
Сообщение от tormoz
Передавай байты и будет тебе счастье (но РПГ все равно не выйдет )
(Offline)
 
Ответить с цитированием
Старый 24.08.2007, 23:48   #13
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Вопрос Re: Проблема аццкого мегапроЭкта ...

данных не так уж и много передаётся... я пробовал в 15 раз больше - тормозов больше не стало...

а вот выйдет у меня рпг или нет, ужо моё дело. Возможно я плюну на инет и сделаю обычною рпгшу..
(Offline)
 
Ответить с цитированием
Старый 25.08.2007, 12:46   #14
Jet
ПроЭктировщик
 
Регистрация: 04.09.2005
Сообщений: 139
Написано одно полезное сообщение
Re: Проблема аццкого мегапроЭкта ...

приведи код функции SendNetMessage
(Offline)
 
Ответить с цитированием
Старый 25.08.2007, 13:47   #15
jimon
 
Сообщений: n/a
Re: Проблема аццкого мегапроЭкта ...

Jet

SendNetMsg type,data$,from,to,reliable
Parameters
type = value 1-99
data$ = string containing message to send
from = player ID of the sender
to = player ID of the recipient (0=broadcast)
reliable = flag for sending message reliably

Description
First off, this ONLY works when you have joined a network game via StartNetGame or JoinNetGame and you have created a player via CreateNetPlayer (you must create a player, even if it is just to lurk).

This is probably the most complicated of the networking commands. This what you use to actually send a message to one or all of the players on the network game. The other players will use RecvNetMsg() to intercept your message.
The TYPE parameter is a number from 1 to 99. These values are denoted as 'user messages'.

The Data$ parameter is the actual string that contains the message you want to send. Helpful to know that in order to keep traffic low, you will want to combine details of a message into a single message instead of sending multiple messages with a single element. For example, you might want to send X, Y, and FRAME in a single string like "200,100,4" and parse it out at the recipient's end.

FROM is the player's ID that is sending the message. This is the value returned from the CreateNetPlayer() command.

TO is the player's ID you wish to send the message to. A default value of 0 will broadcast to ALL players.

The RELIABLE flag will put a priority on the message and it will ensure there is no packet loss in the delivery. However, it is at least 3 times slower than a regular non-reliable message.

The example requires that you run it on the local machine while the remote computer runs the example in the RecvNetMsg() command.
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с С++ HAMANN C++ 10 24.12.2009 09:31
Проблема rr333 3D Моделирование 10 07.06.2009 17:08
Проблема в MP Nautilus MidletPascal 4 26.10.2008 05:30
Проблема с MP3 и EAX Maxim1441 2D-программирование 3 29.07.2008 18:29
проблема с ode jimon 3D-программирование 0 24.09.2005 17:20


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com