Skip to content

Latest commit

 

History

History
250 lines (177 loc) · 6.67 KB

File metadata and controls

250 lines (177 loc) · 6.67 KB

Changelog

All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

  • Unit testing;
  • Event system;
  • Skill usage prerequisites + effects conditions;
  • Store/Load data in-between runs.

[0.23.0] - 2026-04-28

Added

  • Monters can have a Loot component with xp/sp reward on killing
  • xp/sp rewards are notified in system chat
  • An experience table is loaded, players can level up when earning enough xp (with level up animation broadcasted)

Fixed

  • Monster data wasn't populated correctly at creation (while regular npcs were ok)

[0.22.0] - 2026-04-26

Added

  • HealEffect (instant + over time)
  • ResurrectionEffect (single target + aura targetting)
  • Resurrection confirmation modal for players

Changed

  • Some big numbers are locale-formatted for readability (e.g. during server initialization)

[0.21.0] - 2026-04-23

Added

  • Load basic NPC table: id, name, title, default titleColor, type and baseSpeed
  • Can spawn a NPC by its name (case-insensitive)

Changed

  • NonPlayableActor renamed to Npc
  • World stores actors in a single container now instead of one container per type

Removed

  • No more function name in exception formatting

[0.20.0] - 2026-04-23

Added

  • World:
    • can look up any actor by GameObjectId
  • Skill:
    • Load operating type (active, passive, etc.)
    • Load physical/magical status
    • Split target type (single target, AoE, aura…) from target nature (ennemy, friendly, self…)
    • Demonstration skills: instant buff, toggle buff, single target damage, multiple targets damage, poison over time…
    • Casting speed is dependent on mAtkSpeed/pAtkSpeed depending on physical/magical status
  • Abnormal Effects:
    • Buff and damage effects (instant + DoT) added
    • Can be reapplied or canceled
    • Toggle effect

Improved

  • Logs are better aligned
  • Stats have been revamped (no more Stats+ComputedStats)

Fixed

  • Application loop was updating twice in a row every updates

Removed

  • HeaderOnlyPackets because they couldn't specify a name (would've needed std::basic_fixed_string)

[0.19.0] - 2026-04-14

Added

  • Check all RSA operations
  • Show packet sending source location (login server)

Changed

  • Improved exception logs (login server)

[0.18.1] - 2026-04-13

Fixed

  • Auto-regen wasn't triggering

[0.18.0] - 2026-04-13

Added

  • source location is shown when sending a packet
  • packet name is shown when sending

Removed

  • Packet::finalize() is not needed anymore, thus removing an additional state

Fixed

  • Program exit code indicated failure in case of success
  • Packets are now correctly (shallow) copied

Changed

  • packet encrypt/decrypt (game server) were needlessly complicated
  • common's CMakeLists' link targets are now used implicitely in dependant targets
  • packet log format improved

[0.17.0] - 2026-04-12

Added

  • HP/MP/CP regeneration tick system

[0.16.0] - 2026-04-11

Added

  • Login server can handle multiple users concurrently
  • Login server can be stopped gracefully with CTRL+C

[0.15.0] - 2026-04-09

Added

  • SkillAction
  • Actions can be canceled
  • Gauge during skill animation
  • Position can be deserialized
  • Durations are serialized in a more uniform (and correct) way

Changed

  • Actor::takeDamage()
  • Trying to learn an undefined skill no longer leads to an exception
  • Action's performer is now stored for easy access
  • Packet hexdumping is disabled by default now

Fixed

  • Skill animation duration was wrongly truncated during parsing

[0.14.0] - 2026-04-05

Added

  • Actors can be scheduled for deletion
  • Dead NPCs disappear after 5s

[0.13.0] - 2026-04-05

Added

  • GameObject deletion packet (makes objects disappear on screen)

Changed

  • Ensure character removal from world in all scenarios (restart, exit, connection severed)

Fixed

  • Player is correctly unset from character in all scenarios

[0.12.0] - 2026-04-05

Added

  • Utility to get distance between two positions/actors
  • Surrounding actors are sent to player entering world
  • Equality operator shortcut for Actors

Changed

  • World::broadcastAround() now checks distance around emitter

[0.11.0] - 2026-04-03

Added

  • Damage can be inflicted and actor status is broadcasted to listeners
  • The actor dies when HP reaches zero

Fixed

  • TargetClear was not working anymore

[0.10.0] - 2026-04-03

Added

  • Monster targets display correct HP bar
  • Groundwork for status broadcasting to listeners

Changed

  • Reworked HP/MP/CP/Weight from ActorStatus to Stats+ComputedStats

Fixed

  • Cannot attack oneself

[0.9.0] - 2026-03-31

Added

  • Can now send system messages to player, with argument support
  • Player is greeted upon entering the world

[0.8.0] - 2026-03-31

Added

  • Characters created are restored as long as the server doesn't stop

Changed

  • Moved code related to character previews into World
  • Some packets have been moved to their own implementation file

[0.7.0] - 2026-03-28

Added

  • Dual weapons (swords, fists and bare fists) now inflict two hits as per their animation

Changed

  • AttackAction keeps track of the initial target so that the action completes even if player changes target
  • AttackAction is more generic around the attacker type (Character vs. NPC/Monster)

Removed

  • NPC doesn't scream anymore when hit

[0.6.0] - 2026-03-26

Added

  • Simple packet broadcasting to all characters
  • Remove player and its characters from World on connection closed

Changed

  • Automatic test character now gets a unique name on creation
  • Packet logs indicate to/from which session they are related to

[0.5.0] - 2026-03-25

Added

  • First ECS systems implementation
  • Characters' attack stance toggles off after 5s

[0.4.0] - 2026-03-24

Added

  • Action system is more fleshed out: current/next action algorithm, queueing actions, interruptible…

[0.3.1] - 2026-03-24

Fixed

  • Game loop doesn't overuse the CPU when there's nothing much going on

[0.3.0.1] - 2026-03-24

Changed

  • Replace OptionalRef = std::option<std::reference_wrapper<T>> with my own OptRef implementation (to avoid writing the ugly opt->get() all the damn time)

[0.3.0] - 2026-03-23

Added

  • In-game time
  • Can trigger sunset/sunrise events

[0.2.0] - 2026-03-23

Added

  • NPCs can talk
  • auto-attacking (attack stance, timed to atk speed)
  • Arrows are automatically equipped with bow (PoC)
  • Can look items up from ItemTemplate::id in ItemStorage

Fixed

  • Dual weapons display correctly (dual fists, dual swords)