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

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

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

Ответ
 
Опции темы
Старый 14.08.2011, 18:27   #1441
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Вопрос-Ответ (для новичков)

Попробуй b#=int(b#*100)/100 должны остаться токо последние две цифры.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
KingMaks (14.08.2011)
Старый 19.08.2011, 20:39   #1442
KingMaks
Знающий
 
Аватар для KingMaks
 
Регистрация: 26.11.2009
Сообщений: 313
Написано 35 полезных сообщений
(для 95 пользователей)
Ответ: Вопрос-Ответ (для новичков)

А в физиксе лучи сильно нагружают комп? тоесть сколько я могу создать лучей в одной сцене, чтобы средний комп не тормозил? а то даже примерно не представляю 10? 50? 500?
__________________
StimuL
Maks
(Offline)
 
Ответить с цитированием
Старый 26.08.2011, 19:46   #1443
St_AnGer
Элита
 
Аватар для St_AnGer
 
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений
(для 2,828 пользователей)
Ответ: Вопрос-Ответ (для новичков)

Прошу помощи знающих и разбирающихся, т.к. сам в типах плохо разбираюсь.

Допустим, имеется тип:

Type cClient
    Field id%
End Type
Соответственно id% - идентификационный номер клиента.
Далее.
Допустим, один из объектов типа cCLient имеет id = 10.

Вопрос: возможно ли без цикла for-each (т.е. без перебора всех объектов типа) достать тот объект из типа, у которого id% = 10, при условии знания что данный объект существует? И если возможно, то как?
Прошу не разводить демагогию на тему "зачем это надо"
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.

Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2


Скачать Doom 2D: Remake v0.3.8a
(Offline)
 
Ответить с цитированием
Старый 26.08.2011, 20:04   #1444
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Вопрос-Ответ (для новичков)

Т.к. Type в Blitz3D есть по сути итератор объектов, но не реализует как таковой индексации по типу хаш таблиц. Крч, тебе нужно завезьти массив отдельно от типа, он будет выступать в роли списка, и содержать ссылки по индексу на сам объект.

Dim clients.cClient(MAX_CLIENTS%)
MAX_CLIENT - должна быть константой, максимального числа ID. По сути ты создашь огромный массив, и не факт что он будет всё содержать.

Создавай новый объект сразу в массив и далее работай с ним.

Тебе нужно изучить Handle и Object интерфейсы в Blitz3D, это не просто будет для тебя..

Вот тут отличные примеры: http://www.blitzbasic.com/Community/...hp?topic=75556
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
St_AnGer (26.08.2011)
Старый 27.08.2011, 02:58   #1445
EvilChaotic
Мастер
 
Аватар для EvilChaotic
 
Регистрация: 05.04.2008
Сообщений: 910
Написано 530 полезных сообщений
(для 3,006 пользователей)
Ответ: Вопрос-Ответ (для новичков)

По-моему. Мока хочет, чтобы id объекта соответствовал номеру ячейки в массиве. И так ты действительно сможешь достать некий объект (например с id = 10) из ячейки под номером 10.

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

Самое простое будет выглядеть как=то так:

Const Dim_size% = 100
Dim Array%[Dim_size - 1]

Type cClient
 Field Id
End Type

Function CreateObject(id)
c.cClient = new cClient
c\id = id
return handle(c)
End Function

Как юзать
Dim Array[9] = CreateObject(9)

Как обращаться к объекту типа
Action(Array[9]) (Что-то делаем с объектом типа под номером 9)

Function Action(h)
c.cClient = Object.cClient(h)
;c\... =  тут что-то делаем с объектом типа
End Function
ЗЫ. Все это очень стремно. Не знаю зачем тебе это понадобилось, если расскажешь подробней то в свободное время напишу нормально.
__________________

EvilChaotic About
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
St_AnGer (27.08.2011)
Старый 27.08.2011, 05:52   #1446
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Вопрос-Ответ (для новичков)

