Wednesday, December 5, 2018

Perlinia_10 New Engine, Inventory & Coins!

New Engine
It occurred to me that I was designing my engine as if the world was infinite, which it's not. The plan has been that each world has a limited size and that you can travel to other worlds, with this in mind I made the new engine around that idea and it's helped out immensely. There are still chunks of course since the player can't render infinitely, but now all chunk data is loaded in-advance so that chunks only need to render & not need to calculate what blocks to display. This new engine will also allow for some much more interesting & detailed generating



New Inventory UI & Equipping Weapons
The old UI didn't look bad but it didn't look great either. After some work, I managed to make it look a lot better. I even added the ability to see what your character looks like in the inventory! I've also been working on being able to equip weapons, although all it does right now it put the weapon on your back but it still looks cool!



Coins
I've also been working on implementing currency since of course, it's a big part of the game. Unlike traditional RPG's coins aren't broken into 100's but rather 1000's (1000 copper = 1 silver, etc). Here are the coin types right now:
  • Copper
  • Silver
  • Gold
  • Gem



So new terrain, a new inventory UI, the ability to put a sword on your back, and some coins! This RPG is starting to take shape!

Sincerely,
Blake Gillman

Thursday, November 29, 2018

Perlinia_9 Inventory, Equipment, Dialogue

The engine rewrite hasn't even been started! I just keep looking at those blank lines of code and thinking to my self 'How can I possibly make this faster?' But I still wanted to be productive so I continued work on gameplay.

First of all, obviously this isn't the final player model but since I still don't have one it'll have to do.

The character now starts off with basic 'clothes' (If you can call it that)


But there are a set of test equipment in front of them. An iron helmet, and leather armor, leggings, and shoes, which the player can pick up and equip:



The armor does indeed add to the player's total armor value so implementing enemies will be a lot faster.

I've also begun work on a dialogue system:



Right now as with the health bar & such it's all for show and doesn't do anything. I hope to have the dialogue system finished in the next update.

I'm currently not happy with the way the health & mana displays so I'll be playing around with that more. As for gameplay things are going good and I hope to keep progress this fast-pace!

Sincerely,
Blake Gillman

Sunday, November 25, 2018

Perlinia_8 Rewrite In Progress

I've been working hard on a new river system that generates much better than before. It also allows more interesting roads with different colored roads & bridges. I also worked on making rougher areas of the terrain.



However, that's as far as I'll be getting for right now because once again I find the engine is too slow. I'll be rewriting it for the 10th or so time in order to speed it up so it'll be awhile before I post again!

As a side note, I also began work on a house model but it'll have to wait until I finish rewriting the new engine:

Sincerely,
Blake Gillman

Monday, November 19, 2018

Perlinia_7 Biome Variety, Bridges, Networking & More

A lot has been accomplished in the last week so it's hard to know where to start.

First of all, biomes have variety now!




I'm attempting to make biomes more interesting by making so they're not the same in all areas, as you can see the transition between details of the biome isn't smooth right now (and likely won't be smooth for a while) but it's functional and a good first step toward generating more interesting terrain.

Second of all I've been working on the road system and I've added three new important features (and also changed the color):

1) Roads are no longer completely straight, they still don't curve but they're not straight. This helps make walking along them feel a bit less boring.



2) Roads make bridges when over water.



This was a bit more simple than I originally anticipated. Roads are generated with noise after terrain is generated. Water is also always at the same height everywhere in the world. This means that a roadmap that knows it's going to be below or inside of water is told to generate a couple of blocks above the water. As for the supports under the bridge they're generated with a simple idea: Every 10 blocks draw a support downward. Since it's 3D and blocks need to account for both the X and Z axis the operation for calculating this was simple:

if( (X + Z) / 2 % 10 == 0 )

Or simply put: If the average position of both the X and Z is a multiple of 10 then draw a support beam under the bridge.

3) Roads carve into certain areas



Why build a road on top of a hill when you could just go through it?

With terrain now having different details, a roadmap that can make bridges/carve, it's feeling a lot more natural. But it's time to step away from the graphics for a bit and move on to the fundamental gameplay.

The first thing's first: Networking. A game can't or at least not well be integrated into multiplayer after being made. This is why games like Just Cause 2 & 3's multiplayer mod are so stripped down and buggy. It's important that when a game developer is making a game that they know that they are making either singleplayer or multiplayer from the very beginning because it drastically changes the way you code the game.

So the basics of networking being implemented are essential. Right now I've managed to make so 2 players can connect to the same server and see each other spawn in. However this is far as it goes, things like tracking movement have not yet been implemented.




Right now they spawn inside of an empty test world with just a green floor that will be used for developing gameplay mechanics. I chose to do this separate from the terrain generation for now since I haven't yet implemented procedural cities, quests, NPC's, etc. and it would be better to create these features before attempting to generate their placement & data.

I've also worked more on graphic visuals. Ambient occlusion (the black outlines generated at the edges of blocks) has been adjusted. The edges of the screen created distance darkening which basically meant at the bottom and top of the screen if looking at blocks the screen would darken, and the left and right it would get lighter. This glitch is still present in the game but a lot less noticeable.



And finally, I've been working on the player's interface. Right now none of it does or means anything it's just there for looks.



Let me know what you guys think, I asked some of my friends who said it takes up too much of the screen but I'm failing to see how I can take up less of the screen. The player is going to have a lot of abilities and I want to make sure the icons are going to be big enough so that you can tell the difference between them clearly. As it is each icon is only 48x48 pixels so making them any smaller would remove a lot of detail.

As for what I'll be doing next is gameplay as I stated previously (and of course networking to make sure that gameplay works online). The order I'll be working on things is unknown but I want to begin main mechanics such as receiving/doing/completing quests, talking with NPC's, syncing movement over the network, picking up items (inventory), etc.

So that's all for this one! Hope to see you in the next.

Sincerely,
Blake Gillman

Tuesday, November 13, 2018

Perlinia_6 - Roads & Chunk Queues

With the engine running much more smoothly things have been feeling a lot better but there were still minor screen freezes when moving around as the world generated around the player, so I added a chunk queue. Originally the system would load chunks as the player moved but now instead it queues them and only loads a portion of them at a time that way the player's computer doesn't have to process as much and as a result, doesn't freeze when moving around.

I've also begun more extensive work into generating interesting & detailed terrain. Part of this was beginning work a roadmap:



Right now the roadmap doesn't have much variety and making it loop has been a bit of a challenge so for the moment it's actually a giant grid with straight intersecting points:



I've also changed the size of the player's test cube (the white cube) to more accurately depict what the player's collisions will look like in the end.

I plan on having the next update dedicated to more terrain visuals.

Sincerely,
Blake Gillman

P.S
This update is coming out pretty soon after the last update because I've been working on the game a lot more & I know the next update will take a lot longer to release because I plan on having a lot in it.

Saturday, November 10, 2018

Minimap, Better Rendering, First Prop - Update #5

Once again I've got a Perlinia update and it tops the last one.

I added a minimap to the game! Nothing too special but it helps make the game feel a bit less empty. I've also got things like rivers generating which should help to add more detail to the game.



As you can see the game's graphics have also significantly improved. I've adjusted the coloring of the blocks to no longer be vertex-based (Smooth) and instead be block-based (pixelated). This is because having smooth terrain would clash with the look the game was going for, and since all props & models use block-based coloring then why should the terrain be any different?


The game also features a new prop! It was made by my friend Phineas and had to be manually placed into the scene, but it looks cool! In the future, this will act as more than just eye candy but that's a secret for another day.



As you can see I've also been working on multiple biomes although right now the engine doesn't support having multiple biomes in the same world it will in the future.



That's all for this post, hope to see you in the next one!

Sincerely,
Blake Gillman

Tuesday, November 6, 2018

New Engine & New Landscape - Update #4

I had made lots of progress with the game's engine & terrain system and after running a test with a test player (A white cube), and it looked fantastic:

But the draw distance was too close and too laggy. The game would still freeze when the player loaded in new chunks and the player couldn't see further than about 200 blocks. This was not acceptable.

The reason the engine even ran as well as it did was that of me adding Multi-Threading support which I talked about in the previous post, however, there were still many problems the engine had since it wasn't originally built with multi-threading in mind. So I rewrote almost the entire engine (important scripts like ones containing math carried over since formulas are universal and didn't need to be rewritten), but as for calculating the position of blocks, what color's they should be, how to render them, etc. I rewrote entirely.

In previous versions of my game the water had been a block type, however, I've removed it and instead added water as being a universal transparent plane so that way I could support underwater areas, which even if you didn't go into still give the world a much more lively 3D feel which is worth sacrificing the extra RAM & Graphics that rendering such blocks takes up.

After rewriting the result was this:


The sky is likely to change in the future and become a solid color due to fog implementation but for now, it looks good. The engine is able to calculate chunks in small sections on separate threads now which means the game's FPS is now more determined by graphics than chunk processing & initial rendering. I do not know if this good FPS system will remain after infinite worlds are implemented again (Because since this is a rewrite previous things like floating islands, player controller, and infinite worlds still have to be redone).

But as far as I can tell this is about as optimized as you can get, which is great! I can finally get to making things look and feel good and stop worrying so much about the processing & graphics costs of those features.

Sincerely,
Blake Gillman