Sunday 31 May 2015

World building

Unity 5's physical shading rendering issues have long been ironed out, the multi-player build was successfully merged with the visual prototype and pretty much everything's working great.

I've been spending some time reworking how players connect/disconnect with one another and (more importantly) how each client would send data to each other.  So far, I'm impressed by the progress that I've made (as a programmer) since I started the project.  My code is getting cleaner, organized and more efficient.

Since a lot of the pieces are falling nicely into place, I decided to take some time to refine a bit of the UI.  It's odd how something as simple as a chat window can make a game feel weird just by it's responsiveness (or lack of thereof to be precise) so that's where most of my focus has been.  I know my friends have been complaining about the clunkiness of typing and how the window itself disappears over time (because it wasn't doing it properly).  Not only are all of these things rectified, but I also applied an option to increase/decrease the time delay for when the chat is hid.  The setting has a "keep chat open permanently" mode but the UI doesn't communicate it yet.

I also looked at how the layout of my UI (I have no art for the UI yet) would work at varied screen resolutions... which has been a challenge considering I'm trying to put as much as possible into the main menu; to avoid excessive clicking in order to get somewhere.  At the same time, I don't want to overwhelm the player while he/she is navigating the menus so, as an artist, I'm making sure that one's eye/attention is directed properly.  I'm not 100% there yet but what I've done so far looks promising.

On the procedural generation front end of the project, there's still a lot of work to do.  Dungeon layouts have been pretty good for a long while now (and work great in multi-player) so, lately, my attention has been on the world map:







So what I got is a map that gets divided into distinct regions where the game's varied nations will inhabit.  Upon generation, the map figures out where to put mountains and then plays a quick and crude game of Risk by itself.  The end result are these images you see above.  Each pixel square (voxel) of the map represents a game area that eventually gets generated.

The type of area each voxel represents is determined by many other factors that I then add to the generation algorithm.
The first step is to make sure that the player can reach every nation (even those on islands) by placing at least one city per nation by the shore; that way a port city can be generated for the player to travel by ship.

Then it's just a matter of establishing an eco-system:





The pink dots are large cities.

I'd like to eventually have an elaborate weather system but, for now, I'm content with day/night cycles that I've yet to fix (because, it's still a bit glitchy - particularly in multi-player).

No comments:

Post a Comment