What's new in the game?
- New unit Camera, all camera code moved from Game to new unit
- New achievement "Finish the Labyrinth with a partner"
- Now bat moves faster
- TPlayerHandler.GetClosestHeroAt() fixed
- When a platform is pushed, some particles are rendered
- Stalactite has now some alpha
- Fixed an issue with casting interfaces (suddenly it crashes...)
- Mine now rotates a bit
- Fixed offsets of lightmaps in darkness
- Minimum resolution is 1024x768
- All release inventory code moved from Game to Hero
- Hero can have a partner on top of it
- Monologues are now created on demand
- Now when loosing a fight, owned runes are released, beware!
- New Mine.Shake property
- New trigger Follow()
- New service GameService.GetEvents
- When hero touches the ceil it liberates some Particles
- Camera lerp enhancements to make the usage easier
- Now Liquid might have a Tide
- Rays colors changed in order to look better
- Now Camera does all movements with interpolation, new method for lock/unlock
- New Weapon properties Range and Quantity
- Now Camera can focus any entity
- New property TGameSprite.Triggers, so that any entity can execute any trigger/s
- Doors can now be closed after being opened
- Fixed an issue with the stalactite particles
- New property Items.IsAutoso can be auto activated after they are taken
- New triggers: AchievementDone(), ExecuteIfEqual(), ExecuteIfNotEqual(), KillAll() and Focus()
- New Weapon.Maximum (as bullets)
- New weapon Bow
- Now extras can be automatic applied (like live)
- Entities can execute triggers OnCreate, OnDestroy and OnTake
- Monologues are delayed
- Better Door states
- Annoying bug changes have been fixed
- Camera follows hero in a more stable manner
- New inventory functions ActivateFirst() and Push()
- New change action (to cycle weapons)
- Snowball generates different particles than before
- Items are not draw when exiting a level
- Game can now be set to fullscreen/window at any time with Alt+Enter
- Background also tries to adapt to camera Z
- New Item.Detail property
- Bell item sounds more continuous rather than per volume
- New golden bow and golder arrow items
- Arrow can have now an angle depending on how long the action button is pressed
- Scores moved from inventory to players class
- Map read cells event improved
- When in shop background is rendered as sepia to make contrast
- Entity.Excite() code refactored
- HBF now can be played remotely (new menu option)
- New host/port settings
- New hero property Scope: local, remote
- New dialog type Abort()
- New level...
- Better handling of network delayed games
- TCPClient/TCPServer connected properties not used during game (seems they they corrupt network buffers)
- Entities inside a thread/task using random functions will take a local Copy
- Closing dialogs won't unlock the game if still locking pending messages
- Better control of locked situations (visual messages VS waiting network)
- New TNetBuffer PeakX()
- New sound when hero is underwater
- New item Water of Rhand
- Menus now can show dialogs
- Session id is send in every message, so client can refuse their own messages
- Coins moved from inventory to TPlayerHandler class
- TPlayerHandler refactored, now it is easier to follow the code
- Dialogs, question can persist after callback
- SessionId is send in all net messages so that clients can ignore messages at their own discretion
- Terminal animation is different
- Now input is in the form of K;J1;J2;J3
- New screen Sync
- Input read improved
- New Hero.JoyId
- Inventory moved to Players class
- Stalactite now also also falls when top tile disappears
- TCameraHelper.CoversAllPlayers() now does not take into account heroes that have already entered then door
- New GameServices.GetImpersonateKeys()
- Players iteration improved shorting edges (first/last)
- Hero sessionId moved to Players class
- New message to request the list of sessions
- Now servers controls the maximum amount of players
- Now game can be played with up to 4 players
- Hero.Scope moved to Players class
- New callback TPlayerHandler.GetPlayers()
- New TPlayerHandler.MinPlayer() / TPlayerHandler.MaxPlayer()
- Player removed from inventory
- Added player Alias so when joining network games, players can be identified
- New TPlayerHandler.FindPlayer(session)
- New TNetBuffer Readstring & AddString, so now strings can me send in net protocol
- if master leaves the game, then server finds a new master
- New TPlayerHandler.GetSlots()
- Game can now do multi-ping
- NetworkPlayer concept removed (everything is in player and slots)
- New TPlayerHandler.RemoveSlot()
- More robust network control
- Remote locks improved
- New concept in network code channel (rq, all, target)
- Max zoom improved
- TPlayerHandler.GetDistance performance improved
- Wand item now glows
- Now when hitting enemies a white effect is done
- Pushing moving blocks improved
- When playing over net, camera focus on local player
- Blind and Many players achievements are now configurable
- New skin for player 2 (tough still ugly...)
- Avoid Z players overlapping
- Network locking simplified
- Now HBF comes with a standalone server called GameServer.exe
- Now dialogs are rendered correctly when title is short
- Now network seed is taken from ticks and not from network, this makes the game more deterministic
- Server now sends back the available slots
- Network input is stored in a buffer so if we receive more than one packet all packages are processed in order
- Reading joy process improved
- Now game check if there is enough input devices
- CheckPoint is back to Hero class
- More control over disconnected sessions
- Now TSpriteEngine uses TColony<T> as a main iterator class
- Cannon had a AV when hero is dead
- New THUd.Visible
- New TPlayerHandler.RandomPlayer()
- Now when entering Door a red flash is shown
- When no lives and going to main menu, the in game menu will not be displayed
- Falling controller is not always created by default
- Some non used songs deleted
- DirectZ removed from sprite properties
- Map does not longer creates a default camera
- In TSpriteEngine.SpritesAt() there was an overloaded version that didn't use the spatial grid, speed boost!
- Particles adaptive view fixed
- TArrayEx<T>.Delete fixed
- Object names are no longer used in release mode
- Now maps have infinite loops again
- Now sprite quads have a default Tag
- TSpriteEngine.Find(name) was not working at all!
- Maps now use frustum to check boundaries
- Improving frustum in 2d maps rendering
- New Map.FindTrigger()
- New Trigger Context, so that engine knows when to execute the trigger (create,destroy,taken)
- New buffer default size
- New TPerspectiveCamera and TBasicCamera
- Sprite engine searches are faster
- New particles property RandomDirection
- TInput now can keep track of now many frames a certain button was pressed
- TSprite.SetAngle() now does not apply matrix if camera is not set
- New inline TRGB _R(), _G(), _B() _A() and _32()
- New laser aspect
- Horizontal and vertical gradiants now take into account alpha channel
- Blur() performance improved
- TLayer now have a Glow property so that tiles can be glowed
- New TRandomHelper useful for threads, otherwise random generators are corrupted and net game is not deterministic
- Particles use their own random generator
- TSurface.AverageColor() fixed
- Now when creating Direct3D, flag D3DCREATE_FPU_PRESERVE is used
- Many raise moved to their own function (performance)
- Fixed a Lock() issue in TSound
- New TParticles.IsSystemDown()
- New classes TRingBuffer<T>, TSet<T> and TColony<T>
- Now system can handle up to 4 gamepads
- TInput improved
- New TJoyData.JoyReleased()
- Now levels are loaded with rtti
- Triggers now can have a counter (executed when counter = 0)
- Finally joy direction pressed are no longer simulated
- Shadow and Glow helpers classes are not created by default
- Queue particles are not created by default
- Collection iterators improved
And that's all folks.