GSOC 2019 - Metal Renegades: World

AndyTechGuy

New Member
Contributor
This forum post will act as a weekly log for this project, along with matching posts on the blog.

 

AndyTechGuy

New Member
Contributor
May 18th - May 25th, 2019

  • What have you achieved in the last week?
This week was primarily a preparation week. The github project board was filled with tasks according to the proposal. This post was created, along with a blog to provide extensions on the information provided here.
  • What are you currently working on?
Now that the initial planning is done, a finalization into a realistic order of tasks needs to be completed. As well, the "Metal Renegades" project is being shared by two developers, so this final order must be agreed upon by both parties.
  • What problems are you currently facing?
None right now :)
  • Is anything blocking you from making progress?
The organization between me and Wabadump is the next major hurdle before work can begin.
  • List of PRs and opened/closed Issues
N/A
  • In the weekly meeting
In the meeting, it was discussed how to handle the issue of world generation, and in a broader sense the entire project, being split between two parties. It was eventually settled that both developers will continuously make PRs to the same module, and keep in communications that way. As well, there was a doodle poll made to change the meeting time for next week.
 

AndyTechGuy

New Member
Contributor
Week 1: May 26th - June 5th, 2019 (meeting time changed & meeting skipped)

Blog Post
  • What have you achieved in the last "week"?
I have started work on the AI system. A stand-in gooey model has been imported and programmed with a simple behavior, to follow any player that passes nearby. Work has also started into AI integration with DynamicCities, starting with finding building positions for AI spawning. As well, behaviors that are day-night cycle sensitive have been started.
  • What are you currently working on?
I am continuing work on completing the AI system basics, including spawning within cities, and some basic behavior 'building blocks' to build more complex behaviors later on.
  • What problems are you currently facing?
I had expected it to be simpler to extract the positions of buildings from DynamicCities, but this turns out to be more of a challenge then I thought. This will require a PR against DynamicCities itself in order to work properly.
  • Is anything blocking you from making progress?
Nothing at the moment :thumbsup:
  • List of PRs and opened/closed Issues
https://github.com/Terasology/MetalRenegades/pull/3 "Add base AI characters" [WIP]
  • In the weekly meeting
In the meeting this week, the problem with building positions was discussed. It was concluded that out of the fired events listed here, BuildingEntitySpawnedEvent can either already provide building position, or DynamicCities should be altered to provide position in this event. After this, we discussed about the potential of the AI agents in cities, most prominently the idea of having each agent claim a building as their 'home', where they return to at night. At the end of the meeting, the possibility of replacing the gooey stand-in model with an actual robot model was discussed.
 
Last edited:

AndyTechGuy

New Member
Contributor
Week 2: June 6th - June 12th, 2019

Blog Post
  • What have you achieved in the last week?
    • AI system work has continued, with the original gooey model & behavior becoming split into four separate behaviors and appearances.
    • An integration with OreGeneration has been added to the dynamic world generator
    • The issue of finding building locations has been solved, with the addition of a LocationComponent to building entities upon generation.
  • What are you currently working on?
    • Development of time-based behaviors is still in progress. A component allowing characters to gather time data has been added, but a proper implementation of this in a behavior logic switch is still in the works.
    • Currently gooey spawning is based on the time cycle. I am working on making each gooey have 'ownership' over an individual building instead.
  • What problems are you currently facing?
    • There are no major problems currently
  • Is anything blocking you from making progress?
    • There are also no major roadblocks at the moment
  • List of PRs and opened/closed Issues
 
Last edited:

AndyTechGuy

New Member
Contributor
Week 3: June 13th - June 19th, 2019

Blog Post
  • What have you achieved in the last week?
    • Agents can now spawn inside buildings! Every building in the city can provide shelter for 1-5 characters inside, which spawn on building creation.
    • A bug with one of the city buildings was fixed, the mining buildings now spawn properly.
    • A pull request for time-based behaviors has been made, adding the component needed for time tracking.
  • What are you currently working on?
    • Now that characters spawn within a defined building, I'm now working on having these characters interact with the city and with each other.
  • What problems are you currently facing?
    • An oddity was discovered with the 'stray' behavior tree, where each character interferes with every other character. It causes characters to have a very unnatural studdering motion.
  • Is anything blocking you from making progress?
    • The problem mentioned above makes it very difficult to develop behavior further, as the 'stray' behavior is a common building block for more complex behaviors.
  • List of PRs and opened/closed Issues
 
Last edited:

AndyTechGuy

New Member
Contributor
Week 4: June 20th - June 26th, 2019

Blog Post
  • What have you achieved in the last week?
    • Agents spawning pull request was finalised and merged.
    • Time-sensitive behaviors pull request is now at a mergable state, with the return home behavior added to all gooey characters
    • The addition of nocturnal gooey, which only comes out at night.
    • Slight performance tweaks to spawning, increasing the gap between spawn checks and reduces spawn buildings to exclusively residential buildings.
  • What are you currently working on?
    • The next step in AI development is need-based behaviors, which will drive characters to interact with parts of the city, the world, and with each other.
  • What problems are you currently facing?
    • The Terasology/MetalRenegades module itself seems to be suffering from performance issues, which seem to go up over time. It is unknown wheter this is due to DynamicCities, Behaviors, or another module. It is very noticable on my laptop, which is less powerful than my computer.
  • Is anything blocking you from making progress?
    • Not at the moment :)
  • List of PRs and opened/closed Issues
 
Last edited:

AndyTechGuy

New Member
Contributor
Week 5: June 27th - July 3rd, 2019

Blog Post
  • What have you achieved in the last week?
    • The approach to time-sensitive behaviors has been changed based on review, now works with an action/system rather than component/system.
    • The implementation of final characters has begun, with a needs-based behavior approach. These characters have replaced the earlier five characters inside of the spawning system.
    • The need for food has been added to these characters, which is satisfied by moving to the closest marketplace. These marketplaces are identified via a 'FoodSourceComponent'.
    • A vertical offset has been added to character spawning, preventing them from spawning in the ground.
  • What are you currently working on?
    • Continuation of needs-based behaviors, each of which will be satisfied by a different action.
    • Additions to the world generator, which adds empty entities at points of interest (a WaterSourceComponent at a lake, for example).
  • What problems are you currently facing?
    • Just like last week, there seem to be some performance issues within the module. They are slightly improved with the performance tweak PR, but they are still noticable.
  • Is anything blocking you from making progress?
    • Not at the moment :)
  • List of PRs and opened/closed Issues
 
Last edited:

AndyTechGuy

New Member
Contributor
Week 6: July 4th - July 10th, 2019

Blog Post
  • What have you achieved in the last week?
    • Finished all needs for need-based behaviors (thirst, social, rest, shelter)
    • Social need is the first instance of characters interacting with each other, when a character requires an interaction it will find another that needs an interation and they will travel towards each other.
    • Working on a pathfinding integration that will ensure that characters do not get stuck when travelling for needs
    • Added a well building to cities for the thirst need, which branched into investigation of problems with structure template placement.
  • What are you currently working on?
    • Finish remaining tasks with need-based behaviors, including pathfinding and needs UI.
    • Fix bugs with needs, most prominently the tendency of characters to get stuck.
  • What problems are you currently facing?
    • A major bug with structure template placement is now very noticable with the addition of wells, they do not spawn properly on their set parcels and at times there are more than a dozen spawning improperly in the sky or in the ground.
  • Is anything blocking you from making progress?
    • Paths from pathfinding seem to throw errors when saved in a characters MinionMoveComponent, preventing further progress in this area.
  • List of PRs and opened/closed Issues
 
Last edited:

AndyTechGuy

New Member
Contributor
Week 7: July 11th - July 17th, 2019

Blog Post
  • What have you achieved in the last week?
    • Need-based behaviors is now at a mergable state, with repetitive code segments combined into common actions/classes.
    • Split off final character creation into a different pull request. With these two changes, the need-based behaviors pull request is now half of the original size.
    • The pathfinding issue has been located. When saving the component to the character entity, the path is copied via ListCopyStrategy. This class copies all lists as ArrayLists, so an error is thrown when an ArrayList is saved to a Path field.
  • What are you currently working on?
    • Fix the list-copying bug with paths, either by changing the Path object or changing ListCopyStrategy.
    • Writing a detailed module description for the readme
    • When the two above are done, starting on factions!
  • What problems are you currently facing?
    • The issues with structure templates and pathfinding still persist from last week.
  • Is anything blocking you from making progress?
    • The problems above are still a bit of a roadblock, but they are being worked on.
  • List of PRs and opened/closed Issues
 
Last edited:

AndyTechGuy

New Member
Contributor
Week 8: July 18th - July 24th, 2019

Blog Post
  • What have you achieved in the last week?
    • The issues with saving paths has been solved, now FindPathToNode works locally for character pathfinding!
    • Research into character movement issues, and made an issue with the results.
    • Starting module documentation, with edits to the module.txt file and the addition of a readme to the Terasology/MetalRenegades repository.
    • Starting player needs, with an integration of Terasology/Hunger.
  • What are you currently working on?
    • Fixing the bugs brought up with world generation & with behaviors
    • Continuing documentation, next step being starting a wiki on the Terasology/MetalRenegades repository
    • Integrate pathfinding into metal renegades characters
    • Continuing player needs, and adding more ways to obtain these needs (as soon as #18 is ready, have needs items available there)
  • What problems are you currently facing?
    • Pathfinding seems to trigger heavy performance issues after a long runtime (over 500ms delay in BehaviorSystem, ouch!)
  • Is anything blocking you from making progress?
    • Other than #11 being the last major behavior PR, not at the moment :thumbsup:
  • List of PRs and opened/closed Issues
 
Last edited:

AndyTechGuy

New Member
Contributor
Week 9: July 25th - July 31th, 2019

Blog Post
  • What have you achieved in the last week?
    • The structure template placement issue has been solved! This was done by changing the way that the block rotation was calculated.
    • Changes have been applied to the pull requests reviewed over the week, ready to merge this week.
    • Researched more pathfinding methods, and found some bugs present in the current system.
    • In solving the structure template issue, I found a very strange issue in Dynamic Cities, where buildings are still place in the buffer while the game is paused.
    • Created a basic main page for the repository wiki, with a list of pages to be created.
  • What are you currently working on?
    • After #11 is merged, start on character factions & faction aggression, the last major task in the proposal!
    • Create a test character for pathfinding inside Terasology/TutorialBehaviors, and then implement the tactics used in this character into Metal Renegades characters.
    • Continuing the development of player needs, specifically hunger, rest, etc. (Haven't looked into this too much, but this may tie into the Restoration-100 project....)
    • Fix performance issues present in behaviors & cities, as they are the two biggest performance bottlenecks at the moment.
  • What problems are you currently facing?
    • Under certain conditions the pathfinding system can take an overly long time to load, and all pathfinding will halt until a few minutes into running the world.
    • As currently made, the move_along_path node cannot be interrupted in the middle of the path without severe bugs. This makes it impossible at the moment for a character to interrupt the path if a target is moving; a huge problem for some behaviors.
  • Is anything blocking you from making progress?
    • #11 is currently blocking the development of factions & a pathfinding integration, it would be great if the changes on this were reviewed & merged as soon as possible (this will be a reminder to make sure PRs aren't too large next time :D)
  • List of PRs and opened/closed Issues
 
Last edited:

AndyTechGuy

New Member
Contributor
Week 10: August 1st - August 7th, 2019

Blog Post
  • What have you achieved in the last week?
    • Major pull requests have been merged, like need-based behaviors & structure template fixes.
    • Added a test pathfinding character to Terasology/TutorialBehaviors, and made a PR to integrate this pathfinding into metal renegades!
    • Fixed buildings being spawned while the game is paused.
    • Added tooltips to Metal Renegades, with additional information about character needs.
    • Created some light fixes for the motion of characters.
    • Started development on factions locally; the final non-stretch task of the project!
  • What are you currently working on?
    • Continuing faction development, including integrations with the combat system.
    • Continuing player needs, with thirst, rest, etc.
    • Fixing problems with pathfinding and finally getting it integrated into Metal Renegades!
  • What problems are you currently facing?
    • For factions I may need to change my approach, I had expected to write this system from scratch, but CombatSystem seems to already have a factions system with faction aggression; however to adapt this for cities I have no idea.
    • Integrating the pathfinding from the test character into Metal Renegades is proving difficult; the pathfinding system returns invalid paths, despite using the exact same nodes as the test character :cry:
    • For integrating Terasology/Thirst I am unsure what approach to take for how the player can satisfy this need. My original plan was to have the player interact with a well to satisfy thirst, but Thirst only supports item consumption.
  • Is anything blocking you from making progress?
    • Nothing at the moment :thumbsup:
  • List of PRs and opened/closed Issues
 
Last edited:

AndyTechGuy

New Member
Contributor
Week 11: August 8th - August 14th, 2019

Blog Post
  • What have you achieved in the last week?
    • Adapted to the new serialization & health changes, and identified a new pathfinding crash with these new systems.
    • Changed the city construction timer to world on world time.
    • Extracted vital pathfinding nodes to Terasology/Behaviors, to be used by modules other than Metal Renegades
  • What are you currently working on?
    • Finishing factions, and determining overlap with CombatSystem.
    • Continuing player needs, with thirst, rest, etc. Specifically with thirst, determining a good way to naturally integrate with Terasology/Thirst.
    • Fixing the newly determined problems with pathfinding + new serialization.
  • What problems are you currently facing?
    • For integrating Terasology/Thirst I am unsure what approach to take for how the player can satisfy this need. My original plan was to have the player interact with a well to satisfy thirst, but Thirst only supports item consumption.
    • The new serialization has caused problems with the pathfinding system, where the game crashes when a player walks too far away from a character.
  • Is anything blocking you from making progress?
    • Nothing at the moment :thumbsup:
  • List of PRs and opened/closed Issues
 
Last edited:

AndyTechGuy

New Member
Contributor
Week 12: August 15th - August 21th, 2019

Blog Post
  • What have you achieved in the last week?
    • Merged tooltip integrations allowing the viewing of character needs in-game
    • Started an implementation of a factions system. Each settlement has a set faction, and only characters with that faction will spawn there.
    • A pull request for a thirst integration, with the addition of a water cup item for quenching thirst.
  • What are you currently working on?
    • Last elements of factions, including faction aggression & the faction alignment of the player.
    • A way for the player to gather a water cup, by adding an interactive block.
    • Writing the final blog report for the project; a draft should be ready today/tomorrow!
  • What problems are you currently facing?
    • To check for nearby faction enemies, there is a parallel loop inside of the main citizen behavior. This loop only seems to run for the first spawned character, ignoring all other characters after this.
  • Is anything blocking you from making progress?
    • Nothing at the moment :thumbsup:
  • List of PRs and opened/closed Issues
 
Last edited:
Top