Это типо hash таблица получается. Удобно если нужно делать сетевую игру, где ты знаешь что все объекты имеют свой уникальный ID.
Вот если назначаешь ID, то тут да, нада заботиться о разных вещах..
(Offline)
 
Ответить с цитированием
Старый 27.08.2011, 10:37   #1447
St_AnGer
Элита
 
Аватар для St_AnGer
 
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений
(для 2,828 пользователей)
Ответ: Вопрос-Ответ (для новичков)

Сообщение от EvilChaotic Посмотреть сообщение
ЗЫ. Все это очень стремно. Не знаю зачем тебе это понадобилось, если расскажешь подробней то в свободное время напишу нормально.
Сообщение от MoKa Посмотреть сообщение
Это типо hash таблица получается. Удобно если нужно делать сетевую игру, где ты знаешь что все объекты имеют свой уникальный ID.
Вот и ответ.
Я сделал что то наподобие сетевой системы на архитектуре клиент-сервер построенной на UDP протоколе (Udp выбран не случайно, хочу потом на основе этого сделать небольшой сетевой шутер).

Работает правильно, но из за кучи циклов for-each (которые используются мной для прохода по типам) при количестве клиентов больше пяти сервер начинает не сразу читать и отвечать на запросы сообщения клиентов.
Все объекты типа "клиент" имеют свой уникальный ID.
И всё это хорошо работает, если сервер не начинает отсылать всем клиентам банальный запрос пинга (тут происходит первая "пробежка" по типу cClient, которая работает и не подвешивает сервер). А в ответ на эти запросы пинга все клиенты начинают ему отвечать, соответственно в разное время, вот тут происходит ещё куча "пробежек" по типу cClient для поиска ID каждого приславшего клиента.

Т.е. выглядит это так у меня:
1) сервер посылает запрос;
2) каждый клиент получает данный запрос в разное время (соответственно скорости соединения клиента/сервера);
3) каждый клиент обрабатывает запрос;
4) каждый клиент посылает ответ серверу, содержащий id клиента и какие то данные;
5) сервер на каждый ответ проходит циклом for-each по типу cCLient для поиска ID который пришёл от клиента и обрабатывает данные.
далее снова п.1

Я пробовал уже делать стек команд (работает, но прироста к скорости работы сервера много не дало), пробовал сделать отсылание команд клиентам в определённый интервал (вот тут как раз добавилась возможность нормально подключиться ещё двум-трём клиентам). Так же пробовал реализовать одновременно стек команд, выполняющийся по определённому интервалу времени. Всё это либо не помогло, либо помогло, но очень слабо.
Я понимаю, что сервер на блице - это глупость, но хочу попробовать пока что на нём реализовать (сначала на чистом UDP блица, а потом на RakNet'е, если с ним разберусь). Моя архитектура работает, но вот забивается при большом количестве поступивших команд

вот для этого я и хочу сразу брать нужный мне id из типа cClient сразу, что бы сервер не грузил себя тучей циклов for-each. Если кто то мне объяснит как вообще реализуется подобное - буду неимоверно благодарен.

Я всё это делал взяв за основу архитектуру сетевой части движка IdTech 2 (Quake II, в котором более-менее разобрался и даже начал вносить свои небольшие изменения в геймплей). Но он то написан на C++, и большинство конструкций я просто не представляю как на блице можно реализовать, да и невозможно это наверно в принципе. В принципе, могу попробовать переделать IdTech 2 под свои нужды для сервера, но я хочу именно разобраться в данном вопросе и создать свой собственный сервер на блице.

зыЖ Свой код приводить не буду, ибо проще изобрести CryEngine 4, чем разобраться в моём творчестве. Да никто этого делать и не будет, наверно.
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.

Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2


Скачать Doom 2D: Remake v0.3.8a

Последний раз редактировалось St_AnGer, 27.08.2011 в 12:38.
(Offline)
 
Ответить с цитированием
Старый 27.08.2011, 11:54   #1448
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Ответ: Вопрос-Ответ (для новичков)

А если создать массив
Players_IDs (100)

К определённой ячейке массива привязать Handle(cClient)

Players_IDs(id)=Handle(cClient)
...
TempClient.cClient=Object.cClient(Players_IDs(id))
TempClient\Name="Player"+Str(id)

Я тоже скоро с этим столкнусь (RakNET)
(Offline)
 
Ответить с цитированием
Старый 28.08.2011, 21:00   #1449
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: Вопрос-Ответ (для новичков)

Как в блице работает гамма? Никак не уловлю принцип.
Нужно для затемнения изображения. Даже функцию нашел. Но мне важно понять принцип).
Справку читал. Никогда не пользовался гаммой но тут вдруг понадобилось).
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Старый 28.08.2011, 21:37   #1450
Nerd
Чудо-кот
 
