Old player here. My question is: what'd be the benefits of the C# conversion? Stability and performance, maybe?
I realize most of the game's still in the Access database, so improvement might be limited (speaking out of ignorance here). Still, what can we look forward to?
Performance is main advantage, although there are a few others. I've just ordered a new PC with Windows 10 (currently on 7) so time is catching up with VB6
. Developing past the current functionality will be a lot easier in a modern language. Performance should be enhanced because everything is being loaded at start-up and the game is run entirely in RAM. So far I am loading all system bodies, survey results, ships, fleets, classes, missiles, etc into objects in less than 10 seconds. My game has 500 systems, 60,000 system bodies, 100,000 system body survey records, 2300 ships, etc. so most games will be a faster load.
Simply swapping systems in the tactical map is noticeably improved. Changing to the Alpha Centauri system in VB6 has a delay of perhaps 1-2 seconds. In C# it is instant. If you select the system dropdown and hold the down arrow, it looks like the end of Wargames
Because windows forms has advanced a lot since VB6, the window design is a lot cleaner and I can start from scratch in terms of deciding where to put everything, rather than squeezing more and more things into an existing layout.
Database-wise I am currently using Access so I can run the same database in both C# and VB6 to compare results. However, I have set the data access code up to allow me to easily change DBs so I will move away from Access once the program is close to completion. Probably SQL Server as I am very familiar with it. I've been considering how to handle the saving side and I am leaning toward creating complete game save files rather than updating a single file, so you will have multiple save positions in the same game.
Another advantage of C# is that it allows multi-threading, which may help with sensor updates as I can run several systems simultaneously. I won't use multi-threading just for the sake of it because I understand you can get yourself into trouble fairly easily
but I'll play around with it and see if it makes a significant difference.
BTW For those familiar with C#, I have found one of the major advantages over VB6 (beyond the obvious advantages) is using LINQ and Lambda expressions to retrieve data from collections - very useful and powerful.