Updates Destination: Sol World-Gen Modularization

IsaiahBlanks1

New Member
Project Details: https://trello.com/b/zXXWo0yn/gsoc-2021-destsol
Proposal: https://docs.google.com/document/d/12KnOR3guxP6OKnrY9TX_29dOwVF7fi1Paa3bJNJS4qo/edit?usp=sharing

Quick Summary:
This project aims to create a modular framework for world generation in Destination: Sol. This will allow more flexibility in the way the world can be generated. Instead of the current system which has very few options for world generation, this project will lay the foundation for a system which can support many options.
 

IsaiahBlanks1

New Member
Weekly Update:

In the past week, I have worked on setting up a framework of classes which will compose the Destination: Sol world-gen. These main class I worked on is the WorldBuilder class, which will drive various Generator classes which create the world. I also set up a hierarchy of abstract Generator classes which can be extended to make different types of Generators, such as PlanetGenerator, MazeGenerator, and FeatureGenerator.

Meeting Moments:

Points Discussed:
  • Unit testing in Destination: Sol
  • Architecture for SolSystem features
  • Developing a diagram to map out above architecture
 
Last edited:

IsaiahBlanks1

New Member
Weekly Update:

In the past week, I have worked on designing the WorldBuilder class and the architecture of the project. The skeleton classes have been fleshed out more fully, included Javadoc and unit testing. Additionally, discussions were had in the Destination-Sol channel about how world-gen should work, in particular developing ideas about how mathematical properties of world-gen features should be manipulated.

Meeting Moments:

Points Discussed:
  • Balancing architecture planning vs. focusing on coding
  • How modules work in Destination: Sol
  • How world generated features will be represented after world-gen is complete
  • Plan to work on SolarSystemGenerators next week
 

IsaiahBlanks1

New Member
Weekly Update:

In the past week, I worked on setting up the SolarSystemGenerator abstract class so that it can handle generating all the aspects of a SolarSystem. I also did some work in WorldBuilder to develop the method for positioning SolarSystems in the world. So far, the SolarSystemGenerator initializes the correct FeatureGenerator classes and finds a position for its Maze classes.

Blog Post:

This week I have written a blog post about the first couple weeks of my project! You can find the post here.

Meeting Moments:

Points Discussed:
  • How the code will handle initializing instances of FeatureGenerator and SolarSystemGenerator classes
  • How we will randomize which SolarSystemGenerators are created
  • Plan to finish up SolarSystemGenerators next week
 
Last edited:

IsaiahBlanks1

New Member
Weekly Update:

In the past two weeks, I finished getting the SolarSystemGenerator class up and running, as well as getting the default SolarSystemGeneratorImpl set up to create a Solar System.

Last week I finished setting up methods to position every object in the SolarSystem (including Planets, Belts, Mazes, and the Sun). This week, a pretty hefty refactor of the way SolarSystemGenerator handles the radius and position of the SolarSystem was needed. Previously the objects in the SolarSystem (like Planets, Mazes, etc.) were built first, and then the SolarSystem was positioned (requiring you to move the objects with the system). Now the SolarSystem is first sized and placed, and then the objects within the system are placed in their positions.

A new class called Orbital was introduced to help keep track of where objects are being placed in the SolarSystem. Each orbital represents a 'ring' around the system in which one planet or belt might circle the system. Mazes will all reside in the last Orbital (as they don't revolve around the system but rather stay still, this special section contains more than one object).

Another refactor was done in the config class department, to split SysConfigs into SolarSystemConfigManager and BeltConfigManager. This should make code which uses these config classes easier to read.


Meeting Moments:

Points Discussed:
  • Moving on to PlanetGenerator for next week
  • Skipping creating method for selecting specific generators to use in the SolarSystem for now, so we have a useable system sooner
  • Cleaning up config classes
 

IsaiahBlanks1

New Member
Weekly Update:

In the past week, I began working on PlanetGenerators. These will allow modders to create custom types of Planets to generate in the world. So far, the PlanetGenerator class allows modders to set many of the properties of Planets, including size, orbit speed, config file, name, and more. Next week I will be moving on to modularizing how the game places objects on Planets, so custom objects can be created. During this week I also worked on getting the pull request for SolarSystemGenerators ready to be merged, which my mentors were very helpful with.


Meeting Moments:

Points Discussed:
  • Finishing the PlanetGenerators next week
  • After SolarSystemGenerator PR is merged, will be rebased onto another PR involving logging updates (and other git discussions)
  • Use of a magic number in method that finds position for SolarSystems (and what to do about it)
 

IsaiahBlanks1

New Member
Weekly Update:

In the past week, I finished my work on PlanetGenerators. I set up methods and classes that allow modders to change the placement of objects on the Planet (like clounds, groundTiles, decorations). I also modified the PlanetConfigs class, which loads the various PlanetConfig files available to the game from JSON. I made it so that a modder can import their own assets and config data. This allows for a wide range of possibilities for the look and feel of Planets.

Blog Post:
A new blog post is up! Here's a link: https://destinationsol.org/2021/07/23/gsoc-world-gen-in-action.html

Meeting Moments:

Points Discussed:
  • Working on MazeGenerators next week
  • Bug involving creating Polygons in tests (was fixed shortly after meeting)
  • Creating a tutorial for how to import custom assets and configs
 
Last edited:

IsaiahBlanks1

New Member
Weekly Update:

Posting this in the middle of the week, but I'll only include what was done before the last meeting. Last week, I began work on MazeGenerators, recreating the original implementation of Mazes in Destination: Sol, but using the new world-gen system. I also spent time working out some kinks with PlanetGenerators, including a but that caused the game to crash when placing turrets on planets.

Meeting Moments:

Points Discussed:
  • Where we are on project schedule (finishing up mazes next, then tutorial, then maze layout system)
  • Merging of Planets PR
  • What was done about turret bug (hardened code)
 

IsaiahBlanks1

New Member
Weekly Update:

A lot has happened in the past couple of weeks! In the week before this past week, I set up both MazeGenerators and BeltGenerators to be fully working. This brings the GSoC project to the point where it is a full refactor--the game now runs as it is supposed to using the new world generation system. I've also added in one new Maze type and one new Belt type to add some interest to the game world. This past week, I set up a tutorial for people to learn how to use the new world-gen system. You can find a link to the tutorial here: http://destinationsol.org/TutorialGalaxyGeneration/#/tutorial/. I have now started working on a system for modders to use custom maze layouts, as opposed to the default random layouts.

Meeting Moments:

Points Discussed:
  • Creating a final blog post as a work submission for next week
  • Hopefully getting to the backlog issue next week
  • If there is time, taking a look at the bug causing tests to fail with gradle
 
Top