Skip to content

Conversation

@Duriel7
Copy link
Owner

@Duriel7 Duriel7 commented Jan 13, 2025

Development branch objectives :

The main objective of the branch is to have a fundation for the expanding of the game functionalities. As such, fixes to the raw base and implementation of basic functionalities have to be made so the following branches will be easier developed and completed.

This a school project rather than a real one, so it's more for training than having a fine realization at the end. The real project will be the OOP version for which I created its own repository.

Detailed objectives :

  • Have a base backbone where the player can navigate between village and dungeon without being blocked;
  • Fix all basic functionalities so they work flawlessly;
  • Prepare future update by expanding the basic functionalities with new ones;
  • => Examples include but not limited to : church ; tavern ; shops of various types ; guild for quests...
  • Find an algorithm for functions relationships so I can minimize number of code lines but keeping strong and malleable logic;
  • => Examples include : a shop model I can share between two places (eg : guild and tavern for food) without having to change the names;
  • Making the global player variable able to store everything that can be modified, such as currency, experience, level, equipment... and restore changes in each function call so the player doesn't lose anything data related when traveling through the world; => Tests have been made but others are still needed
  • Making a save functionality that works and can load previously created characters from a save file, starting from a database recording with the following model : Character Name | Character Class | Character Level | Last Save Place;
  • Separate database related functions into their own files that will interact with each other;
  • Having backbones for databases which will feed dictionaries for shops or loot tables;
  • Database working to feed dictionaries (merchants, loot, chests);
  • Work with keypresses detection rather than having to type a number and hit Enter key;

Continuing development : Road Map of the project :

Problems and obstacles :

  • Finding the right logic can be hard, especially if I consider the model as "first strike" and that it can be changed afterwards;
  • Concerning Python logic and syntax, it can be hard to manipulate, I may have to halt project to make some technical research in order to develop my skills;
  • Algorithm logic may fail and force me to find another way of doing what I want to do, this will constitute a delay in the project, but would be a good thing too;
  • Iheritance of dictionaries will be needed, I need to know how to implement a simple ihneritance that will provide for a non OOP project, then after use it into the OOP project follow up;
  • Keypresses detection would have to be tested in the medium and long run, as I am still not sure if it is a real solution to ergonomy easiness;

How I can pass through : Tests planned to be made :

  • Some tests have been already made concerning global variables for the passing of values through functions;
  • Some single unit tests still are needed in order to ensure values conservation :
  • Player global variable is tested partially
  • Player global variable is completely tested in base game backbone
  • Player global variable is now tested throughout the whole game including different areas
  • Some tests have to be made concerning dictonaries ihneritance :
  • Verified theory of dictionary inheritance;
  • Characters can be created as templates and other inherit from their parents properties;
  • Inheritance can be used in an intricated manner;
  • At least one whole character can be hardcoded with a inherited dictionary;
  • Testing save functionality :
  • Player values and data into the code (one session only)
  • Player values and data into a save file
  • Player characters
  • Database for loot tables and merchant lists
  • Database for players and characters record
  • Database testing :
  • Database and table backbones ready to use and duplicate
  • Passing of items into the tables
  • Passing of items from the tables
  • Interaction between dictionaries and database working individually
  • Interaction between dictionaries and database working generally
  • Record of multiple characters
  • Record of multiple players

Ideas and subsequent branches :

Branch 1

  • Make different areas for player start (several villages);
  • Differenciate each village with their own specificities (shops, weather, special merchants for example);
  • Differenciate interior combat from exterior combat;
  • Separate combat function with subfunction for turns (one sub for player turn, one sub for monster turn)(makes initiative easier);
  • Adapt exploration functions with specific village environment (snowy, forestry, desertic, plains...);

Branch 2

  • Implement critical hits;
  • Implement flee chance and calculations with stamina and monsters factors;
  • Implement chance to strike or miss = precision;
  • Implement some semi-randomness to monster stats : +/- 10% on HP, power, speed;

Branch 3

  • Personal stash;
  • Shared stash amongst characters;
  • Chests and treasures while exploring interior and exterior places;

Branch 4

  • Implement skills : map, combat, strategic, passive and active skills;
  • Ranking system for skills;
  • Rank system for weapons (like D, C, B, A and S for example);

Branch 5

  • Implement champion and elite monsters with semi random spawn;
  • Make the first dungeon have several floors with their own boss;
  • Make more dungeons with each its own type and theme;

Branch 6

  • Hardcoded simple quests : fetch, kill, aid to victims, item search, defend place...;
  • Travel system between cities and dungeons for a longer adventure;
  • Random events along the road for players to enjoy randomness of environment;

Branch 7

  • Make an arena system with one list for human opponents, and another list for raised monsters;
  • Make some hardcoded NPC for the player to fight against;

Branch 8

  • Make a player able to have multiple characters buy having account system for multiple players to have separated characters;
  • Restrict shared stash to be on only one account each;

Branch 9 => counting from this branch, each update will concern procedural generation of content

  • Make randomly generated NPC

Branch 10

  • Make randomly generated quests : procedural questing planned;
  • Make random events more varied and less blend;

Branch 11

  • Make randomly generated dungeons and towers;

Branch 12

  • Make randomly generated inhabitated places : randomly encountered from time to time;

@Duriel7 Duriel7 changed the title Adding character save and navigating features Stabilizing : Adding character save and navigating features Feb 18, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants