Quickie: Some benchmarking

Quickie: Some benchmarking

So just before sleep, decided to do a quick test to see how far I could push the new terrain system.

And well, very far.

The new system can handle a grid of 96 * 96 without any issue. That’s just under 10000 tiles. Of course, them using the same texture and all made it far easier. But still, that’s pretty badass.

jesustenk

Will run more benchmarks over the weekend, but this is very promising.

Dev Update #20: All Quiet on the Eastern Front

Dev Update #20: All Quiet on the Eastern Front

Hello folks!

The recent silence isn’t due to a lack of work being done!

Right now, I’m working on refactoring the terrain system to get rid of some old issues that could cause potential trouble in the future. And am making a better model of the mesh, so that the different aspects of it can be modified better, and the separation of concerns can better exist.

This will also make it easier to add more modifications to the water tiles in the near future, as well as better handling for decorations and other potential objects.

It’s better to do it now and lay a good groundwork, while it’s still early, than later on when it is much more annoying to change.

Plus I’ve been pretty happy with the feedback so far, so it was the perfect time to refactor thing.

That doesn’t mean there will be no new demo this weekend!

There will be. But the details are still under wraps! So stay tuned!

-Gus

Dev Update #16: Improving control!

Dev Update #16: Improving control!

Heyo folks!

One of the highly requested feedback from our terrain demo was the ability to place several tiles/decoration at once.

So, I did it. Delegated the selection handling to a separate class, so I can do more awesome things with the selection options, and it worked flawlessly right off the bat.

Here you can see me building my course with multiple tiles at once:

terrainTool

And then adding multiple trees in one go, and increasing their amount as well:

decorationTool

For the height, it will be tricky. Maybe for that, I’ll just make different size brushes and use them. I’ll give it a test tomorrow, and see how it goes.

This weekend there’ll be a new demo with the new terrain editing tools, money, and water.

Oh! One thing to note is that the game will allow you to build things even if you have no money. This is something I had to think about as there were really three possibilities for area placement:

-Cancel placement if you don’t have enough money

-Place as many as your money will allow

-Place everything, and put you in the red if need be

I decided to go with the third option, so that you will have to be careful about how you place your terrain, and make the decision to go into the red if you want. (Be careful to not drown in debt!)

That’s it for today’s update! Please do let us know if you have any comments or feedback!

-Gus

Terrain Demo available!

Terrain Demo available!

Hello folks!

I’ve packaged the current version of the game into a nice terrain demo. It allows you to place tees and corresponding holes, change the tiles in the landscape, as well as edit the height of the terrain.

demoHole

Controls:
-Mouse click does most things, mouse right click cancels actions and returns menu
-WASD and arrow keys pan the camera
-Mouse wheel and Q E zoom in and zoom out
-Holding mouse wheel and moving the mouse will rotate the camera

So you can download it here!

Give it a try, and comment anything you found interesting/annoying/awesome!

(Also, take screenshots!)

Cheers!

Dev Update #12: Chunk Terrain is Connected

Dev Update #12: Chunk Terrain is Connected

Hey folks!

Today’s update will be a short one, but it is a good one: I’ve finished replacing the existing terrain system with the newer chunkier one!

implementedTerrain

And took the time to begin redoing other hastily designed systems for more solid ones, improving performance and maintenance as well. By the weekend, I’ll have it back to full functionality with improvements. And a new demo for playing around with the terrain!

Stay tuned!

Quickie: Going Chunky

Quickie: Going Chunky

Hey folks,

Today’s update will be a quick one, as the task is still underway.

I decided to do some test to check the performance of the current system if we use larger terrain chunks. So far, all testing had been done on a 16×16 grid, and performance was fine.

So I decided to up the ante to 32 x 32, and the performance was bad…

bad

There was a very notable dip below 60fps, and that’s not good. Not to mention this was just a barren terrain, and that is bad. I’m sure there could be some optimization done, but it still isn’t good enough.

So I decided to redo the tile system again (third time is the charm!), this way separating the terrain into chunks of 16×16 tiles, all contained inside a single mesh. (Chunks can be made up to near 64×64, due to Unity limitations regarding vertices in a mesh). As a test, I spawned 3 chunks of 32×64, and placed it all on the scene. This is roughly 6000 tiles on display, spread across 3 large meshes.

This is the result:

good

As you can see, the performance stayed at 70fps range, render thread was cut by 75%, cpu remained 4ms faster, much smaller number of shadow casters, batches, and a vastly greater number of verts and tris.

So I’ll need some time to adjusting the current system to match this. The generation itself is working fine, as is the UV mapping. But I’ll need to rework the shot system since it’s all under one big mesh collider. Some things will be vastly simplified, though. And the game will run better for it!

Stay tuned for more!

Dev Update #11: Procedural Tree Placement!

Dev Update #11: Procedural Tree Placement!

Hello folks!

Today’s update is an awesome one.

If you’ve been following us so far, you’ve noticed that all our tree placement looks rather… Mechanical. One tree per tile. That’s just not how nature intended. We should do something about it.

And we did. Look at this barren course:

courseBarren

It needs trees.

So we give it trees:

courseBetter

Wow look at that! Beautiful procedurally placed trees, make the course look much prettier and breaks the monotony of single placed trees! Hurray!

But how?

Well with the new system! It will attempt to add a tree to a desired tile. If there’s already a tree, it simply adds to it, and jumbles up their positioning. A maximum of 4 trees can be added to any tile. Here’s the feature in action:

treeMaker

As a bonus, if you’ve reached the limit of 4 trees, and you try to place another one, it will simply randomize the positioning of the trees. This way you can keep playing around with the tile until the RNG gods smile upon you!

Next is ensuring the trees stay in location when you modify the terrain!

Til next time!

Dev Update #10: Base Shot Generation is Ok!

Dev Update #10: Base Shot Generation is Ok!

Heyo folks!

Finally fixed the base shot generation. Since it’s simply a guideline, it doesn’t really care about the sloping of the course: all it cares about is that there’s no direct obstacle in front of the shot! Technically, this is already an upgrade if compared to SimGolf since in SimGolf there were many instances where it would attempt to mark the course by going through trees or rocks!

Below you can see the course path being automatically edited to account for removal of valid tiles:

baseShot

That pretty much covers the basic shot generation. Great success!

I’ve already implemented utility functions for calculating the usefulness of aiming at a certain tile. With this update to the basic shot generation, I can move forward on finalizing the spawning of certain objects when painting the terrain (ie: trees) and create a basic demo for testing the terrain building. If you’re interested in trying it out, give me a shout!

Stay tuned for the next update!

Quirk #2: Stupid isn’t good either

Quirk #2: Stupid isn’t good either

For today’s Quirk, it’s an attempt to fix the greed issue on the base shot function. I added one simply look ahead step to ensure that the current maximum has at least one option going forward, so that the function doesn’t settle on a tile with no good moves.

It worked, to an extent. As you can see below:

greedisbetter

So while it does avoid certain obstacles, it ends up taking too many strokes to do so. Issue is also with the obstacle detection: if the line of a stroke so much as brush through a tree tile, for example, that stroke is completely discarded in favor of something else. I’ll add now a function to analyze the angle between the potential stroke and the center of the hazard, and allow it to pass through if the angle is large enough.

With that in place, in the example above, it could easily reduce 2 strokes off the base shot, making it more acceptable. (This is a Par 4 hole based on distance).

Here’s hoping that the third time is the charm!