Wednesday, 31 August 2016

Reboot / Remake / Restart

Although the roguelike project was going well I had a few issues with some parts of the code, and the sheer size of the project was something I could see stretching away in front of me for years with no guarantee that people would actually want to play it when it's finished.

It's time to try something a little less ambitious.
I'm going full rogueLITE!

Using a lot of the code from the roguelike project, I started making a more limited game.
There will be a single character, combat will be more arcade like, there will still be a chance to upgrade and develop your character's stats, but they represent only a single class and have fixed equipment.

Introducing the Lady Grenadier.
I've got a fun character, an interesting setting and an exciting story lined up. It still utilizes my low poly style, but things are going to be a little more cartoony.

Game play involves mostly chucking bombs at the enemy.

Bombs away!
But there's also a lot of platforming, jumping from multiple levels is part of the game. And you can use energy collected from defeated enemies to power up for a melee attack too.

Charge!
The idea of this attack is that you have to make your attack in a line, you keep going until you stop, either by reaching a wall, or falling in a pit or hitting an enemy that won't die.

Both types of attack require some thought about how to deliver them. You can't just spam bombs, or you risk blowing yourself up. The charge attack is very powerful, but you can run over traps or end up in trouble if you don't plan your attack run well.

I know people in the roguelike community tend to look down on Roguelites, but I want to make a fun game, and it would be nice if people other than me wanted to play it. It would also be great if there was a realistic chance of me ever finishing it! :)

Here's a video of last week's progress:


I've added a few extra things since then, but I'm not ready to do another development diary yet so it will have to wait until the weekend.

Monday, 13 June 2016

Materials.

I'm currently working on the inventory and items system.
I've got a good idea of how it's going to work, and I've made a few test demos in blender so I know how it should fit together, but one area I had some trouble with is how to make the items more interesting.

I don't want to have just sword +1, necklace of AC +5 etc... I want items to feel like they are unique. So I'll be designing a few base item types and then having them generate some qualities.

[Real weapons have character!]


The first quality is status. An old broadsword, or a rusty helm. Or spoiled meat. These will be limited by item type, so you don't end up with rusty meat or rancid chain-mail. They add a modifier to elements of the item's stats, either a positive or a negative modifier.

The second quality is wear and tear. This is more dynamic since it can change, as you take or deal damage. This might not be seen in the item's name, but rather in a status bar or something. However, it could cause the item to lose some positive status qualities. A damaged sword would no longer be sharp for example. Really badly damaged items could pick up some negative status qualities, causing you to discard them or get them repaired. If your epic sword becomes bent, you might want to switch for a less impressive but more straight one.

The third quality is materials.


[exotic ore for special weapons]
Rather than use existing materials, like yew or oak, or bronze and steel, I've invented some new materials. This is a fantasy setting after all. I wouldn't expect to find tungsten or such there. Here are some examples:

Twisted-uylee-wood is like rattan or wicker. It is not tough or strong. It's the worst kind of wood to make weapons out of. In fact, it's not really a wood, but a kind of tough vine.

Beshe-wood is like yew. It's not that tough, but is very light and flexible. Not good for a staff, but excellent for a bow.

Akka-fur is actually short feathers from a feathered fire serpent. it has good padding potential, and good elemental resistance.

If you're making a stone axe, you could try tyule-stone. Like Basalt it is heavy and tough, but doesn't hold a sharp edge well. Or you could try Jolopian-stone, which is a bit like obsidian, or hardened jade. It has a very sharp edge, but is brittle, wearing out quickly.

For metals you can find everything from the light and soft ossyssian-galium which has some of the physical properties of aluminum to the non-conductive akkadite which is strong and insulating, protecting against elemental damage. Ossyssian is an adjective meaning flawed or impure or simply weak alloyed metal. Where as Cannise or Cannite is an adjective that means pure, or refined, or rather strong alloy. So that Cannise-akkadite is a stronger version of ossyssian-akkadite.

[Be-be-ivory] 
There are other materials too. Be-be-ivory which is from an pig/hippo/elephant-like animal. The Be-be offers other materials, such as the extremely tough leather be-be-hide. Other animals can give other materials. The Mocra, a domesticated magical giant spider breed supplies mocra-manashi-cloth, a silk like substance, as well as mocra-chittin, the best material for making light armor from. The rather more mundane Trotter is a horned hairless goat/pig hybrid which supplies meat, leather and horn for making bows. If you want a material which offers magical resistance you should try hunting the Gyium, a ferocious magical horned tiger. it can provide fur, leather and horn for making weapons, armor and shields which are resistant to magic.

These materials should make it fun to craft weapons and armor, as well as giving the player a meta game to play as they try to learn all the materials. Later on I may design a language generator which can generate new materials and adjectives to really randomize items.

There will be similar ingredients involved in crafting herbs or potions. A taru-taru is a sheep/lama like animal, large enough to be ridden by some mountain peoples. It's wool is a commonly traded material for clothes, but it's blood is prized also for a potion base.

[Kurgan! Bone armor for the win.]
 
The final quality for items will be magical or epic qualities. These will be applied as a suffix. An ancient mocra-manashi robe of hiding for example would give you much higher stealth abilities. Magic qualities will help to give an extra edge to the best treasures. A wicked hydrine-haldium axe of flaming death could be a top tier weapon, despite its mediocre material. Mixing high level magics with lower level materials and qualities can give a big range of unique items.

