Update #70 - Textures, Pathfinding, & Interfaces

Merry Christmas and Happy New Year! It’s the last update of 2018, and the seventieth at that. Let’s start with the minor changes:

  • Merchantry: Moved render-oriented variables from RenderObject up to WorldObject.

  • Merchantry: Objects can now attach to each other.

  • Merchantry: Added the Calendar class.

  • Merchantry: Added a UI for transitions.

  • Merchantry: Added a matrix to WorldObject.

  • Merchantry: Added ObjectPath to WorldObject.

  • Merchantry: Added DirectionalTile to pathfinding, and changed what class calculates the cost.

  • Aeta UI: SortByRenderOrder() now returns a list of elements.

  • Aeta UI: Added DrawElement method, and another DrawElements method which accepts a list of elements as a parameter.

  • Merchantry: Added worth values to most items.

  • Merchantry: Added six new recipes: Iron pickaxe, axe, hammer, spade, longsword, dagger, wooden bow, iron bow.

  • Merchantry: Fixed a game crashing bug caused by rapidly adding and removing items from the inventory.

  • Merchantry: Inventory bug from above was not fixed, now it is. Events weren't being removed properly.

  • Merchantry: Goals can now contains other goals.

  • Merchantry: New character textures. Child red, child blue, child green, adult red, adult blue, adult yellow, adult white.

  • Merchantry: Added DepthTile. Similar to an object, this sets its depth from the world automatically.


Textures

In this first picture is the current version of what the alpha map will look like. I still need to add in some shelves to place items for sale on, and various decorative objects.

Dirt/grass textures

Dirt/grass textures

New alpha characters, complete with arms and pants.

New alpha characters, complete with arms and pants.

A collection of 14 potions and 2 empty bottles.

A collection of 14 potions and 2 empty bottles.


Pathfinding

An implementation of A* pathfinding with tile costs. In the video above, grass tiles cost 10, whereas path tiles cost 1. This influences characters to stay on the path as opposed to treking through grass. Towards the end of the video are two rows of 5-cost tiles, which are directional. The top row has lower cost if travelling from right to left (1-cost), but higher if travelling the other way (10-cost). The bottom row is the exact opposite. This allows me to easily create two-lane streets.

Rather than specify a “wall” type, I simply don’t add it to the grid. This means that tile will never get searched because it doesn’t exist. My pathfinding grid uses a Dictionary<Point, PathTile> instead of a 2D int[,], so it’s a bit easier to do that.

Here’s a brilliant guide on pathfinding. His examples use C++ and Python, but it’s easy enough to translate to C# (or whatever other language you use!).


Interfaces

I added two UIs: a transitions UI, which I’ll use for fading in/out, company splash screen, etc. A HUD UI, which displays the time of day and the controlled object’s currency to the player. You can see it in the pictures above, but here’s a closer look.

hud.png

The time follows a complete calendar system. Four quarters in a year, thirty days in a quarter, twenty four hours in a day, sixty minutes in an hour, and mostly importantly, two hundred milliseconds per minute (temporary value for alpha). One real-time second equals to five in-game minutes, and about five real minutes per in-game day. Additionally, I can hook-up C# events to specific times (down to the minute), which works perfectly for game events.


Current Goals: Character code, events, crafting recipes, temporary recipe book, flora textures.
Future Goals: Alpha release.

If you have any support, ideas, constructive criticism, or just want to tell me how much you dislike my creations, you can:

  1. Send me an email.

  2. Tweet to @Soestae.

  3. Gab to @Soestae.

  4. Toot to @Soestae.

  5. Comment below.

Do you want to support my projects? Here's what you can do:

  1. Become a Patron here!

  2. Tell your friends and family about my projects!

  3. Retweetrepost, retoot, and share!

Thank you for reading.
Soestae, Emberium