Author Topic: Quasar4x - An Aurora4x VB6 clone  (Read 161187 times)

0 Members and 2 Guests are viewing this topic.

Offline Kyle (OP)

  • Moderator
  • Captain
  • *****
  • K
  • Posts: 472
  • Thanked: 973 times
  • Quasar4x dev
Quasar4x - An Aurora4x VB6 clone
« on: August 17, 2018, 12:42:59 PM »
State of the Game, as of 2021 July 27th

Quasar4x can now be considered a fully playable game, as all the features including AI are in place now.  Star Swarm was recently added. The only obviously missing feature is Invaders.  My original goal has been met, the game is fully playable and feature complete.  I continue to add QoL features and make fixes.  Further testing and fixing will always be needed.

You can download the game here: https://ozer0.itch.io/quasar4x



Original Post:

As I mentioned in this post, I'm hoping to create a replica of Aurora4x that functionally behaves identically to the original version, as deterministically as possible. I've made progress since my initial post and would like to share some screenshots now, as well as a bit of info about my project.

Here are my objectives for the finished product:

A REPLICA As mentioned already, it should behave identically to the original version.  This means I should be able to load up Aurora4x and Quasar4x side by side, on identical database snapshots, and every action I take should have the same effect in both games.  Further, every control, every button, every piece of the UI should be present in the same location so that an experienced Aurora4x player will feel right at home and know where everything is and what everything does. The database is identical.  It contains all the same pregenerated names for systems, ships, commanders, and so on.

With all that said, note that I am not matching Aurora4x pixel for pixel.  I use a larger font wherever possible and a dark theme for eye comfort. The system map has a slight control layout adjustment but is still largely the same. Finally, and I know this will be a dealbreaker for many, but I've reverted to American English spelling.  I am not matching action for action either when a fix is necessary, for example in A4X searching by two traits in the Search Leaders tool doesn't seem to work correctly.  In Quasar4x, that is fixed, and stats are displayed for both abilities, not just ability A. It's hard to explain why I feel this is not breaking the don't-change-anything spirit of the project, but hopefully you see the reasoning behind it. 

FAST The primary inspiration for this project is to improve upon the incredibly slow speeds that turns in Aurora4x can take when things start to really get going.  I hope to improve turn times by 10x or more through in-memory database caching, parallel processing, and C++ optimizations where profiling suggests it's needed.  And of course by not using VB6.

PORTABLE The engine I use can compile for Windows, Linux, Mac, and tablets.  I use all of these regularly and I will definitely make sure they are all supported.  It should also be a bit more portable and future-proof than VB6.


FAQ:

Q. What engine and why?
A. Godot.  It's portable and open source.  It is well optimized for GUI intensive applications, as compared to Unity which has slow and limited UI capabilities (16k maximum lines in a text window last I checked), and it renders everything every frame.  Godot is simple and straightforward, which is perfect for a game like this.  And Godot uses GDScript, a forgiving language that allows for quite rapid development.

Q. GDScript?  But... But... C#!
A. Never fear, this is another awesome thing about Godot.  It allows you to write any part of the program you desire in C# or C++.  So GDScript will be used where possible, and C++ will be used for intensive calculations where speed has become an issue.

Q. What database platform?
A. SQLite.  Its open source, portable, and quite fast if used correctly (Group multiple inserts and updates in single transaction, for example).  It's super simple and straightforward, perfect for this kind of project and for fast development in general.

Q. Why not wait for Steve's C# version?
A. I have been, for years!  But I'm impatient!  Also, I am predicting Quasar4x will be closer to Aurora4x than Steve's C# version will be. I believe he has improvements and new features in mind, whereas I want to remake a classic that looks and feels like the original.  Also, it will be nice to have a project I can work on myself.  If and when Steve releases A4X C#, I'll continue with my project because I feel the C# version will be different enough to feel like Q4X will still be worth having around.

Q. Do you really think you can copy all the AI logic that goes on behind the scenes?
A. Perfectly? Nope, probably not even close, sadly, unless Steve changes his mind and gives me a peek.  I do have a process to ensure Quasar4x replicates Aurora4x's behavior however, which can be applied to the AI logic.  I take a snapshot of the database before and after I take a turn in Aurora4x and use a script to analyze what changed. I do the same with the UI controls as well.  Finally, when I run out of clues as to how the AI thinks, I guess I'll have to come up with something original, which can help keep the project fun!

Q. Are you gonna get tired of the project and give up?
A. Not gonna lie, it could always happen.  I might even give up tomorrow!  I'm a pretty determined and motivated person in general though.  It helps that this is a project I've been wanting to do for years now, and every time I thought about it, I had no doubts it was just what I wanted to do.  I play lots of Steam games so I shouldn't get burned out too easily on this.

Q. Do you have any collaborators?  Want any?
A. Nope, and nope, not for now anyway.  I'm OCD about everything being how I want it, so if something doesn't look like I made it myself, I'd probably ignore it, or at best copy paste parts of it in. If Steve wants to collaborate of course I would do that, but currently he isn't interested.  I'm fully prepared to be solo til the end and am fine with that!  This is a hobby project and so far I'm enjoying it.

Q. Why are you so dead set on making an exact replica with 0 enhancements?
A. I like Aurora4x pretty much exactly the way it is.  I don't think there's a thing I want to change. I think a lot of people are probably 95% happy with the existing game as well, and I doubt nearly that many would agree on a particular change, or that the change would actually be that good. Statistically, most ideas turn out to be bad. Also, adding embellishments can lead to ever increasing project time as the developer gets lost in the weeds.  An "exact replica" is a concise, finite, self explanatory, and reachable goal. 

Q. So, an Aurora4x clone.  Are you really not going to add anything more?
A. I do have a few pie-in-the-sky dreams of adding multiplayer and adding ever increasing depth to the AI.  I've always kind of wanted to make a game with computer components that seem human-like -- not in the species they are in game, but in how they play the game, as if another human were controlling their empire.  But for now, those are all just maybes.  I'm willing to bet by the time Quasar4x is completed I'll want a good long break.

Q. Isn't this.. an insanely complex and daunting task?
A. Yep

Q. Hows your progress?
A. I'll try to keep this thread updated.

Q. Can I try it?
A. Sure. https://ozer0.itch.io/quasar4x.  Be warned, the game may still have bugs and crashes.
« Last Edit: July 27, 2021, 07:44:04 PM by Kyle »
 

Offline Kyle (OP)

  • Moderator
  • Captain
  • *****
  • K
  • Posts: 472
  • Thanked: 973 times
  • Quasar4x dev
Re: Quasar4x - An early look at an Aurora4x clone in the works
« Reply #1 on: August 17, 2018, 12:43:16 PM »
Game Details:
Off-Topic: show


Create New Game:
Off-Topic: show


System Map:


System Map - Body Info:
Off-Topic: show


System Map - Sensors:
Off-Topic: show


System Map - All Bodies:
Off-Topic: show


Colony Summary:
Off-Topic: show


Colony Summary - Environment:
Off-Topic: show


Colony Summary - Mining:
Off-Topic: show


Colony Summary - Research:
Off-Topic: show


Colony Summary - Ground Units:
Off-Topic: show


Colony Summary - Teams:
Off-Topic: show


Colony Summary - Industry:
Off-Topic: show


Task Forces:
Off-Topic: show


Class Design:
Off-Topic: show


Ships:
Off-Topic: show


Fleet Orders:
Off-Topic: show


Commanders:
Off-Topic: show



« Last Edit: November 02, 2018, 01:15:15 PM by Kyle »
 
The following users thanked this post: s20dan, dag0net, Xoiwoaon

Offline Kyle (OP)

  • Moderator
  • Captain
  • *****
  • K
  • Posts: 472
  • Thanked: 973 times
  • Quasar4x dev
Re: Quasar4x - An early look at an Aurora4x clone in the works
« Reply #2 on: August 17, 2018, 12:43:26 PM »
Misc info about the screenshots:
- If you see '?'s scattered around, those are just my little TODO reminders to show that I have some more work to do on the immediate code. 
- Most buttons don't do anything. I am in the process of UI design and populating controls with data from the database
- I don't show them all but every tab in every window is fully designed!
- Quite a lot is functional.  For example on the leaders page, it really pulls from the database and displays all the info, and the info changes when you click a different rank or different officer.  The ability dropdowns in the search panel work and it displays leaders ordered by their stats, with your requested filters applied.
- The system map is very functional.  You can zoom in, out, pan, and most of the controls that dictate what is displayed are functional.



« Last Edit: August 17, 2018, 01:27:11 PM by Kyle »
 

Offline MasonMac

  • Registered
  • Warrant Officer, Class 1
  • *****
  • M
  • Posts: 93
  • Thanked: 31 times
Re: Quasar4x - An early look at an Aurora4x clone in the works
« Reply #3 on: August 17, 2018, 05:03:49 PM »
Interesting project, hopefully it does get more attention. The source code being available may also mean that we get mods, yeet.
 

Offline MarcAFK

  • Vice Admiral
  • **********
  • Posts: 2005
  • Thanked: 134 times
  • ...it's so simple an idiot could have devised it..
Re: Quasar4x - An early look at an Aurora4x clone in the works
« Reply #4 on: August 18, 2018, 01:01:42 AM »
Modding Aurora has always been a dream of mine, mostly I want a way of tweaking the mechanics to work as a modern military simulator. However.... There might be other engines more suited for it :p
" Why is this godforsaken hellhole worth dying for? "
". . .  We know nothing about them, their language, their history or what they look like.  But we can assume this.  They stand for everything we don't stand for.  Also they told me you guys look like dorks. "
"Stop exploding, you cowards.  "
 

Offline Kyle (OP)

  • Moderator
  • Captain
  • *****
  • K
  • Posts: 472
  • Thanked: 973 times
  • Quasar4x dev
Re: Quasar4x - An early look at an Aurora4x clone in the works
« Reply #5 on: August 25, 2018, 09:26:47 PM »
Progress update 2018 Aug. 25!

I've completed the UI layout for most if not all of the windows in the game, setting up the foundation to go back through them adding functionality.  I plan on making a couple passes through each of them, making them more functional with each pass. (Generally, information display and other low-impact functionalities will come first)

I've completed my first pass on the System View window.  Everything is calculated "for real", with just a couple exceptions (Star Type, Jump Point Survey details, tabs for 2nd through 4th stars)



The Jump points tab doesn't have much to show right now.  Here is the hierarchy tab (fully functional):

Off-Topic: show


The options tab (fully functional):

Off-Topic: show


And the System Graphic tab (functional, and this was fun to code, a rare opportunity for graphics!):



And now, the part that really excites me:
I've gotten a first glimpse of what Quasar's exact speed improvements will be over Aurora4x, and I'm not disappointed!

Take a look at this:



Total time to load Quasar4x System View, which involves pulling all the star and system body data, doing calculations such as colony cost, formatting, and displaying: 

464 ms

For reference, here's Aurora4x, doing the same thing, on an identical database (literally the same schema and the same data in every table):



5720 ms

Woohoo!!  Well over my arbitrary goal of a 10x improvement!

Changing options is much faster as well:

A4x:



Q4x:





Musings on floating point calculations:

I've noticed that the rounding and general floating point calculations in Aurora4x can be really wacky.  For example, in the Auror4x System View, Mars is shown to have a mean orbital distance of 229m km, when Mars' actual orbital distance is 227.9m km.  This may or may not just be limited to the System View, but it led me to realize something very discouraging:  I had originally said I wanted my game to behave deterministically the same as Aurora4x and I know now that that will never quite happen because of the dreaded... Floating Point Calculations!  I'll never be able to match Godot's floating point math processor with VB6's, so differences are going to crop up everywhere and propagate like crazy.  Ships will deliver their goods a pulse earlier or later, causing economy and timing to skew, and who knows what else.  I need to be able to run Q4X and A4X side by side and make sure what happens in A4X happens in Q4X, but with floating point skew that wont be possible for more than a turn or two.  As far as I can figure, the best I will be able to do while I'm developing is to refresh the Quasar4x database from Aurora's database after every single turn to keep things in sync.  Ah well.
« Last Edit: September 11, 2018, 04:41:03 PM by Kyle »
 

Offline Kyle (OP)

  • Moderator
  • Captain
  • *****
  • K
  • Posts: 472
  • Thanked: 973 times
  • Quasar4x dev
Re: Quasar4x - An early look at an Aurora4x clone in the works
« Reply #6 on: August 27, 2018, 12:22:42 PM »
Here is the Race details page: (as usual the data and images are pulled from the db and processed as needed, not just typed in as placeholders)

Off-Topic: show


Musings of the day:

Since the database is identical in structure and usage to Aurora4x, one will be able to import their existing Aurora4x games into Quasar4x.  Initially one would need to send me the Stevefire.mdb file and I'd send them back the converted quasar4x.sqlite file, but some form of automated service could feasibly be put into place.  (I already the conversion scripted.)

And since the final database structure and usage is already known from the very beginning of my project, that means as soon as I get Quasar4x into a skeletal playable state, sans many features still on the todo list, one could theoretically start playing the game and never have to worry about a "wipe" because the structure and content of the "save game" (database) is actually already in its final form. 
« Last Edit: November 02, 2018, 01:16:04 PM by Kyle »
 
The following users thanked this post: King-Salomon

Offline Kyle (OP)

  • Moderator
  • Captain
  • *****
  • K
  • Posts: 472
  • Thanked: 973 times
  • Quasar4x dev
Re: Quasar4x - An early look at an Aurora4x clone in the works
« Reply #7 on: September 05, 2018, 02:07:28 PM »
Progress update!  2015-Sep-05



Screenshots are going to be progressively less interesting as development continues given that much of Aurora is plain UI and behind the scenes calculation.  Nonetheless, development does indeed continue at full throttle!  It's hard to tell from the screenshot that much has been done since the last update but in fact this is a pretty significant milestone. 

Much of my work since my last update has been on revamping the "refresh" methodology, to ensure that all windows are persistantly showing up-to-date information.  My goal is to make the "Refresh All" button useless, and instead have all the data up to date while maintaining fast UI responsiveness.  This was time consuming because I had to fundamentally change the code for almost every functional control in the game.  But now I have a rock-solid methodology in place and should hopefully never have to do that again!™

After I posted my last update, I made a sudden change in my direction.  Rather than flesh out every single UI control in the game to function as completely as possible without advancing time, I wanted to dive into temporal space and start emulating Aurora as time passes.  What's the point of finishing the UI if you're eventually going to find out that the end-turn code makes you want to jump out the window?

So now I have pulses and end-turn pulses implemented, with both automatic and manual sub pulse lengths.  And I can proudly say that Q4X behaves identically to A4X for the first 400000 seconds!  As in, the same database updates occur in both games. Without alien races or user input, it's actually not much at all, but that's good!  It makes for a very easy controlled environment from which to build upon.  The next step is to emulate the first production cycle and the cycles beyond that.  Beyond that, development iterates on what is already in place.  For example, currently emulation is only accurate if the user does not change anything and there are no alien races.  What would remain is to gradually add support for user input, little by little.  That said, the task overall is obviously monumentally complex and I proceed one step at a time.

Regarding source: I had originally announced this would be open source. My reasoning was to make sure nobody felt I was trying to personally gain anything from this project.  I've since discussed with Steve and he is fine with going closed source (again, as long as nobody is gaining any benefit from that, monetary or otherwise)  I've since changed to a closed source philosophy primarily because I feel more relaxed that way and I feel the game is probably going to be fun when its behavior is more of a black box.  I may revisit sourcing again down the road if I feel it might help with community bug reports.  Moddability remains on my road map but is in the very distant future.

Musings on performance: I'm not too familiar with VB6 but I don't believe it has good support for processing while waiting for user input. I forgot to mention in my OP that another huge optimization I will be able to have is allowing expensive calculations such as path finding run while the user is navigating the UI assigning orders and so on.

The playable prototype is now located here https://ozer0.itch.io/quasar4x and I'll update the OP as well.  As I said in the OP, it's the emptiest of prototypes, but I like to accompany my forum updates with something tangible.

 

Offline JacenHan

  • Captain
  • **********
  • Posts: 454
  • Thanked: 115 times
  • Discord Username: Jacenhan
Re: Quasar4x - An early look at an Aurora4x clone in the works
« Reply #8 on: September 05, 2018, 02:16:21 PM »
It seems like you are making a lot of progress. I'm looking forward to more updates!

Edit: Trying to start the prototype drops me these errors:
Off-Topic: show

« Last Edit: September 05, 2018, 02:31:29 PM by JacenHan »
 

Offline Kyle (OP)

  • Moderator
  • Captain
  • *****
  • K
  • Posts: 472
  • Thanked: 973 times
  • Quasar4x dev
Re: Quasar4x - An early look at an Aurora4x clone in the works
« Reply #9 on: September 05, 2018, 03:55:09 PM »
Should be fixed, thanks for letting me know!
 

Offline JacenHan

  • Captain
  • **********
  • Posts: 454
  • Thanked: 115 times
  • Discord Username: Jacenhan
Re: Quasar4x - An early look at an Aurora4x clone in the works
« Reply #10 on: September 05, 2018, 04:28:32 PM »
It works great now, thanks!
 

Offline Kyle (OP)

  • Moderator
  • Captain
  • *****
  • K
  • Posts: 472
  • Thanked: 973 times
  • Quasar4x dev
Re: Quasar4x - An early look at an Aurora4x clone in the works
« Reply #11 on: September 07, 2018, 04:49:56 PM »
Progress Update 2018-09-07:

Boom :)



- This is realtime, not a timelapse
- Moons and Trojan Asteroids are computed as well
- Overlapping bodies are displayed, otherwise it's much slower. Should be easy to optimize that eventually.
- Yes, this reads, updates, and writes to disk every frame.  Praise sqlite. 
- The download of this prototype has been updated.

Onward!
 
The following users thanked this post: ExChairman, El Pip, bro918, SerBeardian

Offline MasonMac

  • Registered
  • Warrant Officer, Class 1
  • *****
  • M
  • Posts: 93
  • Thanked: 31 times
Re: Quasar4x - An early look at an Aurora4x clone in the works
« Reply #12 on: September 07, 2018, 05:23:24 PM »
Awesome!
 

Offline SerBeardian

  • Warrant Officer, Class 1
  • *****
  • Posts: 75
  • Thanked: 37 times
Re: Quasar4x - An early look at an Aurora4x clone in the works
« Reply #13 on: September 07, 2018, 05:30:41 PM »
So, this is just plain amazing.
Definitely looking forward to this.

Also looking forward to having all the broken features in Aurora fixed, like missile tracking bonus, laser warheads, the uselesness of orbital habitats at their actual job...

Also, if that wasn't you who posted the lovely spinning video on the Discord, you have a special channel ready for your (re)creation. :)
 

Offline procdrone

  • Leading Rate
  • *
  • Posts: 14
  • Thanked: 8 times
Re: Quasar4x - An early look at an Aurora4x clone in the works
« Reply #14 on: September 07, 2018, 07:21:18 PM »
I just discovered it, and already fell in love with it.  Keep it coming!