Official To‐Do List - Black-Tek/BlackTek-Server GitHub Wiki

Welcome All,

Since this is an Open Source project and many users have become interested in it's goals, and because it helps me to become more organized, I have decided to sit down and formally construct an "Official" To-Do List. With that being said, some of the things on the list have "prerequisites" and "sub-tasks" that go with them. I have not gone so far as to find and list every single prerequisite and task necessary for the completion of every item on the list, but instead I tried to give the entries assigned keywords that sort of act as labels, by providing you with more information about what is expected for that entry to become completed. It is also worth noting that there are already 280 commits worth of changes to this project by the time I created this official listing (1.0 is the only official release at this point in time), and so there are literally dozens of other changes worth knowing about that you can find in the commit list, and also in each release's download contains a full list of all commits, as well as an abbreviated listing of changes per release.

Keywords:

  • Refactor - to make a lot of changes within a given system or subsystem, often changing how some internals work
  • Redesign - to change design of a system or subsystem, this usually includes its interface as well as many internals
  • OverHaul - is when a system needs a massive amount of changes done, this often includes both a refactor and redesign
  • Milestone - is when the goal can contain many smaller tasks which qualify and/or is a pretty big achievement with a fair amount of work
  • CodeName - is used to give a specific goal a short hand name to be referenced for goals that require this one to be completed first
  • Requires - is used to mark a goal as depending on another goal (which will be named after with >> ) to be completed first

Now that you understand the context those keywords provide, and you also understand that this list doesn't list every single change needed in detail, let's have a look at the list!

To-Do Main Goals as of this original publish date: 02/09/2025

