GSoC 2018 - GooKeeper

l0ftyWhizZ

New Member
Contributor
#1
Hello everyone! :D

This forum post serves as the place wherein the major/minor updates, and other important discussions would be for the GooKeeper project.

Summary : GooKeeper is a new gameplay module, designed by SuperSnark, which is closely related to the game "Slime Rancher". Here, the player is left in the GooWorld, and he has to earn a living by catching different gooeys, and building a GooZoo! He can also make the gooeys mate with one another to produce new and interesting gooeys and nurture all of them. Attract more customers, earn more profit and then spend it on upgrading the equipments/zoo.
Mentors : mandarj, vampcat, josharias, arpan98, supersnark
Student : Shreyas Iyer (l0ftyWhizZ)
Slack : l0ftyWhizZ, #gookeeper
Trello : Project Board
GitHub : https://github.com/l0ftyWhizZ/GooKeeper
Blog : l0ftywhizz.wordpress.com
 

l0ftyWhizZ

New Member
Contributor
#2
Weekly Report May 7th - May 13th, 2018

What have you achieved in the last 2 weeks?
- An initial optimization has been done on the gooey spawning (insignificant and distant gooey entities get deleted)
- A new `PlazMasterComponent` and `PlazMasterAction` has been implemented with the basic functionalities required for stunning a gooey. (works on basic ray-casting, along with a primitive recoil system)
- New stun state implemented in Gooey BT.

What are you currently working on?

- Currently working on finishing the implementation of the PlazMaster and the required stun state changes in the Gooey BT.
- Also looking into efficient ways to render the plasma beams.

What problems are you currently facing?

- Not able to pick a particular renderer for rendering the plasma beam.

Is anything blocking you from making progress?

No.

List of PRs and opened/closed Issues

Nothing.

Something else (pictures of new content, code snippets, new wiki content, …)

Nothing.
 

l0ftyWhizZ

New Member
Contributor
#3
Weekly Report May 14th - May 20th, 2018

What have you achieved in the last 2 weeks?
- More improvements made on the PlazMasterComponent and PlazMasterAction, the gun functions semi-automatically.
- Added attributes 'stunTime' and 'stunChargesReq' to the 'GooeyComponent', which represents the time for which the particular gooey would be stunned and the number of plasma shots required to stun it, hence allowing an improved challenge to the player.
- Implemented 'SlimePodComponent' and 'SlimePodAction' (for capturing the gooey) and currently it functions as a bear trap, and upon activating the slime pod containing an entity it releases that entity.

What are you currently working on?

- Adding a poke-ball mechanic to the slime pod, and hence looking into Combat System for similar item reference. (Ex - spear)
- Also looking into efficient ways to render the plasma beams.
- Looking into implementing a primitive distance based culling for the entities for a performance boost.

What problems are you currently facing?
None.

Is anything blocking you from making progress?

No.

List of PRs and opened/closed Issues

Nothing.

Something else (pictures of new content, code snippets, new wiki content, …)

Nothing.
 

l0ftyWhizZ

New Member
Contributor
#4
Weekly Report May 21st - May 27th, 2018

What have you achieved in the last 2 weeks?

- Finished the plazmaster visualization, it now shoots plasma stubs and also added gun sound clip.
- Implemented the gooey's after-stun behavior in the gooey BT. (Whether it flees away, or turns hostile towards the player depending on its components)
- Finished the slime pod's implementation as a pokeball. Now the player is provided with a slime pod launcher which upon activation shoots out poke-ball like pods which would capture stunned gooeys in the close vicinity depending upon a probability derived from the gooey's type, distance of the pod from the gooey, etc.
- Implemented a 'cullDistantGooeys' function which removes the 'skeletalMeshComponent' and re-attaches it based on the distance from the player. (Gives a decent performance boost)

What are you currently working on?

- Working on adding the pick-up functionality for the slimepods when the player walks over one.
- Looking into the 'Hunger' module to reuse as many features for implementing the gooey hunger system.

What problems are you currently facing?

None.

Is anything blocking you from making progress?

No.

List of PRs and opened/closed Issues

Nothing.

Something else (pictures of new content, code snippets, new wiki content, …)

Nothing.
 

l0ftyWhizZ

New Member
Contributor
#5
Weekly Report May 28th - June 3rd, 2018

What have you achieved in the last 2 weeks?

- Finished implementing the slime pod pickup and throwing functionality. The player can release the captured gooey by activating the slime pod on the ground, or even if the pod is held.
- Looked in `StructureTemplates` module and created a basic GooZoo ST.
- Implemented a basic visitor prefab using the model from `HumanoidCharacters` module, and added a `stray` behavior to it.

What are you currently working on?

- Working on implementing the visitor spawning blocks, and exit blocks.
- Looking into the 'Hunger' module to reuse as many features for implementing the gooey hunger system.

What problems are you currently facing?

None.

Is anything blocking you from making progress?

