Author Topic: C# Suggestions  (Read 272861 times)

0 Members and 1 Guest are viewing this topic.

Offline Father Tim

  • Vice Admiral
  • **********
  • Posts: 2162
  • Thanked: 531 times
Re: C# Suggestions
« Reply #300 on: April 22, 2020, 11:14:39 AM »
This is a small thing.  But I suggest we rename the "Beam Fire Control" to something else like "Weapons Fire Control" or "Turret Fire Control".  The reason for this is I am an avid railgun and dont like the beam part.  So, Thanks for atleast reading this small thing.

Yes, it would be nice if terminology shifted from "beam" to "direct fire" but given the extra letters involved, I doubt it would stick.

Oh, and "Turret Fire Control" is definitely out, as most 'beam' weapons can't be turret mounted.
 
The following users thanked this post: SpikeTheHobbitMage, serger

Offline Zincat

  • Captain
  • **********
  • Z
  • Posts: 566
  • Thanked: 111 times
Re: C# Suggestions
« Reply #301 on: April 22, 2020, 11:19:53 AM »
I dislike the idea of piracy. Some of my totalitarian empires don't have ANY civilians.
It would have to be yet again another on-off switch.

Besides, as father tim posted, it's really hard to think of pirates building any sort of warship in this setting. There's a reason piracy is basically nonexistant in the modern world, and that's the amount of resources needed to build a warship, and the fact it's not something easy to do "off-radar"

A more realistic approach (but one that is not meant to be automatic, but rather something the player does) is a colony going rogue. That can be more easily done. Just grant independance to a colony, and then SM the relationship so it's negative. Would be easy to do.
 

Offline Demonides

  • Gold Supporter
  • Warrant Officer, Class 1
  • *****
  • Posts: 94
  • Thanked: 145 times
  • 2021 Supporter 2021 Supporter : Donate for 2021
    2022 Supporter 2022 Supporter : Donate for 2022
    2023 Supporter 2023 Supporter : Donate for 2023
    2024 Supporter 2024 Supporter : Donate for 2024
Re: C# Suggestions
« Reply #302 on: April 22, 2020, 11:29:43 AM »
Minerals window:
Please allow sorting by availability before amount, as that is the more important number.
Please add a 'total' column showing the total amount of minerals and their combined availability.

And starting vaule both 0/0 not 0/0.1 pls :D
 

Offline Father Tim

  • Vice Admiral
  • **********
  • Posts: 2162
  • Thanked: 531 times
Re: C# Suggestions
« Reply #303 on: April 22, 2020, 11:40:55 AM »
Minerals window:
Please allow sorting by availability before amount, as that is the more important number.
Please add a 'total' column showing the total amount of minerals and their combined availability.

And starting vaule both 0/0 not 0/0.1 pls :D

I think this was changed to avoid "divide by zero" errors.  Also, with minimum values of zero-zero, it would logically show every surveyed body ever.
 
The following users thanked this post: SpikeTheHobbitMage

Offline Steve Walmsley

  • Aurora Designer
  • Star Marshal
  • S
  • Posts: 11671
  • Thanked: 20451 times
Re: C# Suggestions
« Reply #304 on: April 22, 2020, 12:38:28 PM »
Since create project just assigns the researcher and labs and those projects can be cancelled with no ill effects I do not see much reason to show "are you sure" confirmation popup.
Since there's nothing being possible lost this confirmation is just one additional click to create a project

Agreed. I've removed the popup.
« Last Edit: April 22, 2020, 12:45:09 PM by Steve Walmsley »
 
The following users thanked this post: SpikeTheHobbitMage, muzzlehead, Alsadius, Wieseltrupp

Offline HeroicHan

  • Petty Officer
  • **
  • H
  • Posts: 26
  • Thanked: 2 times
Re: C# Suggestions
« Reply #305 on: April 22, 2020, 01:05:42 PM »
There's a few features missing from ye olde aurora that I'm missing sorely as a space master.
Galactic Map tickbox for seeing system ID (Or in system generation and display window)
Manual Jump point connecting
Transfer to alien Commanders/Ships
SM Editable Wealth/Fuel (colony)

As it stands if two of my players want to make a trade they would have to trade minerals. And if they wanna buy fuel they need to buy the refinery. And wait.

Edit: Also transfer of racial techs such as engine designs.
It's really cool to be able to be like "we don't want you to give you the ability to make your own military engines with our magneto-plasma tech, but we will license you this magneto-plasma commercial engine for xx dollars"
« Last Edit: April 22, 2020, 01:18:01 PM by HeroicHan »
 

Offline Steve Walmsley

  • Aurora Designer
  • Star Marshal
  • S
  • Posts: 11671
  • Thanked: 20451 times
Re: Restore next research notice in event log
« Reply #306 on: April 22, 2020, 01:08:01 PM »
In the VB6 event log, when a scientist completed a project and there was another queued up for them, the event log told us so. In C#, this is no longer the case. If possible, it would be nice to have it back.

Done.
 
The following users thanked this post: SpikeTheHobbitMage, Alsadius

Offline Steve Walmsley

  • Aurora Designer
  • Star Marshal
  • S
  • Posts: 11671
  • Thanked: 20451 times
Re: C# Suggestions
« Reply #307 on: April 22, 2020, 01:09:25 PM »
There could be an indicator of how many officers you have on a given rank. Like say "Lieutenant Commander (28)"

That is already on the Commanders window.
 

Offline Wieseltrupp

  • Chief Petty Officer
  • ***
  • W
  • Posts: 48
  • Thanked: 18 times
Re: C# Suggestions
« Reply #308 on: April 22, 2020, 01:16:07 PM »
Could you please change the Standing Orders so they only stop time when both orders fail?
 

Offline mike2R

  • Lieutenant
  • *******
  • m
  • Posts: 180
  • Thanked: 117 times
Re: C# Suggestions
« Reply #309 on: April 22, 2020, 01:40:06 PM »
Piracy.  I know this has been suggested for years, but as far as I remember the reasons against it were more lore based than anything else, so I've tried to think of a mechanic that would fit logically into the game.

Great idea. . . for after we get a robust civilian economy & commercial shipping.  And preferably after, or along with, a way to use CIWS in offensive mode, or otherwise simulated an 'armed merchantman' concept.

Well we're on page 21 of a suggestion thread where it looks like Steve has just started on page 1 - I don't imagine it will be the first thing implemented, even if he happens to love the idea :)

Gameplay reasons: Having occasional attacks by low threat enemies in rear areas would give the player a reason to build patrol ships.  These would have a different design philosophy than the battle fleet - with range and endurance being more important than raw combat efficiency - and to me anyway, that sounds fun.  Obviously you'd want an option to turn the system off in the same way as spoiler enemies for people who don't agree.

Literally the only thing stopping you from building patrol ships and deploying them in your rear areas is you.  If it sounds fun, do it.  If it sounds not-fun due to current mechanics and/or software limitations, advocate for changing those.

For me its just not fun because there is no gameplay reason to do so - I admire (and enjoy reading the fiction from) people who can RP a bit more deeply, or play multi-empire games.  But for me I need the game to provide the framework to do things - I'll RP a bit around that, but basically I need it to be at least a marginally efficient way to play to maintain interest. 

Obviously this is just speaking for what I want - but if you don't ask you don't get :)

Lore: Pirate ships should come from ships "scrapped" by civilian shipping companies.  The idea being that a few of these make their way onto the black market, get modified (increase their speed enough to make them useful, and add a few weapons).  They then slip through the jump gate network to somewhere to raid civilian shipping lanes, until the player hunts them down. 

No, the lore should be whatever I decide it should be to fit my fiction.  The same way I can rename Ion engines to "triple-expansion steam" engines if I so desire.

Not the least because I don't have a jump gate network.

Honestly I'm not attached to the lore - I just want the mechanics of minor threats in the rear areas.  This seemed a marginally believable way to do it, but I'm be extremely happy with something completely different that achieved the same goal.

Mechanic:  A percentage of scrapped civilian ships generate a pirate.  Probably the system only starts after some set number ships have been scrapped (so its not a super early game thing).  When one is generated, a system that a) has a planet with a pop over 25 million and b) is connected to the home world via the jump gate network, gets a pirate generated.

What if I want my pirates to be renegade ground troops with boarding shuttles?  Historically (and in modern times), the vast majority of pirates have been (are) shore-based in small craft who swarm over passing ships.

Sure, most people probably want an intense, somewhat-close-to-even ship-to-ship fight with a full-up starship, but an hour after Steve releases the 'Pirate Patch' there will be people on these boards posting "Just use a large cruiser with X sensor and Y missile launchers of Z size and A range to exterminate these pests from outside the range they even know you're there."

I wasn't actually proposing the threat be remotely difficult to beat - basically something that any military ship can do, even a small one that has sacrificed combat power in exchange for range and endurance. Maybe an obsolete destroyer that has had its engine replaced with a civvy spec one.  Or a big system-wide missile envelope.  Its just an excuse to build military ships that don't belong in the main fleet deathball really.

I apologize; I seem to have drifted off topic.  There are many, many ways to do the mechanics (What about ships that can turn on their commercial transponder and prevent you from firing at them?  What if they only way to deal with a pirate vessel is to board and capture it?) and that discussion should be left until after we decide what the purpose of adding pirates is, and what we want them to do, and -- for lack of a better term -- where 'the fun' of piracy is.

Each pirate in a system has a random chance of spawning any time there is a civilian ship in the system.  It appears at some distance from the target ship, and moves to intercept.  Once it intercepts it attacks, destroys the ship, salvages it, then flees outsystem.  Once it has been undetected on any player sensor for some length of time, it despawns.  If the player manages to destroy the ship, the pirate is removed from the game.

I would hate that.  I hate the idea of a ship literally disappearing from the game 'until next time' -- it stinks of the worst kind of video game logic.  Once a ships exists, it should continue to exist and Aurora should know where it is at all times.

Not the least because if I want to hunt pirates by finding their base, they darn well need to have a location to be found.  Pirate ships should not get a pass on fuel or maintenance or ordnance.  They should be stealling these things from their victims and running short if I do a good job of risk management.

The pirate should have enough weaponry to kill a civilian in a reasonable amount if time, and be fast enough to make an interception doable. But you'd want to be able to meet the threat with a small warship with range speced engines - the challenge is meant to be having a ship there at all.

The pirate should function by exactly the same rules as every other ship in the game.  If the humans / Alzairians / robots / Gorrthik of the pirate boat can figure out how to make something a functional starship weapon, my empire's highly-paid and pampered scientists can figure out the same thing with sufficient funding.

I wasn't thinking anything special in the war of weaponry, just enough to kill a civilian ship quickly enough to require you to have something nearby if you want to respond.  The idea was that the pirates would be in essentially a faster, armed freighter.  Enough to kill a civilian, not enough to worry a small patrol ship.

And you could beat them, as long as you got to them and destroyed them before they despawned, they wouldn't respawn.  If they don't need to spawn in and out, great, but probably harder to implement and still have any point to it.  If you can just send the navy in and clean them out at your convenience, its just another job for the fleet that happens to mess up your shipping lanes in an annoying way.

Basically I just want a reason to build patrol ships.
 

Offline Alsadius

  • Lieutenant
  • *******
  • Posts: 178
  • Thanked: 89 times
Re: C# Suggestions
« Reply #310 on: April 22, 2020, 09:37:36 PM »
This is more balance than anything, but the Ground Combat category has no real top end techs. It's mostly clustered around a bunch of 5k-cost techs, plus the construction rate and a couple outliers. I'd like to see some higher-end techs. Here's a few possibilities to get you started:

- The "Capability" techs can have a tree structure, perhaps with some of the higher-end ones giving multiple skills. For example, a skill that takes Mountain and Rift Valley as prereqs, and gives the unit both, at a lower cost than taking both normally.

- A tech line that reduces the cost increase for "Capability" techs.

- A tech line that increases the command ratings of your ground commanders, to let them run bigger forces.

- A tech line that lowers supply costs.

- A "Capability" tech that reduces collateral damage, and maybe one that increases it too.

- Perhaps breaking the weapon/armour ratings away from the other trees and making them separate techs.
 
The following users thanked this post: JuergenSchT

Offline Marski

  • Commander
  • *********
  • Posts: 389
  • Thanked: 139 times
Re: C# Suggestions
« Reply #311 on: April 22, 2020, 09:43:18 PM »
First off, thank you Steve for making such a magnificent work on developing the ground forces, and combat aspect of the game. I can't help but enjoy myself designing ground formations from squad-level all the way up to a division command.

However, building said formations is a very dreadful project.

Could it be possible to introduce "folders" with drop-down for "Formation Templates"? So that you can drag-and-drop formations into formations much the same way as with built ground formations. Even better; Introduce the possibility to build said formations, so that alongside the option of building each squad separately, you can queue the entire formation to be constructed.

 
The following users thanked this post: Vasious, serger, WSoxfan86

Offline JacenHan

  • Captain
  • **********
  • Posts: 454
  • Thanked: 115 times
  • Discord Username: Jacenhan
Re: C# Suggestions
« Reply #312 on: April 22, 2020, 09:54:02 PM »
It would be really nice for auto-assignment to start assigning officers without the skill corresponding to a command, once all other positions have been considered. I often find myself with both unfilled positions (usually secondary ship officers or FAC/fighter commanders) as well as dozens of unassigned officers who didn't have the matching bonus. Since officers are more likely to gain skills while on assignment (IIRC), it makes more sense to me to assign an unskilled officer and make them more likely to get that skill rather than leave the slot empty for years at a time.
 
The following users thanked this post: serger, Alsadius, JuergenSchT, WSoxfan86, Wieseltrupp

Offline SpikeTheHobbitMage

  • Bug Moderators
  • Commodore
  • ***
  • S
  • Posts: 670
  • Thanked: 159 times
Re: C# Suggestions
« Reply #313 on: April 22, 2020, 11:29:32 PM »
I'm not certain if this should go in Suggestions or Development Discussion since it is regarding the database, but there is potential for some improvement that Steve might want to consider.

Saving the 1.8.0 stock game on my machine takes around 30 seconds.  During this time the journal file is repeatedly created and destroyed with heavy disk activity.  This seems excessive for an 80MB file.

This post explains what is happening.
Quote from: Steve Walmsley link=topic=10096.msg116038#msg116038
I am using a single transaction for each table, so all rows are committed at once.

In an attempt to simulate this behaviour, I ran some tests using sqlite3's command line utility and the stock 1.8.0 database.

Test script:
Code: [Select]
# create test files, stripping query optimization data.
sqlite3 AuroraDB.db '.dump' | grep -v 'sqlite_stat' | grep -v 'ANALYZE' > dump.prime.txt

# insert DELETE FROM commands.
sed -E 's/CREATE TABLE (IF NOT EXISTS)?([^(]+)\(/DELETE FROM\2;\n\0/' < dump.prime.txt > dump.single.txt

# break into multiple transactions.
sed -E 's/(DELETE FROM|CREATE TABLE)/COMMIT;\nBEGIN IMMEDIATE;\n\0/' < dump.single.txt > dump.multi.txt

# prime temporary database
sqlite3 dump.db < dump.prime.txt

# simulate saving a game under various conditions
sqlite3 dump.db 'PRAGMA journal_mode=delete;'
time sqlite3 dump.db < dump.multi.txt
time sqlite3 dump.db < dump.single.txt

sqlite3 dump.db 'PRAGMA journal_mode=wal;'
time sqlite3 dump.db < dump.multi.txt
time sqlite3 dump.db < dump.single.txt

# clean up
rm dump.*

Results:
The closest simulation I could produce completed in 25.742 seconds.  This test was two transactions per table, one to erase followed by another to fill.
Converting to a single transaction for the entire operation reduced this to 3.489 seconds, more than 7x faster than baseline.
Multiple transactions running WAL mode completed in 8.712 seconds, nearly 3x faster than baseline.
Using both optimizations completed in only 2.876 seconds, nearly 9x faster than baseline.

3-4 seconds per save is fast enough that an auto-save option becomes viable, including save-on-exit.

Further testing (by killing Aurora while it was saving) revealed another issue:
Currently, if a save is interrupted (game or computer crash, power failure, etc), then sqlite can't correctly recover the database on the next start.  Some tables will be updated to the new state while others remain in the old state.  Because deletes and inserts are separate transactions, whichever table is being written at the time will be left blank*.  Using a single transaction per save guarantees that either the new state is completely written out or the old state can be automatically restored when Aurora is next started.

*While testing this I managed to delete every ship in the default game, and another time deleted the event history.  I'm not certain what got nuked by the other attempts, only that the database got smaller.  When restarted, Aurora reported no errors in any case.  Sadly, I never managed to accidentally Sol.  :(

Suggestions:
Use a single transaction per save so that auto-saving becomes practical.
-I recommend running all of the DELETEs before running any of the INSERTs to minimize fragmentation.
Auto-save periodically during long execution runs.
Auto-save on exit.

Two minor suggestions:
Set the page size to 4096 for around 10% faster disk performance on modern hardware.  This setting is persistent and requires no code changes.
The database could stand to be VACUUMed once in a while.  This is equivalent to the old VB "compact database" command.

If anyone is putting together a launcher like VB Aurora had, these last two are low hanging fruit.
 
The following users thanked this post: Alsadius, JuergenSchT, SultanPepper

Offline Gyrfalcon

  • Bug Moderators
  • Commander
  • ***
  • G
  • Posts: 331
  • Thanked: 199 times
Re: C# Suggestions
« Reply #314 on: April 23, 2020, 06:08:36 AM »
Would there be any interest if I set up a table with suggestions from this thread so that similar requests can be grouped together under headings? It might make it easier to both see if something that people want has been suggested already or if it's implemented or something that's caught Steve's attention.
 
The following users thanked this post: Black, SpikeTheHobbitMage, db48x, Alsadius, JuergenSchT, WSoxfan86