major update: entity logic is completely driven by external scripts now! ;-)
most of "monsters.d" code moved to MES scripts. also, entity (actor in the
terms of the engine) management was completely rewritten, so it mostly
doesn't allocate in game loop.
"what is MES?", one may ask. ok, MES is a scripting engine, writen
specifically for scripting simple games. it has only one object type
(Actor), but it is statically typed, supports UFCS and function pointers
(and some syntactic sugar), so it may look like procedural or OOP language
(at your choice). it is compiled to virtual machine code (3-operand
instructions). compiler doesn't use AST, but does one extra pass over a
source to collect functions/globals/fields definitions, so there is no need
to write any forward declarations.
so why i did it, and why it is better than old D code? the answer is very
simple: because i can! ;-)
you're welcome to study MES compiler implementation if you like. it is
contained in one file (mesengine.d), and is not that hard to follow.