No.

List of PRs and opened/closed Issues

Nothing.

Something else (pictures of new content, code snippets, new wiki content, …)

Nothing.
 
Last edited:

l0ftyWhizZ

New Member
Contributor
#6
Weekly Report June 4th -June 10th, 2018

What have you achieved in the last 2 weeks?

- Implemented a visitor spawning block using `Spawning` module (Spawns a visitor every 5 seconds)
- Added Fences to the GooZoo ST.
- Implemented basic gooey pen blocks (Used to house the captured gooeys), in such a way that a blue gooey should be housed only in a pen made up of blue pen blocks, and so on for other gooey types.

What are you currently working on?

- Testing the pen block functionality.
- Implement visit block.

What problems are you currently facing?

None.

Is anything blocking you from making progress?

No.

List of PRs and opened/closed Issues

Nothing.

Something else (pictures of new content, code snippets, new wiki content, …)

Nothing.
 
Last edited:

l0ftyWhizZ

New Member
Contributor
#7
Weekly Report June 11th -June 17th, 2018

What have you achieved in the last 2 weeks?

- Implemented `PenBlockComponent` which has a type for specifying the gooey type (Created a fence block version as well as a normal block version).
- Implemented `VisitorComponent`, `VisitorBlockComponent` and `VisitorSystem` wherein each visitor has a list of visit block entities to be followed (list gets populated based on a RNG number and the cutoff of the existing pens).
- `VisitorBlockComponent` has type and cutoff attribute which depends on the nearest pen (computed when the block is placed).
- Modified `visitor.behavior` to follow a path of visit blocks.
- Added `PlayerStartingInventorySystem` which gives all the required equipments and utility blocks.
- Modified GooZoo ST to house the newly created pens.

What are you currently working on?

- Currently, the visitor behavior is buggy, hence my main focus would be to fix it.
- With the basic zoo mechanics in place, next would be introducing gooey hunger system.

What problems are you currently facing?

- Visitor behavior is highly inconsistent while in-game, and I am currently not able to find a fix.

Is anything blocking you from making progress?

No.

List of PRs and opened/closed Issues

Nothing.

Something else (pictures of new content, code snippets, new wiki content, …)

Nothing.
 

l0ftyWhizZ

New Member
Contributor
#8
Weekly Report June 18th -June 24th, 2018

What have you achieved in the last 2 weeks?

