- Remove the dev target as a dependency when building the library, since there are situations where you would not want to install the two together
- *.so symlinks are no longer generated for the libraries when core is built on a platform that supports so-versioning
- Another minor release addressing the build system, this time enabling the pkgconfig files to be written to a custom location
- The include/trogdor/version.h header is now auto-generated by CMake
- The shared libraries are now properly versioned
- Entities no longer have their own Lua states, which is wasteful. Instead, there is only one shared state per game.
- trogdord can now authenticate with redis using an optional username and password
- trogdord can now also be configured via environment variables, which take precedence over trogdord.ini
- The timer period (tick interval) can now be changed after the timer's started and can be configured via a game definition file
- trogdord now only listens on 127.0.0.1 or ::1 by default
- Added missing validation for ALLOCATE_RESOURCE AST operation
- Added room connection descriptions (Connection descriptions feature #72 ), a more flexible way to generate room descriptions that can be updated dynamically when those connections change. This new feature shouldn't have any impact on older projects.
- Wrote two new Lua methods, Being:insertIntoInventory() and Being:removeFromInventory() to replace functionality previously served by the now removed method Thing:setLocation.
- Implemented Lua function Resource.new() to create new Resources from within Lua
- Implemented Lua methods Game::getEntity(), Game:start(), Game:stop(), and Game::inProgress()
- Added LuaState::getLuaVersion(), which returns the version of Lua the core library was built against
- Added LuaEntity::err() to allow writing to an Entity's error stream
- Started writing unit tests for the LuaState class
- Unit tests are now built and run against Lua 5.1, 5.2, and 5.3
- trogdord can now listen on IPv6 as well as IPv4, and can also be configured to listen for requests only from certain IP addresses
- Reimplemented the items in a Being's inventory using std::weak_ptr. Any code that calls Being::getInventoryObjects() or Being::getInventoryObjectsByName() will have to be adjusted to take this change into account.
- Game::removeEntity() now enforces a more complete set of rules and no longer returns a boolean value (instead, it throws an exception if anything goes wrong.)
- Object::setOwner() is now protected and an Object can only be inserted into a Being's inventory by calling Being::insertIntoInventory().
- Thing::setLocation() is now protected and a Thing can only be inserted into a Place by calling Place::insertThing().
- Removed Lua method Thing:setLocation().
- Many formerly private members and methods in trogdor::LuaState are now protected to make unit testing easier
- It turns out that the Tangible and Resource types weren't being registered with Lua. This was uncovered by my new unit tests and has been fixed.
- Fixed a bug that affected the way the Lua Resource type was registered
- Did some minor refactoring and code cleanup
- Added extension loading for custom functionality to trogdord on platforms that support libdl.
- Split the build into multiple CMake files, making things more modular (I'm hoping to eventually spin each item out into its own repository)
- Introduced the SQLite3 serialization format and improves trogdord's handling of dumped games.
- Introduced state features, making it possible to dump and restore game state to disk.
- Many changes that I didn't track at the time
- Many fixes that I also didn't track at the time
This was the version of the engine right before I started tracking versions and their changes. If you're really curious, you can look through the very lengthy commit log for more history.