This looks amazing guys, Can't wait to give it a demo.
Rise of Erion
- Edited
We didn't have a lot of time to continue recently. School requires a little more of my son's focus.
But two things we weren't really happy about were the morning fog (especially because we wanted a sort of time progression during the prologue - the rest of the game will mostly have no time progression) and the way our water looked.
Now we got rid of the fog and used its mechanic to improve how our water looks. Now it has quite a nice gradient and becomes more opaque the deeper it gets.
And I can finally add fishes. ;-)
Some water plants are definitely needed now.
The lake behind the food tent already has some water plants, a couple of stones, and some fishes in it.
I've been experimenting with the effects editor for a new morning fog effect, now that I use the actual fog mechanic of RPGiaB for my water effect.
The thing is, I kind of like how real volumetric fog looks. I'm not sure whether I will use it or not. It does kind of make my graphics card hyperventilate. ;-)
how it goin?
Nice work!!
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. :-)
Pat Good luck
- Edited
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
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?
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.
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.
- Edited
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;