Disclaimer:
For the first series of these I’m going to put these up so that those of you who have no idea who I am don’t get too concerned that there’s this guy endlessly criticizing the game (and other people’s games) in the most unprofessional way.
Who I am: I’m the founder and CEO of Stardock. I wrote the original Galactic Civilizations for OS/2 back in 1993 largely as an AI simulator in which humans were allowed to interact. It took off from there. I designed GalCiv I and GalCiv II. For GalCiv III, I consulted and helped here and there but most of my time was spent on Ashes of the Singularity and my day job of running Stardock in which the game stuff is a minority of our overall business.
To be candid, I’m here for you guys. I write games for people to play. I don’t care how popular the genre is. I want to play what I want to play and hope you feel the same.
Now, let’s get started.
Start-up
There are two pieces of starting up the game
I lowered the load time of #1 by 2.7 seconds on my machine. I did this by having the language validation put onto another core and moving other validation to being a background thread becuase it doesn’t matter when it happens.
I lowered the main loading by 11 seconds on my machine by having the main game textures loaded on different cores.
Note: If you have a dual core machine there’s nothing I can do for you. I’m not changing algorithms here (that is called optimization). I am re-architecting it to run in parallel.
Steady-State
Before you get the next update, load up the game and open up task manager. On my machine, a couple of my cores are pegged. I’ve fixed this by using different APIs for measuring time (they’re less precise but much cheaper) along with reducing the number of threads that game sets up for its job system which I’m in the process of scuttling entirely to replace something more similar to what we did with Nitrous over at my other job at Oxide Games.
Bottom line, this updated GalCiv III architecture which will likely show up in 1.84 should use a lot less CPU, be a lot faster and be more stable. I hope to see this released as an opt-in early next week.
Game Setup
Memory Use on start of game (via task manager)
How: Updated the DDS file compression to use one that is new to DirectX 10 (I was able to avoid a DirectX 11 one and get nearly all the benefits). I am still in process of doing this so this will keep getting better.
Total Time from launching the game to being in the game via “quick start”
So on my machine, 14 seconds of boot time reduced. This is due to re-architecting, I didn’t “optimize” any algorithms. I’m just using your hardware a little more completely (parallel computing, my friends at AMD and Intel would be pleased).
Defaults I recommend
Features I’d like to see
Observations
I feel like the performance is good enough to really start digging into the AI strategies. I already fixed a couple of things I thought were not ideal.
Disclaimer: Writing good AI is more art than science. People who know nothing on programming imagine that we can somehow just brute force calculate out some perfect strategy. No, you really can’t. People will pick short terms with decent AI over massively long terms with great AI. My job is to make a really good AI with short terms.
Every few years I do a rating of the AIs I’ve written. Here is how I’d rate them on a scale from 1 (terrible) to 10 (ideal). And my opinions change a bit over time as I learn new things.
Galactic Civilizations OS/2: 9
Galactic Civilizations I: 8
Galactic Civilizations II: 6
Galactic Civilizations II: Dark Avatar: 8
Galactic Civilizations III: Twilight of the Arnor: 7
Galactic Civilizations III: at launch 4
Galactic Civilizations III: at end of 2015: 6
Galactic Civilizations III: today: 5
For other references:
Most other 4X games I play go between a 3 and a 6.
Weaknesses:
Other problems:
That said..
I’m going to do a 1 v 1 game and exploit the hell out of the AI as best I can.
Lots of improvements made today. But also some significant game design changes to how the economy works that is sure to create some discussion.
The area I’m not that familiar with (in terms of exploits) is diplomacy stuff. Feel free to chime in below with any good diplomacy exploits you want me to look at.
Big problems
So 400 turns in on a massive map I’m running into a couple different problems here.
First, the AI is reducing its priority on building colony ships even though there are many many worlds available (I modified the internal settings so that there are thousands of worlds to test this).
Second, the AI is slowly reducing its priority on technology which is causing it to fall further and further behind me.
So after my tweaking, the idle CPU time is, well, idle. I mostly play GalCiv III on my Microsoft Surface Pro 4 so I’m pretty sensitive to battery use.
Sheer Performance difference:
Thanks to Jon (a GalCiv player who likes to play insane maps with 50+ players) I have access to saved games with hundreds (plural) of hours put into them. I used these saved games to help carve down some of these costs.
Now, my machine is a monster so my turn times are already short. On his machine, it was taking multiple minutes to get through a turn while on mine, even on the public version, it’s “only” 13 seconds. So then it’s question of whether it’s a CPU or memory thing.
I ended up having to jettison a lot of the way the AI decides what ships to build. It’s not that the code was bad or that a lot of work hadn’t put into it. The problem was a fundamental issue of strategic priority: What should the AI do at a given time?
As the game progresses, more and more things compete for resources and this is where AI’s tend to fall apart in complex strategy games. GalCiv III struggles with this as well.
For example, what type of ship should an AI facing 50 opponents, 14 it’s at war with that also has 4 unclaimed resources within range and 9 nice planets but is also facing money issues but has 3 trade route slots available and has a very vulnerable enemy that can be attacked if it builds a starbase to increase its range unless, instead, it decides to produce a fleet of longer range Frigates?
What I can tell you is that building a colony ship kept getting knocked lower…and lower…and lower in the priority list. The result was that as the game went on, the AI, which expanded well early on, would get slower and slower at further expansion.
There was no way to “tweak” this. It had to be re-done and moved away from bottom up priority system and instead be looked at from the opposite direction: A top down. The AI player needs to know what its goal is, globally, and pursue it decisively. That’s where AIs are good.
Another area it struggles with is when it should, post-haste, send a unit to a troubled area versus rallying them up. I see people on forums saying that the AI “just” needs to build bigger fleets. Duh. They’ve put a lot of effort (almost an insane amount of effort) into trying to do this well. In GalCiv II, my code for handling this was a lot less sophisticated in the sense that the answer was ALWAYS just build the damn fleets. No nuance. Just do it.
Test game
Just before midnight, I have my second check-in (first check in was all performance, this one is balance and AI)
# Memory # New Compressed Textures: (DirectX 10) Starbase minimum distance reduced from 5 to 3 tiles AI tends to focus more on tech (generally) than previously AI will build survey ships late in game AI provided with a much wider variety of ship designs to choose from with the various strategies AI weights units much more closely than previously in order to not make one virtually impossible to build Opposing culture diplomatic penalty reduced from 1.25 to 1.1 if AI is benevolent Opposing culture diplomatic penalty increased from 1.25 to 2 if AI is mercilous Opposing culture diplomatic penalty increased from 1.25 to 2 if AI is cruel Close to victory diplomatic penalties increasedf rom 1 to 5 Ripe for conquest diplomacy penalty reduced from 0.75 to 0.1 if AI is benevolent Ripe for conquest diplomacy penalty increased from 1.25 to 1.25 if AI is aggressive Minimum planet class to be a manufacturing world reduced from 7 to 4 Max number of colony ships the AI will construct at once increased from 2 to 3 Max slider focus reduced from 95% to 75% (to deal with coercion penalty) Coercion forgiveness eliminated (there is always some coercion if you move off from center) Maximum coercion reduced from 50% to 35% Colony Capital production points reduced from 5 to 1 Civilization Capital production points reduced from 5 to 1 Influence Radius root increased from 1.75 to 4 (i.e. influence ZOC will start out much much smaller now) Tech inflation penalty significantly reduced Penalty for switching a constructor to a colony ship increased from 50% to 75% (yea, you know who you are) Pirates moved further away from starting location Increased the variance for the various settings (minors, , pirates, etc.) Modified the governor script to provide a bit more flexibility based on planet bonuses when building improvements Colony capital maintaince eliminated Colony capital hub provides a 2 (was 1) level bonus to adjacent buildings if they are population or manufacturing or research Civ capital hub provides a 3 level bonus (was 1) Reduced maint. slightly on research buildings Rare habitable planets decreased from 30% to 25% Nebula and black holes and anmalies made much less common on all settings Occasional planet frequency amount doubled from 1X to 2X Common stars modifier increased from 0.9 to 1 Common planet frequency amount increased from 0.75X to 3X (this also fixes a bug where common was less than occasional) Abundant stars increased from 1X to 1.5X Planet Frequence increased from 0.25X to 3.5X (also fixes bug) Tiny map size decreased from 30 Sectors to 18 sectors Tiny map base objects increased from 32 to 120 (i.e. tiny maps will be a lot more filled) Small map decreased from 40 to 32 sectors Small map base object count increased from 64 to 150 Small map max habitable planets increased from 32 to 40 Medium map size decreased from 60 sectors to 40 sectors Medium map Base object count increased from 110 to 200 Large map size decreased from 75 to 60 sectors Large map base object count increased from 155 to 300 (i.e. over twice as many stars/planets/etc. in a particular size) Huge map size drecased from 95 to 70 sectors Huge map Base count increasded from 250 to 350 Gigantic map size decreased from 180 to 80 (but number of objects remains the same -- more stuff) Immense decreased from 240 sectors to 120 sectors (but same object count) Excessive decreased from 290 sectors to 160 sectors Max camera zoom on excwssive increased from 16000 light years to 30000 light years INSANE map size decreased from 380 to 320 INSANE map object count INCREASED from 1200 to 1400! INSANE map maxhabitable planets INCREASED from 600 to 640 thanks to memory reduction in this build Max camera zoom increased from 18.2k light years to 40,000 light years. Sensor cost components reduced slightly Cargo module cost reduced from 27 to 10 (cheaper colony ships -- but remember, planets now rely more on population for their production) Tiny hull cost reduced from 11 to 10 Small hull cost reduced from 25 to 20 Medium hull HP increased from 100 to 120 Large hull cost increased from 128 to 300 Large hull HP increased from 250 to 600 Large hull storage incresed from 100 to 120 Large hull logistics cost increased from 7 to 10 Huge hull cost incresd from 432 to 500 Huge hull HP incresd from 500 to 800 Huge hull storage increased from 250 to 300 Huge hull logistics increased from 10 to 16 Cargo hull cost reduced from 42 to 24 Cargo hull HP reduced from 10 to 1 Cargo hull logistics incresed from 5 to 6 Max AI improvement queue reduced from 3 to 2
# Bugs fixed # Fixed double counting of trade routes for AI diplomacy purposes Placed a critical section around the D3DX11CreateShaderResourceViewFromMeory call (random, late game crashes) Placed a critical section around m_textureSets.PushBack( pGC3TextureSet ) (fixes random load game crashes on large games) Fixed bug that could cause the AI to see tiles in the opposite map position of where they were exploring Fixed a bug that could cause the AI to reduce the priority weighting on colony ship production based on the # of targetable planets
# Optimization # Removed legacy stopwatch code from the sound system Moved old profiling junk Reduced CPU usage of the particles thread Reduced CPU usage of main graphics thread Removed redundant debug output
## AI ## Added UpdateColonies and UpdateShipyards as seperate functions Eliminated the UpdateColoniesShipyards (readability) AI builds scout ships later in the game to keep exploring very large galaxies Dramatically reduced AI >normal economic bonuses (no longer needs them) Re-designed the way the AI expands into the galaxy with colony ships so that its expansion no longer stalls on large maps Dramatically reduced the amount of time an AI will interact with a player if they are not within ship range AI doesn't try to bribe other players to go to war unless they and the other players have a decent military already AI will no longer give tech gifts to players with a different ideology (i.e. no more Drengin giving you tech if you're a nice person) AI now scales the number of similar ship projects based on number of colonies rather than a flat number AI pumps up colony ship production priority if there are a lot of nice planets laying around AI pumps out fewer Constructors in general Re-designed the eway the AI determines which planets should get a shipyard to be more (way more) intelligent Updated AI's handling of adjacency bonuses to be more intelligent AI values planet quality more when picking planets to colonize AI somewhat more heuristic on tech research AI somewhat quicker to war
This will take some testing. When you boost perf like this, you uncover timing issues that were well hidden before.
Again now with a production nerf fix the yors tech tree.
Wow, reading this list is getting me drooling! Can't wait to start a new game but will hold off seeing you're hoping to release an early access later this week.
I am SO glad I've been documenting my mods, because I think almost EVERY single setting I've changed has been fiddled with here. But this is excellent, and really the sort of thing that made me such a fan of Stardock. Note the time stamp on the original post... Frogboy was working late for our gaming pleasure!
Really? I tend to think GalCiv ships are too equant (length = width) for my taste.
Agreed. I think it started out as 4, then everyone complained, was increased to 5, and still many say it's too close. 3 would be a nightmare.
What would probably be a good idea is different types of starbases have different distances.
The problem I see now is if there is a mining resource near a planet (asteroids) then I have to make a choice to put either a mining starbase to get the resources or a economic starbase to boot planet. It would be nice not to have to make that choice.
By having different types with different distances you could have a Mining starbase next to a economic starbase, but 2 economic starbases could not be any closer than 5 hexes.
To similar type Starbase
Economic - 5 spaces (as current)
Military - 6-10 spaces
Mining - ?
To "different" type Starbase
Economic - 3 spaces (or even 1)
Military - 5?
Mining - 1-3?
But I agree allowing more economic starbases around a planet would be abused.
This will also strengthen the importance of bc. If your newly colonized worlds only develope super slow on their own, they become a monetary investment for quite a bit of time to come.
I agree with you, that there is some danger of the early game becoming a drag. But I trust Frogboy to build something, which is mostly enjoyable and else have the awareness to be high alert for more slight tweaks after this
But all in all I am really looking forward to relearning the game with these changes.
----------
edit: on the topic of starbases:
Maxing the number of starbases per planet (up to 15 with 2 range extensions and up to 18 with 2 range extensions and the right perk!) is an efficient but yet very - as you put it - sim-city-esque mechanic. It makes some of the difference between human and AI players, which you want to build even less starbases.
You didn't mention it, but will you also reduce the range of starbases? What about starbase range extension modules?
If I recall correctly you said somewhere, you intended huge hulls only to be built rarer and not rolling of the docks 1 per week. I think I know where you are goiing with this, but I don't think it will work.
By the end of the day, it comes down to only two important stats for ships: storage/logistics and HP/logistics. Manufacturing cost and maintenance are dominated by the values of the components and might as well not be present at all. Or now that I mentioned it, be rather a multiplier to all maintenance and production costs than a flat cost. Plus there are a few hidden benefits of concentration into one big ship.
Coming bakc to storage/logistics and HP/logistics:In the current balance huge hulls excel in both of these:
Hull : Tiny/Small/Med/Large/HugeHP/log : 12.5 / 16.7 / 20 / 35.7 / 50Mass/log : 12.5 / 16.7 / 15 / 14.3 / 25
You suggest to change this into:Hull : Tiny/Small/Med/Large/HugeHP/log : 12.5 / 16.7 / 24 / 60 / 50Mass/log : 12.5 / 16.7 / 15 / 12 / 18.8
The divide between medium and large is kind of excessive. But given that the HP difference between large and huge can still well be offset by defensive components, I don't see myself building huge ships any less. They are still the ideal platform for whatever you are trying to build. Large hulls will more or less be the same to medium hulls.
I did not discuss small and tiny hulls here, since they more or less have their lategame role in form of carrier modules. But I would actually like to have some balancing incentive to make ships of multiple sizes, even in lategame.
---------------------
Then again, I can't stress enough, how much I am looking forward to relearning the game
I'm just confused by the use of both Frogboy and Draginol avatars... Why use two different avatars?That said, I am very excited about everything here. Though I do wonder why the size of the maps is being decreased so much? The map size and the vast scope of the maps is one of the highlights of the game in my opinion. Is this simply to increase the speed of the game, or does lowing the map size while increasing the number of planets and other stuff help the AI some how?
Thanks!
The difference is that GC2 had "Sectors" whereas GC3 does not. The geometry of hexes doesn't lend itself to sectors as easily as a tidy rectangular grid.
If all resources are going to be global, there needs to be a way to blockade planets so they cannot receive resources.
Also, should population be global too, travelling back and forth on starliners? Maybe population should 'flow' towards worlds with higher morale. This might make entertainment buildings more important, since even if morale is 100% you'd still need to keep colonists from moving back to the established worlds.
Lots of answers:
Re Starbase distancing
We are in the process of adding a long-asked for resource called Administration. A small empire will have disproportinately more of this than large empires and starbases will consume them. It's part of the goal to allow for more vertical strategies. Thus, you will be limited in the total # of starbases you can build.
Re colony rushing
There will no doubt be complaints that the best strategy is not necessarily building the biggest empire the fastest. I really want to make more strategies valid and this is the first step, of money in doing that. Thus, the elimination of the magic 5 materials from your hub in exchange for your hubs boosting a lot more.
Re reduction of space stuff
There was just too much of everything. You still end up with crazy amounts of anti-matter and such as is.
Thank you for the answer to these question very much appreciated and thank you for all the effort put in to make this game even better than it is.
Questions
Will a player have an in game option to change this such as low, medium, high...? And will this expand as the game goes on through techs ect...?
Last question will one be able to choose to use the "old" settings released version or "new" version. It seems this will completely rework the game which may be difficult for people who purchased the game/dlc's over the last 18 months playing the old way...?
Im posting this as a separate post as while they are related I dont want to muddle the 2 separate questions into one post
TLDR [2] - [Idea/solution] Give each map a Max total # of a resource such as Anti-Matter, Promethean ect. Based on a map setting and number of players. - Multiply all Costs of current material resources atm. Prehaps by a factor of x3. For Ship Components/Buildsing/Ships. Will need to be balanced. eg: Promethion Pleasure Park might need 6 resources but the basic prototype weapon only needs 1 - In the case of Anti-matter, and all resources, instead of each 'node' of anti-matter on a black hole giving 1, when generated it can give between 1-3+ per node until the total cap of antimatter is reached on the map. Do the same for the other material resources. (Never go over the Max # per map) - That way you can tightly control the resources on the map as you want without giving the Potential problem of a barren or empty looking map. - This Create a supply and demand for resources instead of everyone seeming to have to much of everything. by changing the cost for items it means the better techs (Promethion Pleasure Park) are less common and need to be weighted in chose between other uses. (eg: Do i want 6 prototype ships instead) - Of course the Tech for Mining resources that increase the amount you have will need to be looked at but i imagine that was already going to be looked at considering you can now build ALOT more star bases after your changes.
While I agree there can be to much stuff on a map in some cases, it really depends on map-size and RNG. Sometimes it can feel like you dont have enough (atleast from memory) The one down side of making things like Nebulas and Blackholes generate way less is the map will be less interesting to look at or feel barren. or more importantly harder to navigate at a zoomed distance. I usually memorize placements of these larger/unique map elements to determine my location at a glance rather then zooming and and having to read every planet name until I know what im looking at.Likewise having less nebulas would make its bonus/hindrance effectively useless as they will never need to be traversed by a ship. Since the beginner of galciv3 i remember Paul and players wanting more nebulas from not just a purely visual standpoint. But to be able to use them as strategic points or on the map using its effects positive or negative to your advantage. As per the post above this was impossible due to a map generation oversight that was planned to be fixed but as of yet hasnt been looked into due to time constraints and priorities.My Idea is to Introduce a Max total # of resources per map generation (based on map size an # of races) but also increasing the costs of tech/buildings/ships that need the materials. This would mean that some of the better items that use materials as resources couldn't be just spammed endlessly, but at the same time some of the minor tech/buildings that would use less of the element could still be used in the early game. This would also mean there would be a supply and demand for resources. Sure everyone might have a few of a resource but if you want to build the good stuff u need to go to war with the race who has all the abundant Anti-matter, or get friendly with them in order to trade. Currently, which is mostly a diplomacy issue, since everyone has WAY to much resources as you say. Materials are worth next to nothing to the player, but the AI loves giving you credits or tech for it. By changing the way materials both spawn as well as changing how they are used/cost it possibly could solve or atleast might give you an idea in a way to resolve the problem of to many overall resources across the map or per race. This would most importantly make the materials actually have a value to the player. Reducing the overall number of material resources means nothing if everyone has the same number of resources.
Maybe im just looking at this the wrong way im not sure. But i think the main point im trying to bring across is that the abundances of resources need to be spread out across the map more strategically in order to give them more worth as well as a give the player/AI a desire to actually want to go and take them from others. Civ 5 does this with there resources to give them worth, EG maybe your neck of the world dosnt have any Horses but you really need them so there there is a supply and demand. With GalCiv resources are spread out everywhere evenly. And while there may be some areas in space with limited resources overall your either going to be limited resources overall or you will have to much and they arnt special anymore. Simply reducing the number of spawns on the map feeds to much into RNG instead of a purposely weighted system where supply and demand is created in a balanced way.Which i think is what you are trying to actually do by making them "much less common on all settings"
Im probably terrible at explaining this so sorry if its confusing lol. Or if im totally misunderstanding what your trying to do im sorry about that to
I'm actually really excited for these changes.
Especially the starbase changes. The worst part about the game right now is spamming economic starbases. It's so tedious, yet necessary at the higher difficulty levels to build a high end economy.
Star systems exist within nebulae. I can't see any reason why they couldn't within the game, nor why starbases can't be built in them.
My beef with nebulae is that they mask vision out of themselves rather than vision into them. They would be much more interesting if they, and asteroids, concealed ships, objects, and stations from view unless occupying an adjacent hex.
Nebulae would be much more interesting if different types (colors) had different effects: vary the movement penalties, vary the sensor penalty, make a certain weapon or defense type ineffective within them.
I very much agree... Nebulae and storms should block line-of-sight!
agree as well!
Disclaimer: Start-up
Steady-State Before you get the next update, load up the game and open up task manager. On my machine, a couple of my cores are pegged. I’ve fixed this by using different APIs for measuring time (they’re less precise but much cheaper) along with reducing the number of threads that game sets up for its job system which I’m in the process of scuttling entirely to replace something more similar to what we did with Nitrous over at my other job at Oxide Games. Bottom line, this updated GalCiv III architecture which will likely show up in 1.84 should use a lot less CPU, be a lot faster and be more stable. I hope to see this released as an opt-in early next week.
test
tested successfully
This is all good stuff but kinda like I said in the other thread...why has it taken so long for this to happen? If YOU think the game is that far off and in need of help - where was this level of editorial control/oversight months ago? And why can only Brad see these kinds of things in the design/code? Just seems a little odd that there's only one person in the whole company capable of this level of observation...
I've been kind of meh about GC3 all along - and maybe this is part of it (lack of oversight and pushing the game to were it should be internally) - dunno - but this gives me hope that the game will get to where I'd like it to be (on par with GC2 or better yet, beyond it where it REALLY should be).
Anyways, all of this is interesting to read about (even if terrifying in some capacity) and keep up the good work! As always, I appreciate the journals, honesty, and technical details. It's a slice of the "stardock rocks" pie.
Now hold on there. He didn't trash the previous versions whatsoever, he said that he wanted to improve it in a DIFFERENT way. Before it was more "human" and Brad want's to make it less entertainment and more brutal. Currently, Galciv 3's AI is far and away more competent than games such as Endless Legend (can't even utilize its own game mechanics like the marketplace), Civilizations (push over), etc. Look at any game and you'll see complaints about the AI. However, Stardock seems to focus on improving it more than other companies, with great results, so you'll see them beat themselves up about it, trying to perfect it.
To say that "real" improvements only started when Brad came around is to ignore the immense work and quality of life benefits we received which can be found in the dozens of patch notes all the way back to version 1.0 from the other respected workers in the company. "Terrifying" is melodramatic, in my humble opinion.
There are many great features available to you once you register, including:
Sign in or Create Account