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.