- Fixed the visitor inconsistent behavior, and improved it
- Removed Spawning dependency and created a custom visitor spawning system
- Introduced a basic EconomySystem and added EconomyComponent to the visitor entrance block. (Credits get added to the players wallet whenever a visitor spawns and when it visits a pen)
- Whenever a visitor visits a pen, the credits earned depend upon the number of gooeys in that pen as well as the rarity of the gooeys.
- Added basic UI elements to display wallet balance, slime pod quantity, and plazmaster charges.
- Also started working on the wiki (https://github.com/Terasology/GooKeeper/wiki)
- Modified slime pod pickup mechanic, and now empty slime pods get added back to the launcher for re-use.

What are you currently working on?

- Currently working on implementing the hunger system for gooeys.

What problems are you currently facing?

None

Is anything blocking you from making progress?

No.

List of PRs and opened/closed Issues

- https://github.com/Terasology/GooKeeper/pull/1
- https://github.com/Terasology/GooKeeper/pull/2

Something else (pictures of new content, code snippets, new wiki content, …)

 

l0ftyWhizZ

New Member
Contributor
#9
Weekly Report June 25th -July 1st, 2018

What have you achieved in the last 2 weeks?

- Added a system to assign ID to a pen (useful while computing the number of gooeys in a pen)
- Tweaked economy system to add credits to the players wallet when a visitor visits a pen (depending upon the number of gooeys and their rarity)
- Gooey hunger system implemented with basic feeding mechanics, health regen/degradation methods
- Add a tooltip to display a gooey's current health

What are you currently working on?

- Implementing UpgradableComponent and PurchasableComponent for the utility blocks/equipment.

What problems are you currently facing?

None.

Is anything blocking you from making progress?

No.

List of PRs and opened/closed Issues

- https://github.com/Terasology/GooKeeper/pull/2

Something else (pictures of new content, code snippets, new wiki content, …)

Nothing.
 

l0ftyWhizZ

New Member
Contributor
#10
Weekly Report July 2nd -July 8th, 2018

What have you achieved in the last 2 weeks?

- Implemented a tooltip to display a gooey's current health, and the food items that it can consume. Also added a `lifeTime` attribute to `GooeyComponent`
- Refactored the entire economy system and PlayerHud, attached the `EconomyComponent` to the player prefab instead of the entrance block. Added an `owner` attribute to each of the blocks which helps in identifying the player entity to whom the zoo belongs
- Made the economy system a bit more multiplayer friendly.
- Fixed the `SetTargetVisitBlockAction` which used to cause an NPE in certain scenarios.
- Added a `purchase` command which enables the player to buy more utility blocks (and debits the corresponding amount from the player's wallet), as well as working on an `upgrade` command which can be used to upgrade the current tier of the equipment.
- Started working on the initial gooey breeding system.

What are you currently working on?

- Make a breeding area ST, breeding blocks where the involved gooey entities are to be brought
- Implement logic to generate an offspring.

What problems are you currently facing?

None.

Is anything blocking you from making progress?

No.

List of PRs and opened/closed Issues

- https://github.com/Terasology/GooKeeper/pull/3

Something else (pictures of new content, code snippets, new wiki content, …)

Nothing.
 

l0ftyWhizZ

New Member
Contributor
#11
Weekly Report July 9th -July 15th, 2018

What have you achieved in the last 2 weeks?

- Finished the implementation of `purchase` command (for purchasing utility blocks), and `upgrade` command (for upgrading PlazMaster and/or Slimepod Launcher)
- Finished the economy system refactoring.
- Added a `GooeyActivationScreen` which pops up whenever a player "activates" a captured gooey, presenting options to either feed the gooey, or choose it for breeding
- Added a `BreedingSystem` class, which currently makes the gooey entity follow the player, when lured by a food item of its liking. (WIP)
- Started working on a Breeding Centre ST to be integrated with the existing GooZoo.

What are you currently working on?

- Make a breeding area ST, breeding blocks where the involved gooey entities are to be brought
- Implement logic to generate an offspring.
- Start working on the breeding tree and recipes.

What problems are you currently facing?

None.

Is anything blocking you from making progress?

No.

List of PRs and opened/closed Issues

- https://github.com/Terasology/GooKeeper/pull/3

Something else (pictures of new content, code snippets, new wiki content, …)

Nothing.
 

l0ftyWhizZ

New Member
Contributor
#12
Weekly Report July 16th -July 22nd, 2018

What have you achieved in the last 2 weeks?

- Finished the implementation of `purchase` command (for purchasing utility blocks), and `upgrade` command (for upgrading PlazMaster and/or Slimepod Launcher)
- Finished the economy system refactoring.
- Added a `GooeyActivationScreen` which pops up whenever a player "activates" a captured gooey, presenting options to either feed the gooey, or choose it for breeding
- Added a `BreedingSystem` class, which currently makes the gooey entity follow the player, when lured by a food item of its liking. (WIP)
- Started working on a Breeding Centre ST to be integrated with the existing GooZoo.

What are you currently working on?

- Implement breeding blocks, wherein the mating entities are to be brought and the breeding process is to be initiated
- Add logic for dropping an egg whenever the breeding process terminates successfully.
- Start working on the breeding tree and recipes.

What problems are you currently facing?

None.

Is anything blocking you from making progress?

No.

List of PRs and opened/closed Issues

- https://github.com/Terasology/GooKeeper/pull/4

Something else (pictures of new content, code snippets, new wiki content, …)

Nothing.
 

l0ftyWhizZ

New Member
Contributor
#13
Weekly Report July 23rd - July 29th, 2018

What have you achieved in the last 2 weeks?

- Implemented `BeginBreedingEvent` which gets triggered when the parent gooey enters a breeding block
- Implemented a method in `BreedingSystem` to spawn an egg when the two parent gooeys are brought to the breeding pen (spawn time is randomized)
- Implemented methods to obtain the dominant component for the offspring gooey based on the values of the `FactorComponent` derivatives in the parents.
- Added a randomized gooey egg hatching which attached the necessary components to spawn the newly generated gooey offspring.
- Added textures for the possible gooey variations.
- Started working on assigning a texture to the gooey offspring based on the parents. (recipe-like method)

What are you currently working on?

- Complete the texture assigning method implementation.
- Documentation, wiki and a new video

What problems are you currently facing?

None.

Is anything blocking you from making progress?

No.

List of PRs and opened/closed Issues

- https://github.com/Terasology/GooKeeper/pull/4

Something else (pictures of new content, code snippets, new wiki content, …)

Nothing.
 

l0ftyWhizZ

New Member
Contributor
#14
Weekly Report July 30th - August 6th, 2018

What have you achieved in the last 2 weeks?

- Implemented methods in `BreedingSystem` to generate the correct offpsring material based on the colors of the parents.
- Worked on adding Javadocs, and fixing minor logical bugs in `BreedingSystem` and the `GooeySystem`
- Added more content to the game guide in the project wiki, as well as the README
- Created a video to demonstrate the breeding system
- Worked on the wiki, documentation and created a new video demonstrating the gooey breeding system

What are you currently working on?

- Finishing the final GSoC report

What problems are you currently facing?

None.

Is anything blocking you from making progress?

No.

List of PRs and opened/closed Issues

- https://github.com/Terasology/GooKeeper/pull/4

Something else (pictures of new content, code snippets, new wiki content, …)