15 September - Devlog Update #1



TL:WR: Save/Game function, Quest log, Dialogue system, Swimming, Tweaking combat, Demo 0.2 probably later this month

Hello everyone following this project! During this summer I have been hard at work learning fundamental mechanics of RPG games and implementing them in this project.

What the heck am I talking about? I'm talking typical, fundamental RPG systems, like a way to save your progress [Save/Load System], a way to interact with NPCs [Dialogue System] and last, but not least, a way to track your activities [Quest Log System].



These 3 systems have been the core of the development for the past weeks. I'm also working on an inventory system, following Brackey's video series on Youtube. 

However, it is the Quest Log that I am extremely proud of. It works like this: a panel holds a list of buttons, and each time you receive a quest, a button of that quest is added to the panel.

The button holds 2 game objects - a Text gameObject that holds the name of the quest; and a Text gameObject that holds the description of what the quest is. So, the button is added to a list, and when you click it, the description of the quest is shown to you! It works really well, altough it's quite simplistic at the moment. 

I am extremly proud of it, because I coded it from scratch (I had never done that with more complex stuff. Heck, I didn't even use array lists that much).

   (And each time you receive a quest, a notification menu also appears) 


Integrating the quests you have in your questlog with the save / load game system was also a challenge. 

I was doing it in a very stupid way: I had bools set up so that I knew when our character had received Quest X, and I told the save game that, if the Quest X had been received, then it should instantiate a button for that quest on the quest log panel each time the player loads the game. Stupid, right? Because that meant I had to write lines of code specifically for that each time I wanted to add new quests. 

But after one night where I was hanging out with a friend who is also a programmer (altough not of videogames), we managed to find a very cool solution: I would create 2 array lists, one for titles of quests, and the other for the text descriptions respectively. Those would be arraylists of the type string, and that is important, because from what I can tell, you can only serialize data in int, string, and a few other variable types. (Don't quote me on this one) 

So, having found a way to store data in the form of strings, I could now write their content in the save data file with no problem. Then, using the TitleList.Count(), I knew how many quests the player had received, and so I only needed to create as many buttons as received quests, and then look up the title and text of each of that quest and add it to the button, then add the button the panel. 

Basically I wrote 12 lines of code that will automate the process from now on, so it feels great!

    /* TITLE OF THE QUEST */
      // Add your quests to another list that stores only the TITLE of the added quest
        
        for(int i = 0; i < QuestSystem.Instance.questButtonEntries.Count; i++) {
            
            // Check our questlog, search the i item there, check its name and add it to the list
            
                string titleToAdd = QuestSystem.Instance.questButtonEntries[i].gameObject.transform.GetChild(1).gameObject.GetComponent<text>().text;
            
            
                if(questTitleList.Contains(titleToAdd)) {
                    
                } else {
                    questTitleList.Add(titleToAdd);
                }
                
                
        }
        
        // Check our current list of quests and add each item to the written list in the data file
        for(int i = 0; i < questTitleList.Count; i++) {
            
            data.questTitleList.Add(questTitleList[i]);    
            
        }
        
        
        /* TEXTS OF THE QUEST */
        // Add your quests to another list that stores only the TEXT of the added quest
        
        for(int i = 0; i < QuestSystem.Instance.questButtonEntries.Count; i++) {
            
            string textToAdd = QuestSystem.Instance.questButtonEntries[i].gameObject.transform.GetChild(0).gameObject.GetComponent<text>().text;
            
                if(questTextList.Contains(textToAdd)) {
                    
                } else {
                    questTextList.Add(textToAdd);
                }
            
        }
        
        // Check our current list of quests and add each item to the written list in the data file
        for(int i = 0; i < questTextList.Count; i++) {
            
            data.questTextList.Add(questTextList[i]);
            
        }


But there are a lot more stuff that I really want to share with you:

1. I am composing original music for the game (using Renoise); 

Here's a theme already included in the game:


2. There is a title screen now:

Right here


3. You can swim now

Yes you can!

4. First-person view

Not really something that great tbh, but it's there! Just press your 'V' key to shift between points of view.

5. Combat redefined

I am tweaking and tweaking the combat system! Hopefully I will have the inventory ready soon enough so you can test it out by switching weapons and equiping armor.

6. RPG Progression

EXP and Level were added!



That will be all for now! Expect a new demo coming this month. =)

Get The Bard [ActionRPG]

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.