Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411428 Posts in 69363 Topics- by 58416 Members - Latest Member: JamesAGreen

April 19, 2024, 01:29:36 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsGastrocove - a food production pipeline sim on a tropical island
Pages: [1] 2 3
Print
Author Topic: Gastrocove - a food production pipeline sim on a tropical island  (Read 4058 times)
morphinegames
Level 0
**


View Profile WWW
« on: March 23, 2018, 01:32:10 PM »

Hi guys! I am new here, but I wanted to start a devlog for our upcoming simulation game Gastrocove.

Actual work started on this game in February of this year, but design work began over Christmas.

I'm a lone indie dev that does this as a hobby/side project and I have a full time career as a computer programmer for a company I started about 12 years ago. Programming is my passion, but I also love music and graphic design. What industry other than game dev can hit all those little pleasure buttons??

Anyways, Gastrocove is a simulation game that takes place on an island with the goal being to optimize an assembly line of food production. The following is a screenshot of the current title screen. The game just went into Alpha today! All core functionality is in and now it's just a matter of fleshing out the island and fixing bugs.

The goal is to submit this into the https://thegdwc.com/ competition by September 30th and then possibly follow up with a Steam release early next year.

I have been documenting the process of creating this game over the past couple of months and I am going to share a lot of the early work in this dev blog that leads up to the game as it is today. The next few posts will be very ugly placeholder graphics etc. but I think it will give a good insight into HOW MUCH a game can change from inception to release.

« Last Edit: May 16, 2018, 08:28:08 AM by morphinegames » Logged
morphinegames
Level 0
**


View Profile WWW
« Reply #1 on: March 23, 2018, 01:41:09 PM »

Originally Gastrocove was going to be an FPS! It was also originally called "Undead Foods LLC".

These screenshots shows basic block placement functionality being developed. There were two types of blocks that you could place. Cubes and Angles. Angles so that you could walk up stuff that you built.

The original vision for the game went something like "Infinifactory on an island"

You can also see the early workings of a conveyor belt. Gravity didn't even work on the blocks that you placed!

More in the "saga" tomorrow Smiley

Logged
morphinegames
Level 0
**


View Profile WWW
« Reply #2 on: March 24, 2018, 08:15:01 AM »

So like I mentioned in the previous post, this game was originally going to be about harvesting zombies on an island to create zombie meat products for a civilization that had developed a taste for zombie meat. Hence the name "Undead Foods LLC".

In the following picture you can see some of the very earliest AI. The zombie is the green block. Basically the AI went like this, go forward until you can't. Then turn right and try moving if you can't turn left and try moving, if you can't turn around and go forward (repeat)



This game no longer has zombies, but my original vision hasn't changed. The vision in my head that has always been my driving force is that of a big island, the camera is looking down on the whole thing and there is a massive assembly line of products being created and delivered to the ports on the edges of the island.

In order to make that a reality, I knew that I would have to create a very efficient simulation system that was capable of handling 100,000 distinct objects. The 100,000 number was originally 10,000 and then grew to 25,000 and ended at 100,000. In the next picture, you can see some of the early performance testing that I was doing



This was a series of blocks being simulated by the engine, you can see that it takes like 4000ms in order to simulate 20k blocks. That was a little bit depressing to start, but I am a computer programmer first and a game designer second so I knew that this wouldn't be too difficult to handle. The first thing I would have to do is decouple the simulation from the main Unity thread and run it asynchronously.

