Dev Blog- Sea Trading Game- Refactoring Hold/ Cargo addition

While going through the Mission improvements I’ve previously mentioned, I found that my cargo hold just wasn’t cutting it. The system was very complex, has had frequent problems in development, and overall has just been causing me some headaches.

While pondering on this, I realized that I could improve the system given what I know now. I have decided to go ahead and do it. The result so far is looking much better so far, although it still needs quite a bit of work. Thus far I’ve managed to save a bunch of memory, make the processing and use much simpler, remove dead code, and overall improve the system considerably!

While I’m going through this, I’ve been adding unit tests to make sure that I get it right. While I have done some unit testing, I haven’t done enough of it, and I always remember when I do this that it starts to improve.

The bottom line is, the mission updates can’t really work until I finish the hold updates. When the hold updates are finished, however, everything should work much smoother, and overall just be better.

I’m hoping to have these updates done by the end of the year. My available time to work on this has been going up recently, and I expect to make good progress!

If you haven’t yet, feel free to like me on Facebook, join my Google Group, subscribe to my Sub Reddit, or follow me on Twitter, where you are likely to get frequent updates! You can also subscribe to the Old Ham Media YouTube Channel, where I post frequent videos showing the progress of gameplay and more! Finally, follow me on Twitch, and help me develop games!

Dev Blog- Colonial Sea Trader- Mission Prototypes!

The more I look at extending missions, the more I am coming to realize that there’s a lot of key features that I’ve been missing from missions all along. It’s long been on my todo list to do an overhaul of the missions system completely, and I’m now going to take that on completely, as it was becoming increasingly apparent that I needed to do so before I could properly show the list of missions, among other things.

One of the things that I noticed in particular that I need is the ability to execute functions when I arrive at a particular city, and on a particular day. By so doing, for instance, I can have missions expire, which never was something that I have done before, and other such things. I can also have multiple deliveries required for a mission, should I choose to do so.

What I’ve done this week in particular is to start getting the pattern figured out what kind of data needs to be stored, how to store it, and what kinds of functions I’m going to need. It’s all very much down in the details grunt work, but it’s coming together slowly.

No pictures for the week, again, it’s pretty much heavy in the code. Will see if I can get something for next week.

If you haven’t yet, feel free to like me on Facebook, join my Google Group, subscribe to my Sub Reddit, or follow me on Twitter, where you are likely to get frequent updates! You can also subscribe to the Old Ham Media YouTube Channel, where I post frequent videos showing the progress of gameplay and more! Finally, follow me on Twitch, and help me develop games!

Dev Blog- Colonial Sea Trader- Crew detailed statistics

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.

If you haven’t yet, feel free to like me on Facebook, join my Google Group, subscribe to my Sub Reddit, or follow me on Twitter, where you are likely to get frequent updates! You can also subscribe to the Old Ham Media YouTube Channel, where I post frequent videos showing the progress of gameplay and more! Finally, follow me on Twitch, and help me develop games!

Dev Blog- Colonial Sea Trader- Defining missions

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!

If you haven’t yet, feel free to like me on Facebook, join my Google Group, subscribe to my Sub Reddit, or follow me on Twitter, where you are likely to get frequent updates! You can also subscribe to the Old Ham Media YouTube Channel, where I post frequent videos showing the progress of gameplay and more! Finally, follow me on Twitch, and help me develop games!

Dev Blog- Colonial Sea Trader- New Biomes, lighting, price indication

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.

If you haven’t yet, feel free to like me on Facebook, join my Google Group, subscribe to my Sub Reddit, or follow me on Twitter, where you are likely to get frequent updates! You can also subscribe to the Old Ham Media YouTube Channel, where I post frequent videos showing the progress of gameplay and more! Finally, follow me on Twitch, and help me develop games!

Dev Blog- Colonial Sea Trader- Improving the distribution of mountains, temperature.

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)

 

Th

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!

If you haven’t yet, feel free to like me on Facebook, join my Google Group, subscribe to my Sub Reddit, or follow me on Twitter, where you are likely to get frequent updates! You can also subscribe to the Old Ham Media YouTube Channel, where I post frequent videos showing the progress of gameplay and more! Finally, follow me on Twitch, and help me develop games!

Dev Blog- Colonial Sea Trader- Speed improvements, price list, improved fonts, and more!

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!

If you haven’t yet, feel free to like me on Facebook, join my Google Group, subscribe to my Sub Reddit, or follow me on Twitter, where you are likely to get frequent updates! You can also subscribe to the Old Ham Media YouTube Channel, where I post frequent videos showing the progress of gameplay and more! Finally, follow me on Twitch, and help me develop games!

Improving the load time- Optimizing A* Pathfinding

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!

If you haven’t yet, feel free to like me on Facebook, join my Google Group, subscribe to my Sub Reddit, or follow me on Twitter, where you are likely to get frequent updates! You can also subscribe to the Old Ham Media YouTube Channel, where I post frequent videos showing the progress of gameplay and more! Finally, follow me on Twitch, and help me develop games!

Dev Blog- Colonial Sea Trader- Playtesting at District Arcade, UX improvements!

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!

Clicking outside of a dialog now dismisses it

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.

If you haven’t yet, feel free to like me on Facebook, join my Google Group, subscribe to my Sub Reddit, or follow me on Twitter, where you are likely to get frequent updates! You can also subscribe to the Old Ham Media YouTube Channel, where I post frequent videos showing the progress of gameplay and more! Finally, follow me on Twitch, and help me develop games!

Dev Blog- Colonial Sea Trader- Improving dialogs, twitch decision, and improved productivity!

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.

If you haven’t yet, feel free to like me on Facebook, join my Google Group, subscribe to my Sub Reddit, or follow me on Twitter, where you are likely to get frequent updates! You can also subscribe to the Old Ham Media YouTube Channel, where I post frequent videos showing the progress of gameplay and more! Finally, follow me on Twitch, and help me develop games!