a month later
16 days later

LuckyBoyAK

My son and I had a terrible year so far. So, not good.
There is, however, light at the end of the tunnel. And we want to dive into it again once my son's summer break starts.

I had planned to release a demo earlier this year but one of the updates of RPG in a Box kind of went bonkers with ome of my "awesome" scripting. I need to repair a couple of things first. :-)

    3 months later

    Our terrible year seems to slowly get ... less terrible. ;-)

    Anyway, we started to pick up our project again. Not working on it for quite a while made me question quite a few scripting decisions my past self made. :-D

    10 days later

    Hello, we are new with all of this and it seems overwhelming. We want to test out a few things, such as downloading one of your games. but we dont know how to. Could you please help us and tell us where we can get that game. pls?
    🙂

    • Pat replied to this.
      25 days later

      Roni

      Sorry, there is not yet a download available for Rise of Erion. We currently plan to release our first Demo in November.
      Right now, we're currently going through the dialogues and replace our placeholder texts.

      We also made a couple of other additions:

      My son voxeled and implemented a new environment to our prologue: A small cave with a small puzzle.
      He wrote some lore and the texts for that and designed an easy entry-level puzzle to open a door and get a small treasure.

      For that, I implemented a container system that is compatible with our inventory management:

      Speaking of inventory: I finally implemented stackable items. Yeah, I could just have used Justin's inventory system. 🙂

      The cave is completely optional and you don't even get an entry into the quest log.

      9 days later

      Speaking of a quest log: I refined how our quest log works. Generally, it is kept in the form of a book the main character carries with him. Each double page is meant as the log for one quest.

      And, of course, every time the player gets new information, it is added to that quest's page. It is written from the point of view of Erion himself, adding a bit of character to the log.
      Once the quest is fulfilled, the quest-page is removed from the log. So you only cycle through active quests.

      I also removed all of the visible buttons and opted for a simpler interface: When there are multiple quests, a click on the right half of the book gets the next quest and a click on the left side gets you the previous quest.
      Clicking outside the book (or pressing ESC) closes the book.
      And just for the quests, I made it so when you click on the previous page on your first quest, it goes all the way back to your last quest, And vice versa.

      Additionally, there is also sort of a personal journal that the main character writes, adding a bit of background and lore.

      New journal entries will be written every time a major plot point happens. I still need to get a feeling, how often that should be.
      Unlike the questlog, that can be directly access via the small button on the bottom left of the main screen (or by pressing Q or L), the journal is only accessible via the inventory:

      I'm also thinking of addin maybe a log of past quests or some notes about the current location you're in.

      Would you mind telling me how you did this? I would love to have a similar function in my game.

        LuckyBoyAK
        You mean how I made the Quest Log?
        To be honest: It was done rather in a makeshift way.

        An open book is composed of 4 widgets:

        • At the bottom (i.e., called first) is a large, screen-filling, invisible button that runs a script to close the book.

        • Then there is a widget without pass-through, containing the graphic of the book.

        • Next comes a widget with the corresponding text labels (one for the title, then the first page and the second page). These are filled using a global variable.

        • On top (i.e., called last), there's a widget with two large buttons for turning pages forward and backward. These are also invisible (achieved by setting the appropriate WidgetTheme).

        Before I call all 4 widgets, I fill the global variables, and if the book only has one page, I simply omit the last widget.

        This method actually works quite well for me. However, you lose the ability to move the widgets around. So they are statically positioned at the center of the screen.

        I call it like this:

           widget["book0"].element["0001"].image = "openerionbook.png";
        
            $currentquest = global.property["currentquest"];
            $numberofquests = len(player.quests);
        
            if $currentquest < 1 then
                $currentquest = 1;
            elseif $currentquest > $numberofquests then
                $currentquest = $numberofquests;
            end;
        
            $currentquestid = player.quests[$currentquest - 1];
            $questtext = $currentquestid + "_text";
        
            if global.property[$questtext] == null then
                global.property[$questtext] = quest[$currentquestid].description;
            end;
        
            global.property["currentquestname"] = quest[$currentquestid].name;
            global.property["currentquestdesc"] = global.property[$questtext];
            global.property["booktext"] = global.property[$questtext];
            global.property["booktitle"] = "Quest Log";
            global.property["pagetitle"] = quest[$currentquestid].name;
            global.property["currentquestpage"] = $currentquest + " / " + $numberofquests;
            global.property["currentquest"] = $currentquest;
            global.property["bookpages"] = str($currentquest + " / " + $numberofquests);
            global.property["numberofpages"] = $numberofquests;
            $booktext = global.property["booktext"];
            $firstPageLines = 16;
            $otherPagesLines = 18;
            $PageLineLength = 30;
            $firstPageMaxLength = $firstPageLines * $PageLineLength;
            $otherPagesMaxLength = $otherPagesLines * $PageLineLength;
            $pageIndex = 1;
            $pageStart = 0;
            
            while $pageStart < len($booktext) do
                $remainingCharacters = len($booktext) - $pageStart;
            
                if $pageIndex == 1 then
                    $maxPageLength = $firstPageMaxLength;
                else
                    $maxPageLength = $otherPagesMaxLength;
                end;
            
                if $remainingCharacters > $maxPageLength then
                    $pageEnd = $pageStart + $maxPageLength;
                    while $pageEnd > $pageStart and substr($booktext, $pageEnd, 1) != " " do
                        $pageEnd -= 1;
                    end;
                else
                    $pageEnd = $pageStart + $remainingCharacters;
                end;
            
                global.property["page" + $pageIndex] = "[color=#2a2a45]" + substr($booktext, $pageStart, $pageEnd - $pageStart) + " [/color]";
                $pageIndex += 1;
                $pageStart = $pageEnd + 1;
            end;
            
            global.property["pagetitle"] = "[color=#2a2a45]" + global.property["pagetitle"] + " [/color]";
            global.property["bookpages"] = "[color=#2a2a45]" + global.property["bookpages"] + " [/color]";
            
            if global.property["_journal_"] == true or global.property["_questlog_"] == true then
        show_widget("book1");
            else
                show_widget("book2");
            end;
            
            if global.property["numberofpages"] != null and global.property["numberofpages"] > 1 then 
                if global.property["_questlog_"] == true then
                    widget["book_Overlay"].element["0005"].script = "__nextquest__";
                    widget["book_Overlay"].element["0006"].script = "__prevquest__";
                else
                    widget["book_Overlay"].element["0005"].script = "null";
                    widget["book_Overlay"].element["0006"].script = "null";
                end;
                show_widget("book_Overlay");
            end;