I may choose some more cryptic titles for magical qualities too. Instead of -of hiding I could use -of dark shadows, while -of flaming death could be replaced with -of the Rudde Akka-daemon.

I'll need to further develop the mythology to flesh out the names and make sure there's not too much repetition. I may spend some time further developing the language too, so that suffixes and even weapon names are described with the in-game language. In our own world there are lots of weapons which had a special name for a special shape, such as the khopesh or scimitar. I'd love to develop a world with that kind of depth. Maybe a procedurally generated language would be better adapted to the task. 

One thing this has helped with is brainstorming some new monsters. I can't wait to model and animate a ferocious Gyium or a huge wallowing Be-be. Even a wild trotter should provide some fun to design. And it also opens up the possibility of quests. People will always be looking for a rare material. Hunting a Rudde Akka Daemon could be a great mid level quest and the reward could be chosen to match the challenge.

Monday, 6 June 2016

NPC commands, map reveal and Inventory ideas

This week I did a whole bunch of work on commands, so the AI players can be better guided by the player. I've also added speech above the NPCs so they can respond to your commands and you can get additional info about what you're asking them to do.
For example if you ask them to walk, it says "Look out for secret doors and traps!" Which is what walking is for.

[You can also see the new doors]

Some other improvements:
If you push against an NPC (because of being stuck and wanting them to move out of the way) you will send a message to all the other NPCs to increase their distance from the player for a short time. This stops the situation where one NPC further down the line is blocking but is not too close to the player so doesn't know they need to move.

You can urge them to attack or follow you. This will set their follow distance and their engagement distance. You can also set this independently for each NPC.

You can ask them to wait behind. Again you can leave just one behind using AI behavior instead of commands.

You can tell them to hurry up, if they got lost. This will tell them to make a big effort with pathfinding (using more system resources for a time) so they can get back to you. Once they are back by your side they will go back to normal pathfinding.

Another area I've been working on is the map reveal.

[You can also see the new pits]
I'm using a ranged based algorithm which flood fills out from the player, stopping at closed doors. Monsters in an unexplored region of the map will usually be spawned in dormant state. If their tile becomes explored they will wake up.

If you open a door the interior of the room quickly becomes revealed and any monsters there will be alerted.

Some monsters will be awake even off screen and may come to join in if they hear combat.

Unexplored areas are very dark blue. You can kind of see the layout of unexplored rooms but not exactly. The image above has been lightened to help with seeing what's happening. Because my tiles are offset quads it's hard to have invisible areas right next to revealed areas. It looks strange. It's the biggest drawback I've found so far with the offset quad method.

The next area I'm working on, and this is something I keep putting off (notice how I'm writing a blog instead of doing it) is Inventory and items.

Here's a kind of mockup of what I'm planning:

[skeuomorphism]

I had planned to make multi tile items like in S.T.A.L.K.E.R, but that works best with mouse control. It's not so easy to navigate with just keyboard. SO all items are going to be single tile.

I've worked today on a shader to add a colored outline to items so they can be color coded. I can use that information to show weapon damage or item quality.

I think now I've settled on the single tile implementation it shouldn't be too hard to add items to the game. Anyway, I think I've explored every other possible area of working on the game and now I'm forced to get on with inventory management.

Monday, 30 May 2016

Doors!

An in depth video this week focusing on tilesets and doors.
I'm happy with how they are working right now so I'm going to move on to items and inventory.

You can see the video here if it doesn't display.


Wednesday, 25 May 2016

Tileset testing in game.

You can get a look at how the tileset looks in this short video Blog:

I'm working on lighting and tile visibility. I'm also about to start work on doors.

Saturday, 21 May 2016

More tiles

It's difficult to show the way tiles look in game with static images, so if you want to see a gif there's one here.

It's important that the different textures work well together, the Normal map, the diffuse texture and others have to bring out the 3d effect without overwhelming the viewer with too much detail.

Here's an example of a diffuse texture:
There's quite a bit of small scale detail, the little plants and things, but the large scale contrast is quite subdued. There's no very dark areas and no very light areas.

This is the most difficult thing to get right. As I talked about last year, it's no good having an amazing tile set if you can't see any of the characters or other details.

Here's the floor so far:
This is just one variation of floor tile. The final version would have several different tiles to choose from when generating the level so it doesn't repeat so much.

The look I'm aiming for is a kind of tabletop roleplaying tileset you would use with miniatures :



It doesn't have to be super detailed with loads of spikes and wooden beams and other things. The aim of the tileset is just to provide a background for the adventure. If it is too detailed then you can't see the characters properly.




Thursday, 19 May 2016

Tiles in game.

30 minutes later +/- some thinking time and the time it took to write the blog I've got some basic tiles in game for testing.





The first thing I noticed about the tiles in game was that the initial texture was too high contrast. The characters and monster disappeared in to the background.
So I lightened them up. I also added a quick bit of code to randomly rotate them by multiples of 90 degrees.

The final version would include more variants of the tiles, as well as some that can be placed around the edge of a pit.
Adding the gravel was pretty painless, and later I can add bloodstains, moss and other stuff to add a bit more interest to the levels.

Here's what the tiles look like up close as a group:
This was before reducing the diffuse contrast. It looks great, but it is too busy. It becomes difficult to play the game. Not every tile would be cracked in the finished version though and not every one would have gravel or other details. So I have to strike a balance between too busy and too boring.