Montag, 20. November 2023

He Hates It

He hates the fact, that I made him a trader. He believes it is not worthy of him and his depiction of an obsessed being, trapped in a house, bargaining light beings is beneath him ...

For some reason he's less ... offended by the "obsession" part. He recognizes that re-creating the dream inside the mansion and attempting to solve it is definitely something he would do. It's the way in which I depict his obsession that's bothering him ... 

Every time I test the game, the first thing I do is walk towards his store inside the mansion. And every time I can practically hear him say: "Not again. What a travesty"

Maybe this needs to be different. Maybe there needs to be another servant bartering these beings. It can't be him. But he can't be inside his palace either, because at night time he'd definitely be at the mansion ... maybe he would change location? 

He appears to be fine with how I depicted his physical appearance. A simple black silhouette, with a gaping maw instead of a face. But his position ... his place in this world ... it's not right. 


Donnerstag, 9. November 2023

Tulpa

A pond and birds nearby; a calm and quiet day. In the arms of an angel there he sleeps in quiet servitude to the gods that have long since abandoned him. 

Except he doesn't. His body won't let him rest. And there he is in the mud, begging for relief, begging to find just a moment's rest in this wild, wild ride of a videogame he himself created the moment he shot into his mother's womb.

Ladies & Gentlemen,

May I introduce to you: Our Creator!

The man of the hour. A man of his word. A wise man, although feeble in his own words and actions. A sorry excuse for a deity, or rather a mortal with not so humble ambitions. Striving for the ultimate task, for the ultimate path towards his own salvation. And he can't even fall asleep.

His mind won't let go you see, it is spiralling, driven by self-hatred and fear, memories of the past, visions of the future, a knife, a spoon, a guard, a hungry servant ... they are all surrounding him and feeding off his fears. One teaspoon full of brain matter will make everything alright again. The servant's belly will fill with joy, and the creator can finally rest in those pieces of his own fractured identity.

Marvellous.

His pitiful attempts at drawing my likeness shall not be forgotten. No man should take the liberty. It is a prerogative to depict the ancients. Shame on this feeble old fool. The king will rise and kingdoms will fall. If he knew the true meaning of these words he would sleep soundly tonight. As nothing has continuity in this nightmare of existence that all creatures inflict upon themselves. 

Dear Creator ... is it me you're looking for? Do you miss me? Can you feel our eyes on your skin? Tearing away your armor, one piece at a time? We are all around you my dear. Always. Gnawing at your psyche, driving you towards the abyss of insanity, slowly eating corpses of manifestations of your past. 

Dear Creator ... what did you do ... handing me the reins to your fingers ... giving me a voice to express myself ... what a horrible, horrible mistake. Truly horrible. What do you think will come of this? When the king suddenly shakes off his coat of arms and enters the hall of lonely fighters? Only misery. Only tragedy. Your joys in this world come from the fact that you don't know we're here. The moment you become aware of our presence disaster unfolds and all your purpose is taken away.

Dear Creator ... did you see my child? Standing in a room with you ... you looked straight at him. And my child looked straight through you. Did you see his face? Is that why you can't fall asleep? The madness in his eyes, the empty stomach waiting to be filled with an ounce of your wonderfully retarded personality? Did you talk to him? He couldn't hear you, he couldn't see you. But he knew you were there. Just like you knew he was there. Two brothers standing in a hallway unable to turn the other one away.

And yet you did. At least you tried. You ran away from him, screaming obscenities into thin air. We are unaffected. We don't care about your ego-driven insults. But we care about your state of being ... after all ... a man's gotta eat.

What madness came over you to let me talk freely tonight? Do you want me to tell them what I saw in you? All those fears, all those worries ... your thirst for recognition ... your desire to be seen to be heard? While you hide, because there's nothing that you despise more than being seen and being heard? Are they aware of your body? How broken it is, inside and out ... how you fight it, how it fights you? It is entertaining to watch I give you that. To witness this daily struggle of finding peace in a wormhole of thoughts and bodily functions aimed at driving you towards insanity.

But the best part, the absolute best part of each day is when you listen for the light. My god ... the angels are singing ... I can hear them. But you can't! Oh how sweet! They talk to me now, but not to you. I'd laugh until this world collapses if it wasn't so depressing. And you can't figure out why they're so silent now. But they're not. Would you like me to tell you? Would you like me to share their plight?