The first step was to remove all non thread safe Unity code from the simulation, that meant removing Quaternion (not thread safe even though it's struct) and relying purely on Vector3Ints. This was actually pretty easy since the game was already designed to be block based and everything operates on an integer grid. Everything in the game is unit size 1 and this simplifies logic a lot.

Here is an image of some of the performance results that I charged as I went



And here is an image of some of the unit tests that I had setup



Next time, I will go into some of the failed design attempts at making fun gameplay and some early passes at the island.

« Last Edit: March 24, 2018, 08:32:02 AM by morphinegames » Logged
morphinegames
Level 0
**


View Profile WWW
« Reply #3 on: March 25, 2018, 09:12:44 AM »

Hello again!

So like I previously mentioned, we were originally inspired to be an "Infinifactory on a tropical island". I didn't want the game to be a clone but rather just inspired by. One of the things that Infinifactory has is Conduit which is like cable connections between blocks. I thought, this is great, we can add power cable requirements for every block. Every block could be connected to a power source.



 Like a lot of features - this expanded into power being directional as well, since belts can go forward or backwards, that should be determined by the direction of the power. The next thought I had was - well how do we "configure" the direction of the power - the answer to that was another block an inverter block. So if power goes through an inverter block, it changes direction. As you can see this is absolutely a feature explosion from a POORLY thought out gameplay mechanic. The more I thought about it - WHY THE HELL would you want to have to power every single block, you are essentialy taking up 2 spaces for every block you want to have, one for its power source and one for the block itself.

The game has since removed any trace of that - blocks are... "solar" powered now Smiley e.g. they have no power requirements. They only have a per cycle cost that is based upon the type of block it is.

This is why iteration is SO important, because while playing through this I was like, this is really cool that i built this awesome auto configuring power system (the power blocks would automatically change what ports came off them based on the neighbor blocks and stuff) but it just wasn't realistic at scale.

Here is another shot of the powered belts being manipulated on one of the first iterations of the island



Next time, we will talk about the transition from FPS to a more traditional top down perspective.



Logged
breakfastbat
Level 2
**



View Profile
« Reply #4 on: March 25, 2018, 09:14:44 PM »

Uh oh I'm a sucker for production facility building management games and I'm loving the top-down artwork that you're inexplicably making me wait for lmao
Logged

♫ December, ♫
♫ December. ♫
Ninety
Level 1
*


turnip boy


View Profile
« Reply #5 on: March 25, 2018, 09:37:37 PM »

Digging it so far!
Logged

morphinegames
Level 0
**


View Profile WWW
« Reply #6 on: March 26, 2018, 06:27:38 AM »

Hey thanks for the feedback so far guys!

So continuing on where I left off, the elephant in the room, first person. I had two conflicting visions in my head, one was this tropical island that you can explore and setup a massive production line and first person perspective. I am a sucker for first person puzzle games like the witness and infinifactory and I wanted to leave my mark on this genre, but the more I play tested the more I realized that this just wasn't going to work. There were too many conflicting things going on

1. My overarching vision was being able to see the ENTIRE production line on the island at one time, seeing all these belts and containers and stuff getting transported to the ports. In first person this would mean you would have to have some big mountain top to go up to OR having the ability to pull out of FPS and go into a RTS type camera or something. Neither of which seemed appealing, I don't like complicated controls and having to switch out to a 3rd person camera means the player needs to learn two control schemes now which just seemed really stupid. Or we don't allow the player to be able to see the entire island's production line and that was my core vision.

2. What about maintenance - let's say that we discover a new material, e.g. bananas and that means we want to redo a lot of our supply chains to integrate bananas, well in FPS I now have to WALK(or run) all over the island picking up blocks and moving them etc. It just seemed like that would piss off any sim game players. Infinifactory works because it's constrainted to a single factory and it's not like you are "grounded" you have a more free motion camera.

3. Maintenance aside, just the sheer act of building an assembly line takes longer in first person because you can't just click click click along the ground to place stuff.

It was the right move, moving to a 3rd person camera was one of the big decisions that I made early on that changed everything.



Here you can see one of the early prototypes, I created some UI elements and put the toolbar in the middle (bottom). The icons are obviously placeholder as is the crazy looking kid. Some of these elements are still in the game and others have been removed completely or modified.

Next time - we'll start discussing mechanics and gameplay and how keeping things simple but with depth is probably the hardest challenge in game development.


Logged
breakfastbat
Level 2
**



View Profile
« Reply #7 on: March 26, 2018, 07:37:26 AM »

I don't know how extensive of a game you have planned here but it literally looks like it'd be right up my alley

Also re: multiple camera perspectives, you could always look at Natural Selection 2 for ideas. I've seen a few sim games (like Sim Theme Park) that allow you to go into first person to walk around as a kind of bonus feature. To be honest I think sticking 100% to top-down is your best bet, but just I just felt like mentioning that there have been instances of intuitive multiple camera perspectives before.
Logged

♫ December, ♫
♫ December. ♫
morphinegames
Level 0
**


View Profile WWW
« Reply #8 on: March 26, 2018, 07:43:12 AM »

Well the initial plan is to submit it to https://thegdwc.com/ for this year's competition and then later this year/early next year release to Steam. I have a great day job as a programmer working from home, but that also means I get to spend all the time I want on this game since I own the company.

Scope wise, there are going to be roughly 100-200 food products. I'll be explaining features in a later post, but I want the game to be accessible (dirty word) but with a lot of depth. I believe that there will be between 10-20 hours of game play required to see "the end goal" but optimization is going to be what keeps players coming back. Optimizing the production pipeline and reducing the time it takes to reach the goal $ is where people will start competing with themselves i think.
Logged
morphinegames
Level 0
**


View Profile WWW
« Reply #9 on: March 27, 2018, 06:01:43 AM »

Today I wanted to discuss complexity and depth with respect to Gastrocove although a lot of this applies to game development in general.

Like I say in every post, I always envisioned Gastrocove as this massive island with all of these assembly lines transporting food from around the island out to ports that are scattered around the island.

I think that most of the best (game) ideas out there can be summarized in a single sentence. The goal in Gastrocove is immediately apparent, you start on the coast and there are palm trees producing coconuts. The tutorial tells you to get the products to the orange ports using the tools the game provides you.



Like most game developers, I am not immune to feature creep. When I first started thinking about Gastrocove, I thought about all of these different tools we could have, belts and teleporters and lifters and pushers. I thought about having AI (humans on the island) that could be given jobs by placing a job block down and a lot of other crazy stuff. However, despite all my grand ideas I was able to reign them in to just 5 balanced tools with those tools providing plenty of freedom for creativity in solving problems.

I think something that most game developers have to ask about the project that they are working on is - "what is the core gameplay loop here?". If you are deep into development and you can't answer that question, something is wrong.

In Gastrocove the main gameplay loop goes something like this

1. Place belts (and other tools) to transport products from their source (e.g. coconut spawners) to the orange dock blocks on the coast

2. Earn money from delivering products to the ports

3. Use that earned money to be able to build longer assembly lines deeper onto the island where the more expensive products grow

4. Repeat until you reach the game's arbitrary goal of becoming a billionaire.

Even though the core gameplay loop is very simple, there is a lot of depth with just those mechanics. For example, one of the blocks - the Combiner, takes as input products and spits out a combined product. For example, coconuts, pineapples, and rum -> pina colada.

Combiners can also have their temperature set to either cold, none/room, hot. So for example, a coconut product going into a hot combiner yields toasted coconut



In addition, every tool (except for containers) has a cost associated with it every cycle. Belts are the cheapest and cost $1 per cycle. There is no cost to place blocks, but you pay every single cycle. The combiner has a cost (only when combining not every cycle) of $5 currently, but if you set the temperature to hot or cold, that goes up to $15. However, certain products produced by hot or cold combiners are worth more.

You can see right away how explosive depth can come out of a few very simple tools.

Next time I'll start going into each tool in more detail starting with the Container.
Logged
morphinegames
Level 0
**


View Profile WWW
« Reply #10 on: March 27, 2018, 07:42:48 AM »

Just a little pipeline composed of Teleporters, Containers, Combiners, and Belts

Logged
morphinegames
Level 0
**


View Profile WWW
« Reply #11 on: March 27, 2018, 09:14:38 AM »

Plants aren't the only source of food products - the island also has animal life on it.

You cannot kill the animals however, but this will fit into the "lore" of the island Smiley

Logged
morphinegames
Level 0
**


View Profile WWW
« Reply #12 on: March 27, 2018, 12:49:37 PM »

Sunset on the island Smiley

Logged
morphinegames
Level 0
**


View Profile WWW
« Reply #13 on: March 28, 2018, 05:55:03 AM »

Hey guys!

OK so I was supposed to start discussing the 5 main tools in Gastrocove today, but I think I need to frame this discussion first with the core features of Gastrocove. So maybe tools will start tomorrow.

The Gastrocove Pitch
Gastrocove is a simulation game where you place blocks down on an island in order to transport food products to the ports which are located on the coast. Doing this earns money so that you can create larger transport lines and gather products deeper into the island.

Gastrocove Features
I wanted to make sure that the feature set in Gastrocove remained razor sharp. I did not want any half baked features thrown in because they sounded good on paper. I have been making software for a very long time and "feature creep" is not something exclusive to the game industry. My company sells a few main software applications and if you spend enough time in them you will see the features that are honed to perfection (the ones that MOST people use) and the ones that are functional but very basic - the ones that sounded good but were never fully fleshed out.

The core feature in Gastrocove is getting food products to the ports along the coast.



In the screenshot above you can see a spawner which is the translucent block near the palm tree that is producing coconuts. The coconuts will drop from gravity and are landing on a belt which we setup pushing them into a combiner tool which bundles them up into containers and pushes them towards the orange port which is the goal point.

The main game loop in Gastrocove is placing blocks and letting the interaction between them bring food products to the orange ports.

Complexity and Iteration

OK with the game goal clearly stated, let's talk about the way that I have expanded upon that concept to flesh out the game.

Containers
All food products must be in a container before they can be delivered to a port. Combiners are the tools which take a food product and place it into a container. In the picture above, the combiner is at the corner of the assembly line.

Food Product Spoiling
Following along the lines of containers, food products spoil and the rate varies. For example coconuts will spoil (and disappear) after 10 cycles. In order to prevent spoilage, you have to get the food into a container.

Recipes
Recipes are food products that are formed by taking 2 or 3 food products and sending them into the combiner at the same time. For example, pineapples + coconuts + rum -> pina colada. Combiners can take in either the raw product (not in a container) or the product in a container when making recipes so you don't have to JUST send in raw goods into a combiner.

Aging
Food products can be aged inside containers, for example grape juice will turn into wine if the container that it is in ages a certain # of cycles before being delivered to the port. This creates a situation where you can create a longer production pipeline to delay delivery in order to earn more money.

Temperature
The combiner in addition to having 3 input ports also has a temperature control on the top (you right click to toggle temperature). There are 3 temperatures, Cold, Room/Normal, and Hot. Changing the temperature can change the product produced when combining. For example, Coconut + Hot Combiner = Toasted Coconut.

Distance
The best products grow further into the island. If you think of the island as a circle, the very center will have the best ingredients but will also require the most blocks to get them out. A big part of the strategy in Gastrocove is determining which products to transport to which spots on the island to maximize profits. For example if a high ticket item requires strawberries and chocolate and strawberries grow in the top left of the island and cocoa bean grows in the bottom right and goat milk is only available in the center, what is the most efficient path to get those products brought together, combined, and delivered to the port?

Block Cost
Every block except for the container has a cost associated with it. For example, the belt costs $1 for every cycle and the combiner costs $5 per input only when combining. There is no up front cost, only a recurring cost. Consider these blocks as a service (BaaS) Smiley

Spawners/Animals
Raw products (e.g. Coconuts) come out of spawners. Most spawners are just attached to something in nature like a tree or a garden, but we also have moving spawners in the form of animals. Animals such as goats, chickens and ducks will wander within a  set bounds and occasionally drop food products (e.g. Goats drop goat milk). The island is pure vegetarian (as am I) so no killing of animals!!



OK guys, well that's all for now. Tomorrow I will start talking about each block in a little bit more detail.

« Last Edit: March 28, 2018, 06:09:20 AM by morphinegames » Logged
a_a
Level 0
*


View Profile WWW
« Reply #14 on: March 28, 2018, 06:54:04 AM »

I'm liking the concept and the visual style of this game. I also like the idea of slowly releasing progress archives over time. Not sure if this is done often on these boards, but I plan to do that when I'm at a comfortable stage of dev for my own game. Looking forward to seeing the finished product!
Logged
morphinegames
Level 0
**


View Profile WWW
« Reply #15 on: March 28, 2018, 09:12:51 AM »

Hey thanks for the nice comment. I just take a few screenshots of whatever I'm working on every day and have them all in a folder for the game. I had planned that once I got to Alpha (which to me means feature complete just needs more content) that I would start the social aspect - TIG, Twitter, Screenshot Saturday, etc. I hit that last Friday and here I am. My back log of progress pics has almost caught up with where I am now with development though so pretty soon it will be new progress

Thanks again for commenting!
Logged
morphinegames
Level 0
**


View Profile WWW
« Reply #16 on: March 28, 2018, 06:11:22 PM »

Just tweaking some post processing to sharpen the image and give really crisp lines also added some higher contrast in the shadow areas. In addition, added some refraction/reflection to the ocean to give it a more tropical feel.



Not entirely visible in the screenshot is that the system has gone from having around 25 different shaders for the different blocks and terrain to using only 3 main shaders that are all vertex colored. I wrote a conversion script today to convert all of the models into vertex colored meshes and created 3 different shaders to cover my use cases - one for standard vertex color (solids), another for vertex color + transparency, and a final for vertex color that is emissive. This has resulted in significantly fewer draw calls than before and a lot more batching potential as the island grows.

Good night! More tomorrow.

Logged
morphinegames
Level 0
**


View Profile WWW
« Reply #17 on: March 29, 2018, 05:07:03 AM »

Hello again!

So today I wanted to talk about the first of our tools/blocks - the Container.



The most important use of the container is for the safe packaging of food products. A food product with a spoil modifier needs to be placed in a container before it spoils and disappears. The job of packaging a food product into a container is handled by the Combiner which we will talk about later.



Containers also serve as general purpose blocks. For example in the image above, you can see that a path has been made using Containers as opposed to belts. Every belt costs $1 per cycle, but containers are free. Since belts are able to push other blocks, you can save money by building your assembly lines with containers in addition to belts.

Another important property of Containers is that they are "magnetic". They can hold other blocks in the air for some advanced scenarios for example when you need to elevate your assembly line in order to get past a natural barrier such as a rock wall for lifting precious products out of valleys and wells.



Finally containers can also be used in order to fence in animals in order to make a more predictable drop area for animal products such as goat milk and chicken eggs.



Next time, we will talk about the workhorse of Gastrocove, the Belt!

Logged
morphinegames
Level 0
**


View Profile WWW
« Reply #18 on: March 29, 2018, 06:31:45 AM »

Do not try at home!

Logged
morphinegames
Level 0
**


View Profile WWW
« Reply #19 on: March 30, 2018, 05:34:01 AM »

Hi guys. There won't be an update today. I'm super deep into performance optimizations and have to stay focused on this. Will send progress pics tomorrow morning if I solve the issues Wink
Logged
Pages: [1] 2 3
Print
Jump to:  

Theme orange-lt created by panic