Implementation Gooey's Quests

Florian

Active Member
Contributor
Architecture
For this module I have planed to give gooey, the mascot of terasology a main role ingame. It will be based on the drawing that got used in the Summer of Code (https://summerofcode.withgoogle.com/organizations/4668766554161152/) when @SuperSnark agrees that I use his drawing of gooey as a reference.

Gooey will ask the player, if he wants gooey to use his magic to make this world a little bit more interesting.

Anytime afterwards gooey can have one or multiple ideas about how he could make the game more interesting.

For example gooey may ask you if you are interested in exploring a dungeon? If you agree gooey will use his magic to add a dungeon into the game world.

Or he will ask you if you would like a boss fight. If you agree a boss monster will make a hopefully effect heavy entrance into the game world.

Or gooey may offer the player to do "Treasure Hunt". When you agree gooey will add hints to the treasure quest into the game world, which the player can then follow. Like for example a rock formation or some kind of paper with instructions of how to get to the treasure chest.

For the start the ideas gooeys have will be simple and few, but I hope that others love the idea too and will start implementing their own.

From the implementation side it will look like this:

Once the player has agreed that gooey should make the world more interesting, the algorithm will randomly pick quests and check if the conditions are right for that quest to happen. For example it might search for a mountain to place a cave in, before it offers the player a quest to explore a goblin cave.

Of course it is planed to make gooey's internal quest list expendable by other modules. To make it more rewarding for contributors, gooey will also inform the player about the author of a quest, when it offers a quest.

I would like to have the module to have a lot of default content. so if you want to add a quest, just create a pull request for the module. This allows players to actually find the content easier without having to know your addon for Goeey's Quests.
 

Florian

Active Member
Contributor
Architecture
Work in progress version of the gooey model I am currently making:


(click to enlarge)

The above screenshot is just a render made with Blender. Textures and lower part is still missing, rigging and animation are still missing too.
 

SuperSnark

Lore Master
Contributor
Design
Art
I like your idea Florian! Sounds fun. Please feel free to use Gooey and thanks for asking for my blessing.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps

Florian

Active Member
Contributor
Architecture
I added 3 animations and added the model to the game:



Afterwards I tried to use the Dialogs module to add dialogs, but there were some issues.

So I decided to go for a interaction dialog approach which was actually easier (With the same mechanism I describe in: https://github.com/MovingBlocks/Terasology/wiki/How-to-make-interactable-blocks).

There is still a bug that makes most interaction tries fail. So you have to try multiple times to press E till it opens. There are also some strange sudden untended "teleports" which might be related to the issue that it is not clickable. The dialog has a little text and a few options to choose from from which only the close operation is already implemented.
 
Last edited:

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Loaded it up and spawned a few Gooeys - looks awesome! Especially the animations twisting to look around :)

Had a lot of trouble getting the interaction screen to appear but did see it.

Mind if I add it to the lineup? I know it isn't done yet, but it doesn't crash the game so hey :) That way it'll start being in the dev builds, even if it doesn't do much in the upcoming release.

Probably this could help close https://github.com/MovingBlocks/Terasology/issues/884 although some of the old ideas there involved gelatinous cubes with transparency and other neat effects.

Pinging @SuperSnark for reference :)
 

Florian

Active Member
Contributor
Architecture
No, please add it to the lineup. That makes it easier for other players to try it out.

I worked further on the module:
  • Gooey is now much easier to click (The invisible physics representation was way to small)
  • Gooey can now be ordered to follow you
  • Gooey can now be ordered to stay where he is. The command is not instant yet, he will complete its current route.
 

Florian

Active Member
Contributor
Architecture
I just pushed some new changes to the git repository.

Change log:
  • Fixed strange movement artifacts whenever the AI is not trying to move.
  • When you order gooey to follow you, it will no longer try to move to your position, but will instead stop about 3 blocks away.
  • Gooey stops now immidatly when you order it to stop
  • Gooey reacts now to the player position changes immidatly and recalculates a different path.
  • Stand animations will now play continuously and don't get interrupted by movement checks. (An executed movement will still interrupt it)
Technical background:

It is using now a new approach way of moving characters with behaviour trees. The old approach simulated only character movement input while the character was actually moving.
When the character did not move, the server started to predict what it would do if it would continue with its previous action. This caused the strange movement artifacts.

To solve it, there is now a new system that sends the always input. So it does mostly the job of the old "Move to" node, but it also sends input when the character is not moving.

To allow for simple continuous path finding to a characters location there is now a single "Follow" node that makes a character follow another entity.

The name of this node will propably change, once it is made more general to also cover the case of movement to a target location instead of a entity. The code is not in it's proper library yet as I first want to see it a bit more matured before I move the new movement and pathfinding functionality into Core and Pathfinding.

There is also a "Can Follow" node that checks the distance to the target to abort the movement to it once the character got close enough. It's name may change also.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Good stuff! :)

On IRC the "deer disco dance" came up and @Michael suggested doing a dead zone of sorts to avoid having the input weird out the deer or other creatures. This might also be a good slight bit of randomization - let creatures stop within a small (sub-block) radius of their target rather than the exact center of a block

Edit: Nice touch that Gooey actually communicates with the player through the mini-chat bar!
 
Last edited:

Florian

Active Member
Contributor
Architecture
I just pushed some new changes to the git repository.

Change log:
  • Gooey spawns now automatically and does not need to be cheated in.
  • A debug command called respawnGooey has been added. The command is not instant, but will cause the game to look out for an opportunity to spawn gooey in such a way that it is visible to the user.
 

Florian

Active Member
Contributor
Architecture
I pushed some new changes to the git repository:

Change log:
  • Gooey now only spawns, when it can offer you a quest
  • New work in progress quest spawns now a "dungeon entrance" (See screenshot)

    (click to enlarge)
  • Gooey respawn command has been removed, as he spawns now only when it he has a quest to offer
  • 60s after you started a quest, gooey will try again to find a valid quest location.
  • The quest get repeated for now forever for easier testing.
  • When gooey has a new quest to offer to you, it teleports/respawns near you.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Tested it out - nice! Although it was kinda hard to find a good spot for a quest / Gooey spawning.

It looks like in the screenshot you might be in the initial spawn clearing? That would be pretty easy, but I couldn't replicate.

First world no Gooey, even walking around a couple minutes. Tried spawnPrefab but no quest available.

Second world walked around for probably a minute, this time jumping up a mountain backwards so I wouldn't miss a spawn, which seemed to do the trick! Asked for a quest and found the little dungeon entrance nearby. Neat!

Third world again walked around for several minutes, but no Gooey. Also noticed an odd amount of lag spikes from chunk related activity, but that's probably pre-existing.

All three I tried to stick close to steep hillsides in case those would make for the ideal dungeon terrain.
 

Florian

Active Member
Contributor
Architecture
@Cervator: Thanks for testing it out. As tipp for finding the dungeon: "Only the morning sun shines into the dungeon."

I pushed some new changes to the git repository.

Change log:
  • When gooey spawns he greets you now with a quest specific message (although it is just 1 since there is just 1 quest so far)
  • The texts in gooey's dialog are now based on the quest he offers.
  • A particle and light effect has been added to the spawning of gooey to make it more visible.
  • The corridor right after the entrance is no longer an empty area.
  • The entrance search algorithm has been fine tuned
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
I see it!

Two first worlds Gooey spawned almost immediately, even managed to create a second unique entrance in the same area after asking a second time in the first world. Caught a brief glimpse of the spawning sparklies too, nice.

Third world wandered for several minutes, probably from being stuck in a relatively flat forest area. Finally spawned when I found some hills, but I was beginning to get weird chunk-related spikes again, even remaining fairly still. Had a second Gooey spawn a little after, caught the particles more that time as it lagged a bit at just the right spot.

Would it make sense to extend the duration / magnitude of the sparkles a bit, maybe add it to where the entrance is created as well? They're pretty.
 

Florian

Active Member
Contributor
Architecture
Nice idea with the particles at the dungeon spawning. I will probably add that at some point.

I pushed a new version where it will take a bit longer to get to the end of the corridor. More I won't spoil :)
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Haha clever! Found a handy little other module that helped me identify some stuff and make it through more easily ;)
 
Top