This week I continued to work on my ship detailed statistics by giving crew statistics.
Some of the key things are the moral, along with the number of days of food, water, and cash that you have on board. I’m not really happy with the layout for this, I’ll have to think over it a bit more as to what I’m actually going to include on the panel. For now it will do, but…
Next up is pretty clearly the mission panel, the only one panel that doesn’t have any information there yet. As previously mentioned, that will take a re-write of the mission system, which I will start to work on soon.
One of the things that has been on my list of planning improvements for a while is the missions system. Right now the system I have is very much tossed together, including stuff like hard coded mission types, no conditions upon which a contract is cancelled, etc.
As mentioned last week, I’m working on giving a status of the ship. The next thing after goods on my list was to show the missions in progress. That actually is proving more difficult than I would have suspected, primarily because I’m wanting to include different kinds of mission parameters that I actually don’t show in the dialog. So I’ve decided that I’m going to work on revamping the mission system.
The mission system will most likely have conditions for on success, on failure, and on accept changes that can happen. I have an existing conditions system which I believe I can adapt to working with this new system.
I hope to start working on this new system in earnest over the next few weeks. Hopefully I will have something nice to show by the time this is all done!
There is one major thing that I accomplished this week. I’ve been at it for a while, and finally, I present to you, perspective view!
The most difficult part of this was getting the minimap to look correct, which involved considerable rewriting of code.
The astute among you might also notice a new button on the lower left. I’ll leave the exact purpose of this button a mystery, but it will be the major project for the next week at least that I’m working on.
Not a lot else to really give you for now. Stay tuned next week for more!
I was able to accomplish a few things that I have long wanted to do this week. The key update was to overhaul the biome system considerably, converting a large number of code constants in to a config file. I’ve also played with the seasonal shader model a bit, and gave an indicator of the price system.
Each tile is assigned a Biome. The easiest way to see this is via the colors, as well as the tooltips that show up when you move the mouse over the biome, which will give the name. I have long wanted to assign biomes to the ocean and islands, which are used to figure out what resources are produced in a given location. Each plant, for instance, has a preferred biome. While I was at it, I also changed the moisture parameters to better balance the desert areas. In the end, this is what I ended up with.
Note the random “Tropical” seas that are lighter in color. I also added biomes for lakes and islands, so that northern islands will be different colored then other locations. I’m still going to do some tweaking, but that will come later.
I also spent time to set these up to be extended easily. While I haven’t yet set up most of these files to be modable complete, I have things set up such that they can be easily converted to a modable design. Things like new goods, ships, biomes, world generation parameters, and even goals will be able to be set up via some light modding, although I might not have how to do so well documented, at least at launch.
Another change you might notice in the above image is the top and bottom parts of the map are darker. I’ve added a system to take into account the lighting based on the axial tilt. To accomplish this, I did some tweaks to the shader. See it in action below.
Lastly, I wanted to give some kind of an indicator if a price is good when you are at a trading post. I’ve indicated “Red” for a bad price, “Green” for a good price.
As you can see, this particular port has cheap goods, which makes selling anything for profit as difficult. It will judge the prices against prices that you have actually seen, so be aware!
This week I’m planning on making the camera into a perspective camera. Just to give you an idea of what it will look like, here’s a snapshot of the progress. I’m also going to manage the biome localization, and possibly start working on the real world map.
I started a project this week that I’ve been wanting to do for a while. I’ve wanted to visualize how my world appears in terms of the key parameters I generate, namely the Altitude, Temperature, and Moisture, and to a lesser extend Wind. In so doing, I set a system to save an image of the world, which I likely will use in other places, likely for doing pre-generated worlds. Such an image looks like the following:
A typical world looks somewhat like this:
Basically I made the distribution of mountain peaks follow more of an exponential decay, such that the highest peaks are quite rare, leaving most of the land quite flat. Before the terrain was much more uniform, only slightly tapering off at the higher elevations. In other words, I tried to make it look something like this (For the above sea levels, at least)
The temperature mostly follows the latitude, but I have a parameter to tweak it by a number of degrees per km of altitude. Currently I have that set to 7, and I basically tweak it to preference.
Currently I do not have all of these parameters available for edit to the outside world, but I should be able to have them soon. Expect that coming soon!
Among other things, while do doing I fixed the bug that sometimes happened where there would be a very plain looking world, with little coastal features. While I might do a bit more tweaking of the world generation system, as a whole I am much happier with it now then I was last week!
The item of most concern with the world generation remaining is the fact that the moisture is still too high. I’m planning on working on that during the coming week, hopefully something will come out of it that looks much better!
I also did a bit of tweaking of the cost of goods, which should reduce some of the strange issues I’ve seen. Haven’t fully tested it out yet, but I’m happy overall with the way things are going!
I’m likely going to give away a copy of a class on Unreal Multiplayer development in one of my streams. Follow me on Twitch to find when I stream, and maybe you can win this course!
I’m amazed at the amount of improvements that I have been able to make after having playtested Colonial Sea Trader. It is a much improved game over where it was only a week ago, thanks to the good feedback that I was able to get, between being put in to the situation of having the game ready to play, playing it, seeing it played, and getting some direct suggestions from people.
Most of the feedback I personally collected was in the forms of bugs. I noticed a lot of things that most players didn’t, like the money could sometimes become negative, the load time was huge, the fonts displayed were wrong, and quite a few other things I noticed by watching people play. These I made some huge improvements on, and I can say that many, if not most, of these issues are addressed!
I already wrote a whole blog article on it, but I’ve improve the loading speed immensely! The load time now is only a few seconds, as you can see from the below game dev vlog.
The other big improvement is the price list, which now allows for selecting items to be prioritized. I also did a few other tweaks to how it looked, and you can see an example below:
For the next week, I’m planning on doing streams both Monday and Tuesday evenings, working on improvements to the selling dialog, some kind of a way to indicate if the good prices are better, some tweaks to the pricing model, and other UI type changes.
Aside from that, the biggest thing I’m going to work on is if I only want to allow moving to cities, and what that might entail. I am increasingly thinking that I will only allow moving to cities and other points of interest, and not just traveling to any point, but I’m not completely sure. At the very least, I will only allow moving to a city if a city is within a few tiles of a city. Let me know what you think!
One of the biggest issues I noted from the District Arcade was that the load time was absolutely horrible. I haven’t seen the same effect when I run in the Unity Editor, which was strange. Looking in to things, I remembered that I load the distance between cities in the built version, but I skipped it in the editor to save a few seconds. I allowed that bit of code to run in the editor, and proved that in fact that was the issue that was causing the game to take so long to load!
Okay, so I had figured that out, the next question then was, how can I improve it? I ran the Unity profiler, and noticed that I had a very large amount of GC memory. I figured I would try to reduce that memory footprint.
I should add that I’ve open sourced my A* algorithm. This algorithm fundamentally requires that each instance uses a class to represent that data. That whole class was included in the data queue. This could result in huge amounts of data! I decided to reduce the node to something simple that was queued, that pointed to the main node.
These smaller nodes allowed the system to run much faster, using about 10% of the memory! Running this on my computer brought a start from about a minute to about 15-20 seconds, which while acceptable, is still a long time.
Next I worked on threading. I set up the per-calculated data system in it’s own background thread, started at the earliest moment that it can be. This caused some really serious background effects. I had limited threading support in the A* algorithm. While trying to improve it, I realized I wasn’t releasing the mutex after using it. Once I started releasing the mutex, the speed delay dropped to something useable, but still a bit jerky.
Finally, I looked in to optimizing the algorithm itself. Looking at it, I determined that I had quite a bit of space that I really didn’t need to store. I reduced the data by half that is stored, giving even more speed boosts! I can now create a typical world in about 5 seconds! The jerkiness seen above disappeared almost completely!
The bottom line is, when you have something that is taking an absurd amount of time, using the profiling tools available to you, and other tricks to try and figure out how to improve your performance. You can really dramatically improve things!
As I’ve been mentioning for the last month or so, I had the opportunity to present Colonial Sea Trader at a local indie gaming convention, the District Arcade. It was a very interesting experience, and I learned a ton from it! It was quite encouraging to see people play my game, some of them for upwards of 20 minutes, and some of them better then I’ve ever played the game so far!
First of all, a few things that I wish I had done. I particularly wish I had tested more on my demonstration machine. I found a few issues that only showed up on the test machine on the day of the convention themselves which proved to be quite annoying, namely that it was far too slow, and particularly that reloading the game tended to just not work. I’ve started working on those, and I believe with only a little work I was able to identify the cause of the restart crash, but I wish I had done that before!
I learned quite a few things. I brought a notebook, and took two full pages of notes while watching people play the game. I noted areas that people clicked that didn’t do anything, confusing things that people didn’t understand right away, and generally speaking tried to help them to do the right thing. In the end, I managed to find quite a few things, of which I’ve already fixed about 20% of them.
The biggest thing that I noted that people wanted to do was to click the background to dismiss a dialog. The good news is, it now works!
Other items include continuing to improve localization support, fixing the minimap clicking that wasn’t working before, and making signs transparent if the ship is behind them.
Lastly, I fixed the scroll wheel support such that it isn’t as slow as it has been. I personally used other ways to scroll, so that was quite helpful to see.
To end on a positive note, I had at least 4 people who really seemed to like my game who played it, and quite a few others that gave some really good feedback. If you are one of those who played Colonial Sea Trader, I thank you very much!
This week I’m going to continue to tackle the slowness that happens on the start. I found some of the issues, but I’m not there by a long shot. I’m also going to consider adding some controller support, which should allow me to improve things otherwise.
I did two videos this week, one just showing the game play, and another sharing my experience in voice my experience at the District Arcade. Check them out below.
As with the last few weeks, I’ve been working towards my game demonstration at this week’s IGDA-DC District Arcade. I’ve been making dialogs clearer, looking for issues, but most of all working on improving productivity. This week I was able to find quite a few issues, and I think I’m pretty much there! I’m now able to play for about 5 minutes without any issues, and I’ve identified one more thing that when I get it fixed will allow me to play for even longer!
The biggest difference to allowing me to play longer is the fact that water and food are now available in ports. After digging in to the issue, I found that it was a simple rounding error that prevented me from getting more water, fixing that allows for me to continually get the water that I need, as well as some food. It will still need tweaking, but overall it’s looking pretty good!
I made a few dialog improvements, related to buying and selling. The trading post now shows a much improved price list compared to before, as I started to do last week.
Also, I’ve been working on solving the issue of seeing behind the sign when I have a ship there. This is one potential solution that I’ve been working on, let me know what you think. I have a few other things that I can try out too, but I’m really curious what you think.
As for Twitch, I’ve decided the following. I’m going to stream when I have the time to do so, and am working on something that will work well for Twitch. The most likely times that I will stream are Monday, Wednesday, Friday, and Saturday evenings. There are other times that might work as well at random, but I won’t count on them. I’m going to try and do it once a week. There are a number of ways to find out when I’m streaming, the best is to follow me on Twitch.
This week I’m going to continue the playability improvements. Specifically, I’m going to work on better showing what is limiting one’s ability to travel. I’m doing this because the lack of funds was actually what limited me, which wasn’t what I thought my issue was. I’m probably going to also further refine the dialog improvements from last week.
I decided I’m going to try something different. I was listening to a GDC talk about a number of things, one of the things was streaming your development work. I decided, why not? So I have set up a Twitch account, and figured out how to make it work. I did do a single test stream Friday, and it worked quite well. The next time that I will do it is today at 12:30 EDT, 1630 UTC. I know it’s only a few hours notice, but I’d love it if any of you could jump in and say hi, and see how things are going. I’ve set aside a number of topics to try and make the stream more interesting, I’ve decided no one wants to just watch me spend 3 hours digging in to a code base that I’ve been working on for over a year to fix some obscure problem. Mostly I’m going to focus on UI and Player Experience. So please, stop in. I’ll keep going until I can’t anymore, assuming there is interest.
I’m continuing to work towards the District Arcade, in only 2 weeks! I missed the date last time, the correct date is September 16th. As I previously mentioned, playability is the major thing that I am working on to improve with in the game prior to the event.
I started my test stream by playing the game, and carefully taking notes of where I felt the playability was lacking. The first area was that the price difference between buying and selling was just too high. I tweaked my settings a bit, and ended up with a price difference that was about 10-20% of the cost in most instances, which seems much more reasonable than the 2-3 times the cost I was seeing before!
Another major issue has been the lack of food. I’m still working on this, it’s a far more complex issue than I had first realized. Still, I think I set up a system this week that will be closer to fair, it’s going to take a while to really make it.
One thing that has really bothered me is the game looked much different in the compiled version than in the one I was running in my Unity window. I spent the better part of a few hours digging in to the code to figure out what was going on. In the end, I realized it was the Unity quality settings, the default value differed between the two versions, and made a huge difference. Check out the images below, the final product, and two test cases showing the difference between the two.
I also fixed an issue where the journal would overlap text sometimes. In the screenshot I showed last week, I was able to manually fix it, but it wasn’t working right in the game. The bottom line is, the list of cities that I allow comes from a text file, and each entry is on it’s own line. I was splitting by “/n”. I can hear half of you groaning now, knowing what my error was. Because I made the text file in Windows, there was an “/r” still attached to the end of the city. That is a carriage return, which basically means to start the text over again at the beginning of the line you ended on. The good news is, I’ve fixed this! It will now also support linux formats, FYI.
Lots of stuff happening, things are really starting to pick up! I did another development vlog, check it out below.
This week, as I suspected before, was a bit slower than I would have hoped for. As I mentioned at the end of last week, I made a trip to see the total solar eclipse (More later), which took much of my game development time for the week. Still, I was able to make quite a few changes that are smallish, but quite important. I do also have a bit of exciting news to share with you all!
The only visible change was adding a bit more decoration to the journal, as seen below. There may or may not be a subtle Easter Egg included, I give full credit to anyone who can spot it;-) Likely I will add similar tributes to others who have helped me to make this game possible, it’s been quite fun to do so.
As with previous weeks, I’ve been localizing more text. Most of this week’s changes were relating to goods, I now have most of them localized.
The biggest gameplay change this week was I lowered the time to move by a factor of two. It seems to make a huge difference in gameplay! I’m hoping to continue to do exploration in this field to improve the gameplay further! Particularly with some news that will come later on;-)
As mentioned previously, I made a trip to see the total solar eclipse in the US last week. It was really amazing, I recommend that anyone who can takes the opportunity to see one! One of the stories I heard while I was there was one that I had heard before, that of Columbus using knowledge of a lunar eclipse to impress the natives, getting them to do what he wanted to do. It made me think about how I could use this in Colonial Sea Trader. I think I’ve decided that some random events will occur that include eclipses, and will have some kind of an effect, which I’m still trying to work out. It should be quite interesting.
And lastly, for the exciting news! I have been invited to present Colonial Sea Trader at the IGDA DC’s District Arcade this year, on September 21st at Bravo Bravo in Washington D.C. If you are in the area, stop in and say hi, I’ll let you test out the game and give you a chance to provide some very direct feedback.
With the upcoming public demonstration of Colonial Sea Trader, I’m going to concentrate on getting as many updates to improve the gameplay as possible. The first was making things run smoother. The next changes will probably ensure that I have a reasonable distribution of land types, and thus good types. Stay tuned for more!
Lastly, I did post a short development vlog this week, check it out below.