Аватар для Nerd
 
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений
(для 1,471 пользователей)
Ответ: Вопрос-Ответ (для новичков)

Лучше её не трогай - там надо на каждый цвет ставить цвет-замену, что херня.
SetGamma red,green,blue,dest_red#,dest_green#,dest_blue#
After performing one or more SetGamma commands, you must call UpdateGamma.
__________________

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Gector (28.08.2011)
Старый 28.08.2011, 21:42   #1451
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: Вопрос-Ответ (для новичков)

Сообщение от Nerd96 Посмотреть сообщение
Лучше её не трогай - там надо на каждый цвет ставить цвет-замену, что херня.
Так и думал. Значит не то).
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Старый 02.09.2011, 02:03   #1452
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Ответ: Вопрос-Ответ (для новичков)

Хочу купить все FastЛибы, но у меня в инете только WebMoney рубли имеются.

И подскажите пожалуйста его разработчика на этом форуме... Нашёл: Mikhail Vostrikov [MixailV]

Отправил ему сообщения.
(Offline)
 
Ответить с цитированием
Старый 02.09.2011, 10:53   #1453
pepel
Мастер
 
Аватар для pepel
 
Регистрация: 23.09.2009
Адрес: ленобласть
Сообщений: 1,189
Написано 447 полезных сообщений
(для 2,526 пользователей)
Ответ: Вопрос-Ответ (для новичков)

Сообщение от LLI.T.A.L.K.E.R. Посмотреть сообщение
Хочу купить все FastЛибы, но у меня в инете только WebMoney рубли имеются.

И подскажите пожалуйста его разработчика на этом форуме... Нашёл: Mikhail Vostrikov [MixailV]

Отправил ему сообщения.
я помню его коекак выцепил в аське, если надо могу аську в личку тебе кинуть, но он тама редко бывает. похожая ситуация, у меня были только яндекс деньги)
(Offline)
 
Ответить с цитированием
Старый 02.09.2011, 15:08   #1454
KingMaks
Знающий
 
Аватар для KingMaks
 
Регистрация: 26.11.2009
Сообщений: 313
Написано 35 полезных сообщений
(для 95 пользователей)
Ответ: Вопрос-Ответ (для новичков)

а как в блице преждевременно покинуть условие if ... endif ?
__________________
StimuL
Maks
(Offline)
 
Ответить с цитированием
Старый 02.09.2011, 16:52   #1455
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Вопрос-Ответ (для новичков)

Уф.. Такого не должно быть по логике вообще, у тебя проблемы с логикой и блоками.

Заведи дополнительный true/false и используй его..
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
NitE (02.09.2011)
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пожалуйста дайте ответ на несколько вопросов Kuzma 3D-программирование 8 06.10.2009 19:38
Предложение к теме "вопрос-ответ" jimon Наш форум 1 27.02.2009 19:26
Мой ответ Жеке! alcosholik Болтовня 5 19.11.2005 16:41


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


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