Major Changes

  • Milestone: Replace OTB format
  • Milestone: Replace OTBM format
  • Milestone: Redesign: All Pathfinding Datastructures with data oriented approach
  • Milestone: CodeName: << SPC << Replace all (applicable) raw pointers with appropriate smart pointer
  • Milestone: Provide alternate implementations for pathfinding algorithms
  • Milestone: Fully featured Error Handling System with logging, dedicated thread, priority levels, custom error handling and more
  • Milestone: Establish a full fledged CLI for the server
  • Milestone: CodeName: << OBO << Optimized Database Operations: for example Players and Items as binary load/unload from Mysql
  • Milestone: Overhaul: Requires: >> OBO >> Drop Mysql in favor of binary serialization with Cap'n'proto.
  • Milestone: Build a custom and extendible network protocol
  • Milestone: Overhaul: Monster and NPC AI - State machine for intelligence, extendible (if able) temperaments, coroutines and possible dedicated thread/thread-pool or fiber
  • Milestone: New NPC Interface (the intent is to add more rpg type features with an easier to use interface, and drop the old npc lua libs)
  • Refactor: AddEvent - Either implement safety with proper object validation through lookup, or look for alternatives like coroutines as a replacement
  • Milestone: Full Fledged Sound API, including dedicated packets (not based on tibia's sound protocol)
  • Milestone: Replace all Tibia specific code - strip down to bare minimum lua, and restart
  • Milestone: Create up to date documentation to be included as offline documentation as well as hosted on the github
  • Milestone: Critically analyze code for locations where async or other types of concurrency or parallelism can be beneficial and implement where applicable and beneficial
  • Milestone: - Critically analyze running code for any and all memory problems, such as leaks, ect, and resolve those issues
  • Milestone: Provide a robust and powerful lua standard library
  • Milestone: Replace all of XML with alternative (TOML)
  • Milestone: Implement Thread Pooling and Coroutines where appropriate
  • Milestone: Create advanced metrics system specifically for the combat, to enable clear indicators to use for balancing combat in game
  • Overhaul: Optimize Decay system
  • Milestone: Overhaul: Augments 2.0 - negative damage support and great many other new features, as well as a rewrite for optimization
  • Milestone: Requires: >> SPC >> RAII is Life: enforce RAII idiom on code wherever possible
  • Milestone: Multi-world support
  • Refactor: Talkactions and Spells (Spells become abilities)
  • Milestone: New Advanced Custom Spawn System
  • Milestone: Complete Design and support for Zones
  • Milestone: Create dynamic event/notification system extendible through the front end
  • Milestone: Add administration interface for Gods, GM's, ect. Server Owner account has greater access than all for creating new groups and ranks, handling logs, ect, even from a normal player
  • Milestone: Advanced Player Simulation
  • Milestone: Create Item Spawning system, for things like renewable resource generation
  • Milestone: Create "Regions" and "Dungeons" system in mapeditor and server
  • Milestone: Replace all STL containers with GTL containers
  • Milestone: Overhaul: Remove all virtualization inheritance (cylinders, thing, tile)
  • Milestone: New Guild System with tons of stuff like guild buffs, wars, ect
  • Milestone: Overhaul: Event Systems - Change all event systems for can, do, on {first one a boolean event callback, second one an event registered for variable manipulation, and last one would be a void type that just triggers}
  • Milestone: Overhaul: Lean and Mean - Port as much possible hardcoded logic to lua. We want the engine to only worry about its jobs.
  • Milestone: Pass by Reference when possible
  • Milestone: Memory Pooling where it counts
  • Milestone: Optimizations Big & Small for all Vital Systems
  • Milestone: Reorder all applicable Class Member Fields (for memory alignment optimization)
  • Milestone: Remove as much Top-Down Inheritance as possible; Replace with encoded types, metatyping, composition and bottom up inheritance
  • Milestone: Modernize all old C++ code
  • Milestone: Overhaul: Combat - Combat is a heavily weighted hotpath with lots of loops, recursion and duplicated checks throughout its main call stacks, as well as many other things holding it back, it needs completely reworked and built with optimization in mind
  • Milestone: Extendible Inventory (player's slots)
  • Milestone: Extendible/Custom Skils
  • Milestone: Extendible/Custom Stats (hp, mana, soul)
  • Milestone: Overhaul: Conditions (possibly replace with buffs/curses)
  • Milestone: World Building/Crafting (homes, guild halls, farms, ect.)
  • Milestone: RPC API for Administration, Connection Handling (for like voice nodes, or proxy communication), ect, utilizing Cap'n'proto
  • Milestone: Overhaul: Items - Item class is a very heavy class, and so is item type, these classes could be redesigned with a data oriented approach and that would make a players imprint on the CPU reduced exponentially
  • Milestone: Advanced Weather Systems and API
  • Milestone: World Events, things that are randomly occurring but are permanently effecting the world
  • Milestone: Address All To-do's in comments in the code
  • Milestone: Update bootstraps to handle everything necessary for getting started (this means website, database, ect)
  • Rework: Workflows - to reduce actions time, provide more efficient releases and cleanups, ect.
  • Rework: Modal Windows - to be more intuitive
  • Milestone: Proper and Structured Namespacing
  • Milestone: Tell it to the Compiler! - offloading code to compile time, including utilization of const, constexpr, meta, static, ect
  • Overhaul: Lua Interface - transition towards LuaObject approach
  • Milestone: Connection Request Packet Flood Protection
  • Milestone: Transition to a custom ECS type architecture
  • Milestone: Move experience and level to Creature class, with the option for them to be disabled on a per creature basis
  • Milestone: Implement other options for experience formula's and skill rates
  • Milestone: Sort and Organize all Class Members, implementing proper inlining while doing so

Smaller Changes

  • Update to C++23
  • Add augments support to items.xml/toml ✅
  • Remove current migrations and update schema
  • Drop 0.x TFS function's compatibility support
  • Introduce Crafting with blueprint(s) configurable
  • Block Advertising system
  • Game Store
  • Add packet compression support and implementation
  • Add extendible custom resources such as, wood, stone, leather, ect
  • Add Durability as a possible feature to enable/disable
  • Rework Scheduler/Dispatcher to reduce waits, coroutines are vital here
  • Revamp Quest System or remove it
  • Achievements system
  • Bounties (PVE and PVP). This could be done in lua
  • Cleanup all old LuaJIT code
  • Update licensing information for clarity in what the duo licensing means and how GPL still applies
  • Cleanup and restructure premake lua code
  • Replace Default Map
  • Custom Storages available on all creatures (if its not already like that), and accounts as well
  • Sort, organize and manage properly all include's, and possibly update header guards to pragma
  • Bestiary/Pokedex/Catalog Type System for all monsters (not to be made based on tibia's implementation)
  • Extendible Races, probably through toml
  • Eliminate Singleton Patterns
  • Change Code Formatting Style (I have been developing my own preference and will use clang-format for applying to whole codebase)
  • Create and establish a proper Project, timeline and project automation for this server, as well as sort, organize and detail this to-do list contents as milestones and issues