Closed Alpha Status

Before I talk about what I worked on the last 2 weeks I wanted to make a quick note about the closed alpha. The closed alpha will only be available to close family and friends and the first group of players who get access will likely be less than 20 people. I’ll likely be giving out the first batch of keys on August 14th but that date has been pushed back twice already so its likely it could be moved to the end of August.

Also this week is going to be more of a show in tell as far as what I worked on, I pretty much forgot about the blog post completely until 4pm on Friday so I didn’t have much time to write, but most of the stuff I did the last 2 weeks is not very complicated, just lots of cool features.

Transport Tubes

Transport tubes will play a critical role in Boppio, they will allow the player to transport items between buildings. These tubes are quite complicated to generate because the buildings can be at different heights and the tubes need to be able to start and end at different heights. After trying for hours to come up with a complicated math function to generate the curve I decided to just do a simple greedy algorithm. Basically start with two rays: one at each end of the pipe. A ray differs from a Vector3 in Unity in the way that a ray has both an origin and direction. This means you can move a ray and know where it is and what direction is is pointing. Basically if you only move the ray in the direction its pointing, and you gradually change the direction the ray is pointing to point towards the origin of the other ray, they will find each other. The amount the ray can change direction per iteration is the “stiffness” coefficient (I invert this coefficient by doing 1/stiffness so that the name is more appropriate to what it actually does). Increasing the stiffness makes the pipe more curvey and making the stiffness lower makes the pipe more direct.

Procedurally generated tube mesh, either point can be moved and the mesh will be updated in real time.

So now you may be wondering, just because you generate a line that doesn’t mean you can just convert that to a mesh, how did you make the mesh? Well, once you have the line its really simple. You just take the cross-product of the direction of the ray at each point with the up vector. This vector represents a point on the cylinder, you can take this vector, normalize it and then multiply it by a magnitude to make the pipe skinny or fat. Making the rest of the points is quite simple as well, just rotate this vector based on the cylindrical resolution of the pipe. If you want the pipe to have 8 “sides” then you just rotate this vector by 360°/8 for each iteration.

The UV maps for this pipe are much more complicated and are dependent on how you want the pipe to look. I was going for a very specific look for the pipes so I came up with some wonky custom stuff that I think would be more confusing than helpful to explain, but here is what the pipe looks like:

This is a preview of what the transport tube will look like in game. Items will fly through the tubes in order to move items between buildings.

After 2 days of messing around with these tubes I finally got the basic functionality working:

Placing buildings in game now will generate transport tubes in real time

For right now you can’t change which pipes get connected to what buildings, but later in the development cycle there will be a tool that allows you to choose how pipes are configured. This may be an important concept in the game to make sure you aren’t wasting hubs (or other buildings in fact).

Building Improvements

After spending a ton of time working on pipes for hubs and buildings, it was finally time to do some upgrades to a lot of the buildings:

In preparation for the closed alpha a lot of the buildings have gotten substantial improvements, including new sound effects.

Improving the buildings and the early game is probably what I spent the majority of my time on this week but the extra effort here was worth it especially with the closed alpha coming soon.

Terrain Trees

I have a lot of experience with customizing terrain trees from a previous project so I thought it would be plenty easy to throw trees into the game. I just threw an extra terrain generation layer on top of my existing terrain generation engine and it came out really nicely after quite a bit of tweaking:

Trees are now pretty evenly distributed in the environment

Trees can also be cut down to obtain wood:

Holding right-click will allow players to cut down trees to obtain wood, which can be used for crafting or fuel.

Tooltips

I knew that tooltips were going to be important for new players. Anything you can interact with should most definitely have a tooltip especially in early development because there is no tutorial so there is really no way to figure out what things are without tooltips.

Tooltips for viewing resources on the terrain
Tooltips for trees tell you how to cut them down
Inventory tooltips tell you what items you need to build buildings and what items you have in your inventory.

Conclusion

Its been an extremely busy 2 weeks for me but its looking like I’m finally on track to get the closed alpha started on the 18th of August. I made a ton of progress these last 2 weeks and I’m really excited to be able to show the game to people. Thanks for reading,

– John