Thursday, December 25, 2014

Last post of the year 2014

There are some chances of getting proper graphics, hooray!

Binary can be download at OneDrive as

What's new?


  1. Finally fixed a bug with the seamless backgrounds with H/V speeds
  2. New methods TLayer.AddAnimation() / RemoveAnimationAt()
  3. Sprite animation flow moved to Tick()
  4. BB Rect calculated now on demand in sprites
  5. SetDefaultBB removed from sprites
  6. Some more functions inlined
  7. Default screen quicksort buffer sorting changed from 31 to 63 (in order to make it stable)
  8. Some warnings removed
  9. New TLayer.AsRect
  10. New TLayer GetAnimationInfo() and NewAnimation()
  11. New TLayer MoveCell() and MoveAnimation()
  12. New TSprite IsMoving()
  13. Collisions rotations matrix not calculated if no angle
  14. Bezier curves finally working properly
  15. New TWater class in sprites  (based on springs)
  16. Collision matrix now check boundaries properly
  17. When drawing surfaces, if not angle set then rotation matrix are not calculated
  18. Layer cells with no tile but attribute also dispatch event OnReadCell
  19. TRandom.NextFloat(max) improved
  20. SpriteEngine.Render method cleaned a bit more
  21. TLayer.Render refactored
  22. Some important fields in sprites are now stored in variables (like width, height, bpp and colorkey), to make faster access
  23. More fields moved to TDummySprite so they can be inlined
  24. New sprite property Active
  25. TObjectEx now implements IData


  • New element Lamp that emits some light
  • Ball now has bouncing delays
  • UFo's laser now shrinks properly with colliding against solid stuff
  • Coins can now be also affected by gravity
  • New enemy mild
  • New enemy torno
  • Ray optimized a bit
  • TrapDoor code was a bit messy
  • New enemy Bouncer
  • Falling blocks are activated when hero is close
  • New TGameSprite.IsVisibleWithCam() in order to reduce the overhead in entities
  • Spotlight hitting code improved
  • Auxiliary sprites also get the Paused property from parent
  • Trapdoor also kills enemies
  • Arrows stuff moved to Tick()
  • Arrows code cleaned a bit
  • Spider net code improved
  • Water will try to fill gaps
  • Collision code improved
  • Crushing code refactored
  • Removed duplicated code for exploding bubbles
  • Fixed some collision priorities with tiles and items when gravity is up
  • Snow falls slower
  • Collision against moving platforms with reversed gravity will work much better
  • Collision against left and right slightly modified in order to be more accurate
  • Blob was falling when it should not
  • Book info instance reference was totally wrong
  • More cases for collision against tile/item
  • Bubbles when exploding become inactive (they are not gone since exploding takea a while)
  • Only active platforms are checked
  • Now HBF can also display yes/no dialogs
  • Hero now always faces none when jumping
  • Runes index was not set properly
  • New class TNeutral
  • New class TLight put it on top of tiles to make cool effects
  • Blob and Weird now are gray based and then randomly colorized
  • New element barrel, the only special thing is that inside water it floats...
  • ApplyEnvironment removed
  • Now fishes collapses if no water
  • TNeutral = TStatic
  • Pause code is more implicit (pause <> locked)
  • New demos
  • Grass only moves when hero is close
  • New enemy Head
  • Water flow refined
  • Water/Lava improved
  • Generic platform code refactored
  • Bird moves are now based on bezier curves
  • New enemy firebug
  • Enemy thing now more stable
  • Liquid stuff improved
  • New gamesprite helpers SameRow() and SameCol()
  • Bird now uses some TFuture<> for calculations
  • GearWheel now detects properly slopes
  • Slopes can be seen in debug mode
  • Water now uses spring system
  • Weird now keeps direction when current block disappears (so does no longer gets crazy)
  • Now lasers also stops with items (not only tiles)

New dynamic water:

Some new traps: