Thursday, 22 August 2013

Here is a first pass of the new freighter mesh I've been working on. It has a texture mapped but I still need to make the texture. I was doing the freighter mesh now so ingame you can visually see if a freighter is empty, under half full or full according to how many containers it has, this will be scalable so larger freighters carry more containers and it will only have containers for the percent of how full it is.

I also thought I will do this now so I can release it as a tech demo when I want. Before it was a mesh from EVE Online and I don't know if anyone would care but technically might get in trouble for that and I needed the mesh eventually anyway.


This is a render from my graphics test program (includes basic effects as they would work in-game and shaders currently implemented)

Here's it with basic cargo containers shown in 3dsMax:


Its only first past mesh and haven't started on the texture yet but happy to hear any initial feedback if you have any?

Thanks,

Saturday, 3 August 2013



Work's been a little slow lately but still going, also been distracted a bit with the new Civ V expansion.. just for researching ideas of course... lol. I did find a simple code statistic generator that I ran on my code to see how much I've done and for anyone else who might be interested:

Files: 26
Code lines: 25456
Comment lines: 4839

Classes: 217 (0 or 0.00% commented)
Class fields: 1250 (5.76 per class, 0 or 0.00% commented)
Class methods / functions: 1446 (6.66 per class, 14 or 0.96% commented)

Global functions: 93 (0 or 0.00% commented)
Global variables: 337 (0 or 0.00% commented)
Constants: 17 (0 or 0.00% commented)

Total items: 3360 (14 or 0.41% commented)

It doesn't count commented functions\method the way I comment them so I have more then the 0% - 0.96% commented code. This is just my code and doesn't include any code for Irrlicht the renderer or the BlitzMax wrapper.

I also did some work trying to get multi-threading working though it seems with BlitzMax that the built-in garbage collector isn't very fast for multi threaded programs and basically causes the programs to freeze for a second ever 2-3 seconds which isn't worth it. I might do some more research into it later when the multithreading is more obviously needed, maybe manage memory more carefully or do some manual clearing if possible. It might make it usable but at the moment the AI code is faster single threaded anyway. Probably because the GC freezes, total turn time went from 9 seconds ST to 19 seconds when MT for the same turn processing)  I'm sure this will change once it's doing more of what I'll add to it.

I've added the ability for the AI to determine when to declare war on another empire. At the moment it takes into account quite a few variables such as how many wars it currently has, the history and outlook of each war and to military strength for each war and estimated strength for them all together. So it shouldn't be declaring war on a really strong empire especially when its already got other wars that aren't looking so good... etc.

I'm still going on the AI to determine when to end wars and make peace, I was working on that then realize I really need to be able to get the AI to say what it will want if another empire wants to make peace with it. Then from this you can get and AI that is at war but wants peace to get the cost (Cash, ships, planets, etc) it will be for each war it currently has then determine which empire(s) it should make\pay for peace with.

So while I was working on that part of the AI I've gone back to the working on the diplomacy screen so I can initiate trades\offers with the AI and more easily debug\see how the AI will value each\trade offer. Once the player diplomacy screen is done. I'll get the AI response working correctly so then i can get back to the relationship work and hopefully get the 2 integrated with each other properly.

Wednesday, 3 July 2013

Forums up

I've now added some basic forums to the site. This is in anticipation of hopefully and maybe releasing a playable test soonish to get initial feedback from a handful of users (haven't got anyone specific lined up yet but shouldn't be hard to find a couple of testers!).

Of course they are also there for any discussions or asking me any questions about it.

Sunday, 30 June 2013

Hi All,

I've been doing a lot of working and planning on the GUI, especially the fixed GUI items such as Diplomacy, Fleet, etc) So far I have 4 permanent GUI buttons for Empire, Diplomacy, Fleet and Research. The empire and fleet button have 2 sub buttons each. Below is a screenshot of the planet list open. This is what I've been working at the moment including sorting and a scroll bar on the left if you can't fit all items within the specified GUI size. The GUI style and data is just a start I'm sure it's going to change before I'd consider it final...




One thing I really want to make sure I have is multiple options for controlling the GUI. As an example with 4x games but others as well I always get frustrated when you just want to drag and drop, multi-select or other functions that would be considered standard but hasn't been programmed in. So I will be spending as much time as I need to make using the GUI as smooth and intuitive as I can. Of course I might have a different idea as to is a good GUI compared to other people but I'll do my best and will always be looking for suggestions and improvements as it go.

At least now i have a decently functioning GUI table type\object that I can reuse for fleet management and am already using for the load\save game listing too :) I started work on this after I decided I need to expand the diplomacy more before I can start play testing thoroughly myself then detoured onto the planet listing as it's the first button down the bottom... lol.

Next I'm going to get back to the AI and how it manages relationships with other empire. I had got the basics in and working already. The peace loving AI would like an empire more for each turn it didn't do anything aggressive against it. Next I've added the option for an AI relationship to deteriorate if borders are too close and overlapping, this is variable according to how I set the AI's specific personality. So I'll get back to this and continue to add more reason's\calculations to modify relationships.

The big step will be adding the functions for the AI to evaluate declaring wars and wanting peace etc. I'm going to add overall goals for each AI personality (some can be the same of course). These will determine who it is more likely to ally with or go to war with. An example would be if the AI's goal is galactic domination it would be more likely to ally with a weaker empire or 2 to allow it to declare war on it's nearest military rival. Another example would be if the empires goal is financial domination that it would probably just be focused on strengthening its internal protection and forming alliances with any large empire to increase trade etc. others might even just want galactic peace, research, etc

I'll be happy once I get the AI overall goals in and it making decisions based on the final outcome it wants. After that I might start working on the ship design windows and functions... seems like there is still so much to do even until it's close to playable. Oh well keeps me busy for now :)

Happy to hear any suggestions or feedback on the current ideas and screenshots if you have any?

Sunday, 2 June 2013

Hi,

Just thought I'd give another quick update on what I've been working on. Recently I've added the ability to detect unknown objects far off and once they are closer you can identify what they actually are. This ties in with my plan to have sensor stacking penalties for ships on the same grid. Now if you have 3 ships on the same grid the sensor profile will be 3x as large but you still need to be as close as you would if it was just the one ship to identify it. The stacking effects of sensor signatures are in and working too now.

As shown i've got place holder '?' when its an unknown object I'll add details to the GUI when you select an unknown signature so it will show the signature size but will only show it as one signature. e.g. 300 points signature (which could be one 300 point ship or 3 x 100 point ships, etc)




What I want to do next is to determine how sensor strengths will work. Currently it is just adding up all the sensor strengths that reach the specific grid. It will have a stacking penalty for the sensor strengths but not sure exactly how I'm going to calculate this.

Ultimately how I want sensor strength to work is for you to have stacking penalties effect each extra scan that reaches the grid however these to be determined by the angle of the scan compared to the last one. So first you would check for the highest scan strength and use that as the first and main scan resolution. Next if the next highest strength is 180 degrees from the highest one you get a maximum strength of 75%, however if you are only 90 degrees from the highest scan you get say 50% strength only and if your 10 degrees you only get 5% of the strength. This would simulate sensor triangulation so the more surrounded the target is the stronger the sensor strength on it.

This hard part of doing it this way is that all sensor sources and the angle they are from will need to be saved  for all grids and all empires\teams that have some sensor strength, this could very quickly add up in RAM usage :( as currently I'm saving the sensor strength for each grid for each empire so if I have 8 empires each grid object has 8 floats stored to measure current sensor strength.

If I have to measure and save all ships and strengths for each grid with the current method memory usage would just get out of control. I think be best way is going to be by calculating the strength each time a change happens by finding all ships within possible sensor range (Max scan range) and cycle through them to calculate actual sensor strength. The benefit of this way is its also easier to add alternate sensor types which I am planning for too (EM Signatures, Gravimetric, etc). I don't want more than 3 at the moment otherwise it just adds to much variation and choice doesn't matter as its more luck.

Redoing the sensor strength calculations shouldn't be to hard hopefully just a day or 2, but adding the direction penalties is going to be a bit harder by sorting and calculating the diminishing returns for it but still getting the highest possible combination of all strengths correctly will take some time.




Sunday, 19 May 2013

Hi All,

I'm finally able to get back to some more programming now that work had returned to normal, no more working all week and weekends :).

Most recently I've been looking at what I can do with the GUI as I was test playing through I realized I need notifications on when ships and things are finished. So I added them as a notification that drops down on the left like the other ones I have. Then I was thinking about expanding the functionality and hopefully make it look nicer too by if the ship that was finished it on screen now it will also show a direct overlay on the screen too not just list it in the expanded button on the left.

Here is a quick example, still playing with positioning and i'm debugging the GUI Exclusion zones as the extra boxes you see drawn below. I'm going to randomize the spacing a bit more and spread the overlays around just a bit more too. the overlay item will also be a button to allow you to select the ship too.


I've added some animation for when the overlays appear which looks kinda cool and might do up a YouTube video of gameplay soon or if there is anything specific people would like to see.

Anyway just been doing some refining of some game options and also managed to workout how to get BlitzMax to rebuild modules now which allows me to change the Irrlicht wrapper with any improvements I want. I wish I bothered to get this working early there are so many easy additions that i wanted to do by just didn't have MinGW installed or setup correctly. hopefully this will make things just a tiny bit easier for me now :)

Sunday, 7 April 2013

Hi All,

It's been a little while since an update so I thought I should say something, I haven't had a lot of chances lately to work on the game but still been doing what I can. Recently I've be trying to work out a bit more for galaxy creation and planet distribution especially for spiral galaxy types.

Here is an example I've got working now with moderate galaxy size and moderate star and planet density, It's still looks a bit too crowded possibly because when you zoom in stars after often only 4-5 grids away and planets from each system can overlap of be on grid away.



Here's an example of a moderate size galaxy with highest star and planet density... i think it ends up with 500 planets and 300 or so stars.



I did have a look at a max size galaxy with max planets and stars with current config. That galaxy though taking quite awhile to load also seemed to cause an issue with saving too taking forever and the save size with getting up to 200MB before I just cancelled it. Then I realized that was probably just because I disabled FOW which gives player full sensor strength on all grids and it tries to save all that. As it's just a debug feature not to worried about that for now anyway... :)

Playing with a galaxy max size runs alright on my computer just need to work out the optimal density so you don't have planets all over the place then I'll set that as moderate density setting and allow players to increase or decrease from this value as is usual for new game settings. I think what I have now for moderate density is not to bad but just need to decrease the max setting so it doesn't create quite so many planets and stars as is does now.

Once your empire gets a bit larger the corporation tradings between your planets could slow turn processing down a lot if you have that many planets. I haven't got to stress testing anything like that yet though but is something I need to keep in mind.

Anyway that's mostly what I've been doing lately. Unfortunately over the next few weeks work is going to be quite hectic which might make me less motivated to spend time on this after work. Expecially if I'm getting home late and working on the weekends coming up.. but I'll see how I go!