Война с Profiler-ом / Fighting the Profiler

Попытка установить и использовать профайлер (LazProfiler) для игры закончилась весьма неудачно. Отложим его на будущее, вернулся на более стабильную версию лазаруса. Правда, логика его работы предложила механизм создания “своего” профайлера, который может оказаться более удобным, надёжным и эффективным, чем стороннее решение. В любом случае, вернусь к этому вопросу в следующий раз я уже когда буду оптимизировать производительность (FPS). А это произойдёт, скорее всего, после того как заработает интерфейс.


Trying to install a profiler (LazProfiler) for the game failed badly. I’ll postpone it for some future. For now I’ve returned back to a more stable version of Lazarus/FreePascal. Thou the logic of LazProfiler looks very nice and might be a base to create an own profiler that can be more native, reliable and efficient than a third-party solution. Anyway, I’ll return to the issue when I’ll start optimizing efficiency (FPS). And this, in turn, will happen after interface is up and working.

Advertisements
Война с Profiler-ом / Fighting the Profiler

Мир / World

Увы, за последние дни по программированию почти нулевой прогресс.

Переделал логику управления внешнего мира (теперь и внутреннего тоже), поддерживающую многоуровневые LOD. Проблемы ещё есть, особенно с загрузкой-выгрузкой объектов целиком, но их, скорее всего, нужно будет решать уже “в коде”.

Также, красиво сформировалась ещё одна сюжетная линия, однако ну уж слишком спойлерно про неё рассказывать 🙂


Unfortunately nearly zero programming for last few days.

I’ve reworked the algorithm of external world management (now it will work with internal world too), which supports multilevel LODs. There are still problems of loading-unloading of the whole objects, but, they should be better solved “in code”.

Also a very interesting plotline has shaped-out, but it’s too spoilerish to tell about it 🙂

Мир / World

Медленно и непродуктивно / Slow and inefficient

Медленно и непродуктивно продвигаюсь по переписи населения интерфейса. Ещё раз перерисовал структуру, вроде всё относительно сходится без потери функционала, однако получается достаточно сложно (но проще чем было).

Также перерисовал концепцию внешнего мира с промежуточными загрузками. Вроде бы получилось относительно нормально, однако, можно “упереться” в неприемлемо длинные паузы на стыках блоков мира. Может, это “лотерея” и лучше поубавить аппетиты и делать “как проще” (не безшовно)?


Slowly and inefficiently moving on with rewriting interface. Redrawn its structure once again, seems like it’s possible to make it without loss of functionality. Still looks too complex (thou more simple than before).

I’ve also reconsidered the overworld management algorithm with intermediate load-stops. Looks relatively normal, but might “bump” into unacceptably long pauses at chunks borders. Maybe, that’s kind of a “lottery” and I should finally give up and make it “simple” (not seamless)?

Медленно и непродуктивно / Slow and inefficient

Всё ещё не так / Still wrong

Оказалось, что новая архитектура также не обеспечивает необходимой гибкости при выполнении анимации. Перерисовал ещё раз. Что-то я уже не уверен, что в этот раз “всё хорошо” 🙂


It appeared that the new architecture also doesn’t provide for the required flexibility during animations. Redrawn it again. But still unsure if it is “fine” this time 🙂

Всё ещё не так / Still wrong

Наша песня хороша… / Back to square one…

Вот сижу я и в своей стандартной ситуации: “Теперь я понял, почему оно не работает. Одного не понял – почему оно вообще компилировалось???” 😀

Короче, похоже, что я сделал франкеншейна из двух методов масштабирования и в результате получил нечто что ни так ни сяк до конца не работало. Одно хорошо, что сейчас изменения коснутся только процедур масштабирования и рисования – собственно, это не так много. Но переделать их придётся в корне.


Yeah, it’s just my standard situation: “When I’ve understood where the error is, I’m left with only single question – why did it ever compile???” 😀

To cut it short, I’ve invented a Frankenstein from two different interface scaling algorithms and the result, obviously, didn’t work. On the bright side, the changes are not extensive and require only rewriting scaling and reconsidering drawing, actually, that’s not much.

aIMG_20171109_135113+

 

Наша песня хороша… / Back to square one…

Стакан наполовину пуст / The glass is half-empty

Уткнулся в анимации – они снова застопорились и, похоже, оказались в корне неправильно сделаны. Да что ж это за жизнь такая? 🙂 Ещё раз откатываюсь назад и пытаюсь понять, что и как происходит с масштабированием элементов интерфейса.


Stopped at animations, as they appeared to be incorrectly done. Eh… 🙂 Rolling back again and trying to understand how interface scaling should be made.

157466.jpg

Стакан наполовину пуст / The glass is half-empty

Главное, не останавливаться / Movement is life

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

Начал плотно исследовать корреляцию венозного-артериального давления и работоспособности. Оказывается, там прослеживается весьма внятная закономерность – если удаётся поднять диастолическое давление, то работоспособность хлещет как из фонтана. Одна проблема – я не люблю кофе 🙂


I’ve started rewriting interface scaling procedures. As of present moment, it works out quiet well. It might also happen that I won’t have to abandon dynamic container size (however, I don’t trust this hope :)).

I’ve also started investigation of correlation of my blood pressure and work efficiency. It turns out that if I can rise diastolic pressure, then the ability to work is really high. However, there’s a problem – I don’t like coffee 🙂

my.png

Главное, не останавливаться / Movement is life