27 ноября 2009

Pointer vs Index

начну с того, что вообще я планировал в скриптах хранить только индексы объектов в глобальных списках... потому как я считаю, что так безопаснее. нечего скриптам знать что-то большее, чем индекс объекта! передав этот индекс в движок, он уже разберется, как достать нужный объект!
проблемы, конечно же, начнутся, когда дело обстоит со списками, количество и индексы объектов в которых постоянно меняется. вариантов решения несколько:
  • а) можно заново вычислять индексы объектов после перестраивания списка
  • б) можно привязываться не к индексу в списке, а к некоему ID объекта
  • в) можно при убийстве объекта не изменять количество ссылок в списке, оставляя на том месте nil. таким образом количество ссылок в списке будет всегда накапливаться.
  • г) можно резервировать места для объектов при старте уровня (то есть при старте по некоторым ссылкам в списке будет nil), при необходимости же добавить заведомо известный объект - указывается также индекс, зарезервированный под объект. при удалении этого объекта, надо будет всего лишь убить сам объект, не изменяя количества объектов в списке. 

25 ноября 2009

о правде (маленькие философствования)...

это сообщение планируется как нечто другое в данном журнале. поэтому, очевидно, будет выбиваться из общего стиля и направленности остальных записей здесь... о чем пойдет речь? о мироздании и миропонимании... о том, какие мысли разрывают мое сознание и требуют к себе пристального внимания, об общении и взаимоотношениях...
итак, начнем))..
во-первых давайте определимся с тем, что верить во что-либо в том понимании, в котором чаще всего встречается ныне, а именно "признавать без доказательств", довольно ложный путь познания мира вокруг нас... не будет вдаваться в мистическую сущность бытия, в философские мысли о том "зачем мы живем?", но, немного поразмыслив и углубившись в самого себя, стоит решительно ответить на вопрос: "вы готовы признавать что-либо из уст других людей или книг без каких бы то ни было на то доказательств"? лично я - нет, именно поэтому и пишу в данный момент это увесистое сообщение))

23 ноября 2009

продвигается!..

последние три дня программировал скрипты и события... пришлось переделывать парсинг файлов, добавлять возможность глобальной "прописки" индексов объектов из скриптов... таким образом файл с событиями-скриптами выглядит как-то так:не знаю, насколько это окажется удобным в итоге... да и не знаю, как обычно такое делают другие, чтобы подсмотреть и сравнить... но пока меня такая система устраивает, работает быстро и пока надежно)).. одна проблема - надо теперь делать дебагер lua-кода, а то не шибко удобно полчаса искать, где опечатался и не поставил запятую))..

так что теперь есть выключатели, ключи и многое другое... вчера опробовал - работает!

но вскоре возникнут проблемы и пострашнее - звук, таймеры, невизуальные объекты, события на графические и анимированные объекты, а также прикрутка vbo ко всему этому, чтобы фпс держался на достойном уровне))..

17 ноября 2009

медленнее улитки...

"и снова здравствуйте..." (с)
оказывается, в отпуск программируется гораздо быстрее, чем вне его)).. сейчас игра почти не движется... ведь времени совсем нет... то есть вообще нет, ни свободного часа! это удручает до предела! ну ничего, совсем недолго до январских каникул остается, там уж мы развернемся!

по делу:
  • вчера прикрутил скрипты, и фпс упал ровно вдвое: с 55 до 30... немного подумав, вернул его к отметке в 50 фпс)).. но на деле скрипты не несут пока никакого функционала, и это надо срочно исправлять!.. и, конечно же, надо подумать над фпс посильнее - поднять хотя бы до сотни!
  • сделал побольше всяких объектов, в том числе многоугольных... работает на ура!..
  • добавил индикатор на дистанционное сочленение, добавил сочленение "вдоль оси" (Prismatic)... добавил возможность изменять пределы сочленений из редактора... dll-ка Box2d растет с каждым днем))
  • осталась проблема с заданием параметров тел... с одной стороны, трение, к примеру, присваивается Shape'у... а у меня не добраться до него из движка, только до тел... таким образом оставил пока у каждого тела один показатель трения - трение нулевого Shape'а...
итак, Box2d пока отличается своей стабильностью и приятностью в общении... есть, конечно, и сложности с ним, к примеру, сейчас возникла необходимость disable'ить сочленения на какое-то время, чего я, к сожалению, найти в движке не могу...
скрипты пока тоже на приличном уровне - надо только добавлять "слов" для общения между игровым движком и самим lua...
ну и, конечно же, надо повышать фпс... чем выше он будет - тем лучше, несомненно... пока подумываю об отрезании ненужных веток обновления объектов, переход на рендер внутри DirectOpenGl, и увеличение минимальных требований на железо))))..
но сейчас не до того, сейчас я наделен одним желанием - попробовать собрать первый тестовый уровень, пора бы уже))

10 ноября 2009

вкус победы))

совсем забыл отписаться о том, что мы с leric победили в конкурсе))
решили больше на GlScene.ru не участвовать в конкурсах ближайшее время... ибо нет интереса... соревновальческого стимула совсем нет... как появятся достойные конкуренты, может еще и поучаствуем))... но сейчас фан совсем иссяк на том форуме, надо двигаться дальше))
а впереди у нас забавная задумка!

p.s. кстати, все никак не могу добраться до скриптов в новом редакторе, сейчас все силы сконцентрировал на сочленениях и добавлении объектов в редакторе... это важно, потому и бьюсь над этим так долго!..

05 ноября 2009

всегда вперед!

Давно тут не писал... вот решил чуточку разбавить всякую ерунду другой ерундой)).. итак! оказалось сложноватым делать редактор для игры, заточенной на физике!.. это действительно непросто...
  • с одной стороны надо как-то определиться с тем, как передвигать объекты - вроде они должны взаимодействовать, чтобы не получилось, что в игре они тут же растолкают друг друга... но также надо давать способ отключить обсчет столкновений, чтобы была возможность пересечь два объекта для создания сочленений...
  • с другой стороны важны точные методы задания позиции и ориентации тел... хочется, чтобы шестеренки и колёса крутились относительно центра, а не со смещенными осями... но важно и кликанье - взял, подвинул, установил...
  • также сложность вызывает отображение не графических объектов - сочленений, к примеру... как отобразить, чтобы можно было выбрать и перемещать?
может показаться странным, что уже сейчас стремлюсь сделать удобный редактор, ведь игры и геймплея еще нет... вся штука в том, что геймплей придуман, но непонятно, нужно ли его еще сильнее нагромождать или сделать по принципу "все сложное выбросить"?! для этого хочется пощупать геймплей, а так как он планируется в физике головоломок, то редактор просто необходим - построение сложных и не очень задач на бумаге довольно трудоемко... тем более вспоминаются опыт других наших работ, когда интересные идеи образовывались в тот момент, когда перетаскиваешь, манипулируешь объектами в редакторе... начинаешь воображать, накручивать! так что такие дела... сделано пока мало... мы пробуем потихонечку, внедряем аккуратно новые штукенции так сказать)) чтобы не оказаться в ситуации, когда непонятно как это все барахло разрулить, как было с первым Climber'ом, к примеру))

еще отмечу, что прикручивание Box2d стало не таким и сложным делом... уже потихонечку осваиваюсь в c++... как-то по-хитрому привожу там типы (сам не пойму, как это работает, если честно), что не всегда удобно и сильно захламляет заголовочный файл... зато pas-header растет довольно активно... также пытаюсь развить классовую прослойку... в итоге получается довольно отцепляемо, но я не очень уверен в необходимости такой сложной системы прикручивания... может в будущем буду упрощать)).. хотя сейчас вроде выглядит не дурно))

p.s. сегодня планирую прикручивать инициализационные скрипты))..