![]() |
Ответ: Вопрос-Ответ (для новичков)
Делаю 3Д-змейку..
Встала ненужная проблема! При копировании (а так же и загрузки нового) меша Код:
Snake\body=CopyMesh(Snake_main_body) Т.е. Snake\body - то что мне нужно и я могу им управлять. А вот CopyMesh(Snake_main_body) (думаю что это) остаётся на месте как осадок.. На Hide ни Free ни Delete не могу использовать, так как не знаю что это такое остаётся. А заготовка змейки у меня хорошая! Делаю на конкурс IGDC. Сам с нуля писал, так как так легче. |
Ответ: Вопрос-Ответ (для новичков)
Удали его так
PHP код:
PHP код:
|
Ответ: Вопрос-Ответ (для новичков)
Я знаю в чем проблема! У тебя в коде что-то не так.
|
Ответ: Вопрос-Ответ (для новичков)
Согласен с NitE, что-то в коде.
|
Ответ: Вопрос-Ответ (для новичков)
Намёк то понятен. Просто непонятка при наипростейшей блитзевской комадне, от кода которая особо не зависит.
Кажется засирание копиями происходит при обращении Last Before First хендлам типов. Сделал КопиМеш только при загрузки каждой цепочки Код:
For i%=1 To Snake_Size Как установить Код:
Snake=First Snake_Type Это устанавливает модель головы на первую цепь. (Модель головы ещё не сделана) Код:
Snake\body=Snake_main_body |
Ответ: Вопрос-Ответ (для новичков)
Используй список только для тела, голову и хвост сделай отдельно.
|
Ответ: Вопрос-Ответ (для новичков)
Цитата:
Удалять (чистить) Mesh нельзя? Пока сделаю решение такое: Код:
Snake=First Snake_Type При макс. количестве 50 - память не нагрузится. |
Ответ: Вопрос-Ответ (для новичков)
Цитата:
Логику игры легче поправить на раннем этапе, потом станет еще хуже. |
Ответ: Вопрос-Ответ (для новичков)
В physx создал луч ray_cam = pxCreateRay()
позицыонирую в координаты камеры pxRaySetPosition(ray_cam,EntityX(cam),EntityY(cam) ,EntityZ(cam)) так не выдает ошибок, как только добавляю строчку ray=pxRayGetBody(ray_cam, 2) то примерно через секунду после проверки игры она зависает. Может это связано с лицензией? но при лицензии ошибка просто выскакивает, а тут зависает. |
Ответ: Вопрос-Ответ (для новичков)
Физикс устарел и не обновляется, используй что-нибудь более актуальное, например буллет и проблем станет меньше.
|
Ответ: Вопрос-Ответ (для новичков)
далеко зашел в игре, чтобы возвращаться. Да мне от физикса многое и не надо, только бы с лучами разобраться
|
Ответ: Вопрос-Ответ (для новичков)
LLI.T.A.L.K.E.R., зачем тебе искать голову через First, ты изначально создавай её первой и присваивай меш головы, а остальные части создавай в цикле и для них свой меш.
Ещё в сам тип можно флаг добавить isHead - и для башки поставить ему 1. Тогда можно будет в цикле обработки по нему определять голову, и можно не выносить из списка голову. И для хвоста аналогично. |
Ответ: Вопрос-Ответ (для новичков)
Змейку сделал. Вот скриншот.
Уезжаю на недельку в деревню. Комментарии в коде до конца допишу и выложу архив. |
Ответ: Вопрос-Ответ (для новичков)
Цитата:
|
Ответ: Вопрос-Ответ (для новичков)
Помогите по подробней разобраться с командой физикса враппера:
pxBodySetMassSpaceInertiaTensor(num%, x#, y#, z#) Я только знаю что это влияет на инерцию тела(каким-то образом) Но когда я телу ставлю все параметры одинаковыми, то оно прыгает или не движится 0_o! Видимо плохо понимаю команду! |
Ответ: Вопрос-Ответ (для новичков)
как в Physx предотвратить ходьбу по наклонам? а то заходит даже на наклоны которые почти как стена, а нужно, чтобы максимум на наклон 50-60 градусов
|
Ответ: Вопрос-Ответ (для новичков)
Возможно проверять контакты тела, смотреть нормаль нужного контакта и ограничивать относительно нормалей как надо?
|
Ответ: Вопрос-Ответ (для новичков)
Цитата:
Цитата:
Еще можешь увеличить грави(должно помочь). И посмотри в справке такие команды как:Дампинг,Трение(материалы),Масса.. Поэксперементируй должно помочь (еси руки правильно растут)! ЗЫ Я лично с нормалями уже дружу пол года и пока все норм спасают меня от багов. Да кстати ты какую форму геометрии используешь для игрока?Капсулу? |
Ответ: Вопрос-Ответ (для новичков)
материалы и настройка параметров помогут
|
Ответ: Вопрос-Ответ (для новичков)
Mind Знаю, что глупо, но использую цилиндр для тела игрока :-D
С нормалями никогда не работал, можно чудь по подробней? или где про них справку бы найти? |
Ответ: Вопрос-Ответ (для новичков)
Итак начнём: 1) Нормали.... уууу даже незнаю как рассказать те то. 2)Лучше используй капсулу для игрока(нарисуй в максе и экспортни и зделай хулл),но я использую три деления(верх(для приседания),центр(для движения),низ для подскока(я даже тему создавал в теме ксорса про ноги)). 3) Вернёмся к нормалям. В стандартном блитзовском хелпе есть про нормали (в ксорсе они идентичны).Вкратце: нормаль(имеет значение от 0 до 1) определяет ... блин лучше в иннете по гугли.Кароче еси ты дотронулся шаром(к примеру) до точки то через нормали(команду) можно определить как бы угол(образно) относительно прикосновения. Я лично нетом не пользовался по этой теме а все добивался сам методом эксперемента :super: . |
Ответ: Вопрос-Ответ (для новичков)
Нормаль это перпендикуляр к плоскости. Если плоскость задана уравнением вида аХ+bY+cZ+d=0, то нормаль это вектор(a,b,c). Если вектор нормали привести к длине 1, то он будет(кос(альфа), кос(бета), кос(гамма)). где альфа угол вектора к оси икс, бета к игрек и гамма к зед.
|
Ответ: Вопрос-Ответ (для новичков)
Цитата:
|
Ответ: Вопрос-Ответ (для новичков)
А вот нифига, или 1 или -1 если уж нато пошло. А вообще ниче не мешало мне ставить нормали любой длины, главное чтобы направление верное было :D
|
Ответ: Вопрос-Ответ (для новичков)
Цитата:
Цитата:
|
Ответ: Вопрос-Ответ (для новичков)
Mind, а какова длина нормали? И если нормаль направленна противоположно нормальному вектору, что это будет значить?
кстати команда xvectorpitch и xvectoryaw вернет углы наклона вектора. От них можно определить превышает ли угол плоскости тот после, которого подъем уже не возможен или нет. И можно вычислить направление куда должен соскользнуть игрок если плоскость имеет наклон больше. |
Ответ: Вопрос-Ответ (для новичков)
Я видно не так хорошо разбираюсь в векторах как ты...
...но я имел в виду команду CollisionNY(к примеру): Цитата:
|
Ответ: Вопрос-Ответ (для новичков)
Допустим есть число 2.34567, как его привести к числу вида 2.34, тоесть оставить только две цифры после точки?
Можно, конечно, сделать через строки, но мне кажеться ето не правельно:-D |
Ответ: Вопрос-Ответ (для новичков)
Код:
Function x$(num#,p%) |
Ответ: Вопрос-Ответ (для новичков)
а что в Blitz нету команды перевода из строки в число? как это обойти?
|
Ответ: Вопрос-Ответ (для новичков)
Есть:
Int( строка ) - Преобразовывает строку в ближайшее целое значение. Float#( строка ) - Преобразовывает строку в float соответственно. Обходить ничего не надо, т. к. перевод происходит автоматически, в зависимости от типа переменной (определяется спец. символами %, #, $ ). |
Ответ: Вопрос-Ответ (для новичков)
Попробуй b#=int(b#*100)/100 должны остаться токо последние две цифры.
|
Ответ: Вопрос-Ответ (для новичков)
А в физиксе лучи сильно нагружают комп? тоесть сколько я могу создать лучей в одной сцене, чтобы средний комп не тормозил? а то даже примерно не представляю 10? 50? 500?
|
Ответ: Вопрос-Ответ (для новичков)
Прошу помощи знающих и разбирающихся, т.к. сам в типах плохо разбираюсь.
Допустим, имеется тип: Код:
Type cClient Далее. Допустим, один из объектов типа cCLient имеет id = 10. Вопрос: возможно ли без цикла for-each (т.е. без перебора всех объектов типа) достать тот объект из типа, у которого id% = 10, при условии знания что данный объект существует? И если возможно, то как? Прошу не разводить демагогию на тему "зачем это надо" |
Ответ: Вопрос-Ответ (для новичков)
Т.к. Type в Blitz3D есть по сути итератор объектов, но не реализует как таковой индексации по типу хаш таблиц. Крч, тебе нужно завезьти массив отдельно от типа, он будет выступать в роли списка, и содержать ссылки по индексу на сам объект.
Код:
Dim clients.cClient(MAX_CLIENTS%) Создавай новый объект сразу в массив и далее работай с ним. Тебе нужно изучить Handle и Object интерфейсы в Blitz3D, это не просто будет для тебя.. Вот тут отличные примеры: http://www.blitzbasic.com/Community/...hp?topic=75556 |
Ответ: Вопрос-Ответ (для новичков)
По-моему. Мока хочет, чтобы id объекта соответствовал номеру ячейки в массиве. И так ты действительно сможешь достать некий объект (например с id = 10) из ячейки под номером 10.
При удалении и создании элементов может быть путаница. При создании тебе надо будет находить пустую ячейку. А при удалении можно сделать небольшую пересортировку массива, чтобы не было пустых ячеек. Это зависит от того, что тебе надо. Самое простое будет выглядеть как=то так: Код:
Const Dim_size% = 100 |
Ответ: Вопрос-Ответ (для новичков)
Это типо hash таблица получается. Удобно если нужно делать сетевую игру, где ты знаешь что все объекты имеют свой уникальный ID.
Вот если назначаешь 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, чем разобраться в моём творчестве. Да никто этого делать и не будет, наверно. |
Ответ: Вопрос-Ответ (для новичков)
А если создать массив
Players_IDs (100) К определённой ячейке массива привязать Handle(cClient) Код:
Players_IDs(id)=Handle(cClient) Я тоже скоро с этим столкнусь (RakNET) |
Ответ: Вопрос-Ответ (для новичков)
Как в блице работает гамма? Никак не уловлю принцип.
Нужно для затемнения изображения. Даже функцию нашел. Но мне важно понять принцип). Справку читал. Никогда не пользовался гаммой но тут вдруг понадобилось). |
Ответ: Вопрос-Ответ (для новичков)
Лучше её не трогай - там надо на каждый цвет ставить цвет-замену, что херня.
Цитата:
|
Ответ: Вопрос-Ответ (для новичков)
Цитата:
|
Ответ: Вопрос-Ответ (для новичков)
Хочу купить все FastЛибы, но у меня в инете только WebMoney рубли имеются.
И подскажите пожалуйста его разработчика на этом форуме... Нашёл: Mikhail Vostrikov [MixailV] Отправил ему сообщения. |
Ответ: Вопрос-Ответ (для новичков)
Цитата:
|
Ответ: Вопрос-Ответ (для новичков)
а как в блице преждевременно покинуть условие if ... endif ?
|
Ответ: Вопрос-Ответ (для новичков)
Уф.. Такого не должно быть по логике вообще, у тебя проблемы с логикой и блоками.
Заведи дополнительный true/false и используй его.. |
Ответ: Вопрос-Ответ (для новичков)
Цитата:
PHP код:
|
Ответ: Вопрос-Ответ (для новичков)
Цитата:
Если тебе обязательно нужно использовать структуру if ... elseif, то выйди с помощью Goto PHP код:
|
Ответ: Вопрос-Ответ (для новичков)
Цитата:
|
Ответ: Вопрос-Ответ (для новичков)
Страдаю фигней. Пытаюсь написать сервер, но все как то сложно. Уже разобрался как передать в браузер html файл, но вот с изображениями какая то борода. Собсно как передать в браузер картинку и отобразить ее? Получилось только вызвать диалог скачивания файла, да и то получился "файл-пустышка".
Примеров с этим связанных не нашел никаких. :( |
Ответ: Вопрос-Ответ (для новичков)
Какой сервер, ты о чём, о веб сервере, типо пишешь свой апатч?
|
Ответ: Вопрос-Ответ (для новичков)
Типо веб-сервер. Апач сильно сказано.. Я так по мелочи.. :)
|
Ответ: Вопрос-Ответ (для новичков)
Хм, не делал никогда, но думаю что там нужно выдавать бинарный код картинки, но заранее объявив нужные хэдеры.
В php есть функция header, и там объявляются разного рода хэдеры, с ними думаю и нужно поиграться.. |
Ответ: Вопрос-Ответ (для новичков)
А как в бинарный код переводить?
PHP код:
|
Ответ: Вопрос-Ответ (для новичков)
ReadByte
WriteByte |
Ответ: Вопрос-Ответ (для новичков)
Вложений: 1
Вот пример из стандартной поставки пуребасика. Синтаксис там похожий.
И сервера никто на блице не пишет. |
Ответ: Вопрос-Ответ (для новичков)
В этом примере тоже самое, что я сделал на бейсике. :)
|
Ответ: Вопрос-Ответ (для новичков)
Вложений: 1
В общем не много еще допилил, но с картинками так и не разобрался.
Заходить 127.0.0.1/имя_файла_из_папки.формат |
Ответ: Вопрос-Ответ (для новичков)
Nex, а можно больше описания, что это и зачем? А то как-то стрёмно качать не знаю что, да и зачем?
|
Ответ: Вопрос-Ответ (для новичков)
эм.. 2кб.
Подобие веб-сервера. Надеюсь, что кто-нибудь глянет код и поможет с отсылкой файлов из сервера в клиент (браузер)... Ибо я не догоняю.. В оригинальном и отосланном файле одна и та же информация, но один файл нормальный, а другой как будто поврежденный. :( |
Ответ: Вопрос-Ответ (для новичков)
Цитата:
Может кто посоветовать исходник сетевого шутера (сервер-клиент). Только не Quake и подобные. Так по мелочи. Хочется рассмотреть контроль данных игроков. (хотя quake тоже стал интересен - его сам найду) |
Ответ: Вопрос-Ответ (для новичков)
В блитце помимо .b3d .md2 файлов, как анимировать файлы типа .x .3ds?
|
Ответ: Вопрос-Ответ (для новичков)
x по-мойму вроде вообще не аннимируется, 3ds анимируется, но обычнными параметрами (вращение фигур, масштаб, позиция), но костной анимации нет. Для блица самое то - b3d
|
Часовой пояс GMT +4, время: 15:48. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot