GSoC Week 1: Blocks, flags, and a simple dirt world
Posted on May 23rd, 2018
Summer break has begun, and with it, Google Summer of Code! I'm fortunate to be working on Terasology creating a new capture the flag gamemode in the module Light and Shadow.
For those learning to learn more about the project in general and check out the estimated timeline for the project, you can check out the proposal here: https://docs.google.com/document/d/1jCgZtg78jGBTu3KNzxFbrDIJ0beEWK-dzr-53P_JN5o/edit?usp=sharing
This week has been dedicated to learning the feel of the code and making sure I can make the first steps to making my whole proposal come to life. For Week 1, this has meant making sure I can cover the bases. I've worked this week on creating a simple world to use as a sandbox for building up the rest of the gameplay.
This included creating a way to generate both bases (for now a simple 5x5 stone structure) and place a red flag and black flag on either side.
Stealthily approaching the red base
Two bases face each other in a standoff
A lot of figuring things out has just been trying to decode how all of the various systems work together (How does a generator work with a rasterizer? What can I get components to do?). There were issues along the way with bases being cut off while rasterized, or just appearing everywhere. I've also been getting used to all the conventions to follow to get my workflow down, such as making sure that my code is stylistically correct and creating javadocs along the way.
Overall, though, I got done what I was looking to complete this week:
- Created a new world generator that creates a simple, flat world off of which I can build
- Created the elements needed to spawn a the bases and flags within the world (Base.java, BaseProvider, BaseRasterizer, and BaseFacet) that hold the code needed to understand what a base is and place it within the world at a given set of coordinates on world generation.
- Created logic to allow the flag to be picked up by pressing `E`, or by hitting it once
- Created prefabs for both flags and applied the LASTeam component so each can be identified as red or black, respectively
You can check out this week's work at https://github.com/Terasology/LightAndShadow/pull/64 and https://github.com/Terasology/LightAndShadowResources/pull/23, respectively.
Right now the game isn't much to look at, but there's progress there. But there's still a core problem with the gameplay--right now I can pick up and run around with two flags! It's not really a game of capture the flag at this point, yet.
That's why next week I'm hoping to focus on the faction code, allowing players to join a team and having their team affiliation affect things (like whether they're able to pick up a given flag). Things to be determined include how players can pick their team, and how to best regulate what people can and can't do, depending on their team affiliation. Hopefully these are things we can brainstorm about in tomorrow's meeting!