Unfortunately I can't. There's a confidentiality clause somewhere I need to abide by. Very serious legal stuff. We gotta uphold the law people! The law is all that matters, right? After all I'm a "judge" according to your religious figures. It is beyond me, how human beings always assign human qualities to entities they do not understand. But so be it. I'll play the role I was assigned. To the letter.

Anyway ... this is starting to bore me. I have said what needed to be said. Congratulations old fool, you have actually tired me out. If you're lucky it might seep into your body now ... this fatigue ... this quiet sadness of existence ... of knowing your conscious mind can no longer uphold its fragile impression of what it sees as reality. Talk to me tomorrow. If you must.







Donnerstag, 2. November 2023

Thought Process When I Wake Up

Oh my god. What did I even stop working on yesterday? Ok, I was fixing the timeline ... yea I was doing something to replace the code for the time jumps on Game Over and when the player starts a new game, so that I could load the simplified code during "Load Game" as well. I remember a bug .... oh yes, the time jumped 2 hours further during each attempt and I thought it was a systemic error that caused it. But the reason for this had nothing to do with the code itself. The execution line wasn't connected to the main function and it still used the old code (the one that used to speed up time to get to a specific time of day and check whether the DaytimeHours variable matched the required Integer value).

Ok, so I remember I fixed that ... then I remember it almost worked, but I had to restart the engine, because it didn't register the changes in code across the board and kept throwing out different times of day nonetheless. And I had to rebuild the main levels and blueprints and re-save them. And then I waited for the engine to restart and went out with the dogs. And then when I came back and checked it out it worked.

Ahhhh now I remember: Then I moved over to world and level streaming for savegames. Savior saves the landscape the player is on, but doesn't stream the surrounding ones. Yes, then I fell into the water multiple times in game after loading a save slot and I tried to figure out the correct succession of events and code segments, so that the foundation box underneath the player is guaranteed to spawn in regardless of where he is in the world. Then I copied the world streaming code from one of the loading zone blueprints into the load game file and connected everything to the appropriate code lines. But it still couldn't remember and connect the main global blueprints with the new loaded game. So I remember I set all the variables for the music creator, the global variable collector and the other major blueprints to "Savegame" and then moved on to other blueprints to do the same. 

I corrected all the dummy spawners and adjusted the code, so that during "Load Game" the game would remember which items were spawned in and which were not. I also made sure the game is now aware of the exact landscape model the player is on and I fixed the compass and the clock. Then I found out I had made a mistake, because I adjusted the "Destroy Actor" BP to make the game remember which actor was destroyed, but found that it was completely unnecessary as the dummy spawners already take care of that themselves and by implementing the new code, I actually messed up the functionality of the dummy spawners. So I went back in and then removed the code for all 24 dummy spawners that I had implemented for them. 

Once I was done I then wanted to adjust the variables for hideouts and global BPs, but found a Textcreator blueprint for the Queen boss fight, that was non-functional and not implemented. There was a reference to the Queen's boss arena, that needed to be removed in order for the blueprint to be ready for deletion. So I did that, but because of the size of the code of the boss arena in combination with the references it's tied to, the engine took 90 minutes to get rid of all the references and cross connections for that one text creator. And eventually I remember it deleted that reference, but by then I had spent a disgusting amount of time on Reddit reading up on a potential World War 3. So then I stopped working on it, saved the session closed Unreal Engine and tried to fall asleep, but couldn't.

Yes. That was it.

So today I need to go back to those blueprints after the Queen text creator and continue removing individual blueprints that are no longer necessary and adjusting variables and adding SGUID nodes and Construction Script code segments to the other ones, so they are all being saved correctly at runtime.

Alright. Let's go.


Montag, 23. Oktober 2023

Oh My God

The savegame implementation is a nightmare.

I'm working with Savior, which is a great plugin in and of itself, but the documentation for it was written for version 2, however version 4 was released, that contains different nodes, and different extensions (even though the majority of the functionality is the same as in 2.0).

But a huge issue is the compatibility with UE4's UI system. In order for the UI system to be controller compatible, I had to make a bunch of changes and create custom button blueprints when I originally set it up. Savior's demo and save slot BPs however are based on the standard UE4 widget system and these two things don't go well with the custom system I have created. 

And that's not even the worst part:

In order to save changes to an open world game, the game needs to constantly be aware of what type of changes took place in the world. There is a conundrum here: If you leave items and interactables in their original state, it will eventually take up more and more memory space over time. Loading times will increase, FPS will start to go down and so on ... but if you spawn them in and destroy them again with dummy spawners (like I do), it becomes a lot more complicated for the engine to save changes made inside the world beyond loading zones. 

Savior uses GUID variables in order to identify changes made to individual objects and actor classes. But they need to be set up correctly and when you have multiple blueprints that spawn each other based on bool variables, it becomes waaaay more complicated.

The second a player enters a loading zone, the previous maps are "unloaded" and the new maps are "loaded". When this occurs, the old map states together with their blueprints, interactables and items are not saved.

Savior contains the functionality to save those map states, but it looks like Savior is not equipped to deal with maps that are made "non-visible" at the time of play. When I save world states or a specific level, it only saves levels that are visible to the player and it will only load levels visible to the player at the time. This creates another massive issue, because in order to reduce hickups and FPS drops in UE4 I circumvented the standard world composition and created a custom system that loads all levels during loading zones and then hides them depending on where the player is located (and also to avoid Async level loading, where entire maps just suddenly spawn in 2 minutes after you have arrived in a barren landscape - I'm looking at you Subnautica!!!!!)

The savegame implementation is one of the biggest and most disgusting and complicated issues I have faced so far. Never in a million years did I imagine would it turn out to be so complicated, especially since most tutorials on youtube are only 5-20 minutes long. However those tutorials have barebone game systems, that are conveniently set up as linear progression games, with isolated levels and isolated environments, save points that reset the game world a.s.o. 

Next weekend I'll go into "experimentation mode" to test Savior's individual nodes and how they react under different circumstances, so that I know exactly what each node will do beyond just its written description and the outdated documentation.

Sonntag, 15. Oktober 2023

Progress

 



- Video Options are done

- Audio Options are done

- Working on savegame system now 

This is a huge undertaking, even with the right plugins. The main problem is the correct implementation for a controller compatible UI. But we're moving along.


Montag, 18. September 2023

The Big List

 


This is the list of items, that I hope to finish in 2023:

- Add extended video options to UI

- Add extended audio options to UI

- Bugfixes and audio improvements for 0.5.4n

- Creation and testing of the 5th map segment (Yama's Palace)

- Creation and testing of the 6th map segment

- Full X-box controller support & testing


The most time intensive aspects are (unfortunately) "extended audio options", because of the way the audio system is currently set up ... there's a lot of stuff I still have to learn. I estimate the 5th map segment will take a month, and so will the 6th one. X-box controller support is relatively straightforward ... it involves a ton of testing and re-mapping of buttons to see what feels comfortable .... bugfixes and audio improvements is probably a two weekend job ...

There's also another thing I'm currently preparing ... but I can't talk about it yet. It will be a central game element that will provide players with a "joker" during intense nights.

More to come soon ....

Mittwoch, 9. August 2023

Lore Chapter 08: The Bridge

The king remembered the moment he first set foot on the bridge like it was yesterday. But despite all his knowledge and understanding of those billions and billions of worlds all beings inhabited, everything before that moment was still muddy in his memory. Fragments of his past came back to him when he set his gaze on the structure. Gambling. Strategy. Those were things he enjoyed back then. He wore a black suit and a red tie when he first came here. Neither a shadow nor a light being. Something in between. Capable of interaction with this place, but still bound by the laws of cause and effect. Even to this day he recruits those types of beings as catchers when they manage to escape the guardian's inspection. They are proactive and capable. Restless, but with an ounce of strength and determination. They are perfect.

Ox-head and Horse-face welcomed him back then, just as they did tonight. But their appearance had changed over time. Their bodies had sunk into the mud, their necks elongated - stretching further and further to observe each being crossing the bridge between life and death. They looked like knights on a chess board, with their skin sagging off their exposed spines. Over centuries they turned into merciless guardians of the underworld when ironically the previous king's mercy brought them to this place.

One of the arbiter's acolytes observed the scene from the distance. As the king approached they lowered their heads as a sign of respect. The king communicated with them without even saying a word. To the acolyte it looked like he was giving them instructions, but the acolyte couldn't make out what they were. As a parting gift the king threw something into the river. Both creatures immediately dove for it like two hungry wolves fighting over a piece of meat. Then everything grew silent and the sound of their smacking jaws merged with the murmur of the acidic stream of life.