Author Topic: Source code? Making an Aurora 4x replica?  (Read 622 times)

0 Members and 1 Guest are viewing this topic.

Offline Kyle

  • Petty Officer
  • **
  • K
  • Posts: 29
  • Thanked: 42 times
  • Quasar4x dev
Source code? Making an Aurora 4x replica?
« on: July 19, 2018, 11:30:44 AM »
Hi.   like almost everyone else who plays this game I'm in love with it but am frustrated by the extreme delays between turns.   I'm aware Steve is working on the C# replacement but that is a long way out, and I'm also aware of the Pulsar 4x project which is also barely progressing.    Further, both projects seem to be attempting to iterate on Aurora 4x, not be faithful copies.   

What if I or someone else tried to faithfully replicate the game?  It's nearly impossible.    There's no source code available, and the exe doesn't appear to be decompilable to anything useful.   The AI logic, the formulas, the galaxy generation, are all inaccessible.    I feel like if the forums and the wiki were scoured, the database analyzed, and all the information compiled in one spot it would cover what, maybe 30% of the inaccessible material?

It's really frustrating that it's kept under lock and key by one person.    I get that it's Steve's life's work, I get that it's done in spare time for his own enjoyment and it's a gift to us that he even shared it at all.    But that's the thing, it shows he *is* a sharing person and does want his work to be exposed and enjoyed.    Has there been *any* talk of him letting someone help him?

Let me put myself in Steve's shoes, and pretend to be Steve here:  I've spent years and countless hours working on this project, iterating endlessly on it.    I have a very clear, infinitely detailed vision of what I want in the game and what I don't want in it.    I don't trust anyone, even someone with the best of intentions, to work on it because even that person will cause the game to deviate from my vision.    Additionally, collaboration adds a lot of overhead I don't have time for, in setting up a repository, setting up some standards to adhere to, communication with the collaborator, and eventually down the road there will be a disagreement or an annoying commit that I don't want.    Every programmer knows that an incredible amount of hassle can be avoided when working on a project solo.   

Further, I don't want my ideas stolen and distributed without my consent.    No one does -- but this is different.    It's more than just a project that someone else could copy and profit from.    This is my love, my hobby.    It's personal to me.    And even if there was a programmer and distributor with the best of intentions, this is all business related stuff, and I'm simply too busy and don't care enough to be bothered even thinking about it.    I have a day job, I don't need money, I don't have the time, and it just doesn't interest me.   

With that said, let me propose a hypothetical situation:  Suppose that I am a robot programmed by Steve himself, sent back in time to help with Aurora 4x.    I have no agenda, no human erratic behavior, just one specific task:  CLONE (replicate?) Aurora 4x in a modern language.    That's it.    Make absolutely no other change to its appearance or behavior.    Just make it faster.   Leave any balance issues in, leave all other gameplay intact, simply create a 1-to-1 translation into a modern and faster language.    Any improvements and iteration can be done after the replica is complete.   

Since I'm a robot programmed by future Steve, current Steve has absolutely 0 work or overhead he has to do.    I download a copy of the Aurora 4x source.    I create a C# replica that looks and behaves identically, with the only possible exception being some loss of the Windows 95 look n' feel.    I hand my new source back to Steve and dutifully self-destruct.   

How could he possibly say no to that?  What is the downside?  He can even choose not to release it.    I know it would mean he'd wasted a lot of time on his C# version, but would it really be a waste?  He could continue with his version and eventually release it as planned.    Meanwhile his loyal followers could entertain themselves with Aurora 4x The Robot Edition.   And they could play Aurora C# when it's ready.   

So the obvious argument is that the robot story is technically entirely possible by replacing the robot in the story with another human.    A human could receive the 7.  1 source, in whatever "messy room" state it's in, replicate it in a modern language, give the replica's source back to Steve and then delete it from the computer.    It's the same story.    The only issue is the human is a human, and humans are unpredictable.    A human isn't going to self-destruct, the best they can do is say "I promise not to do anything further with this project, other than play the game for my own enjoyment, until death do we part, amen"

I would of course love to be the "robot," or for him to find one.    Like Steve, I have a day job (a very nice one) so I have 0 interest in anything business related.    I have 0 desire for fame or glory, I'm just in love with a game.   

Has anyone ever talked about, or tried, just cloning the game as much as possible and then sending Steve what they have and hoping for the best?

Or just releasing it as-is just to get the general public that much closer to the goal? 

What kind of license / copyright issues would arise in doing something like that? 

If someone releases a free open source game that is an obvious copy of Aurora 4x's appearance with best-effort approximations for the under-the-hood mechanics, what happens?

What would be the reaction from Steve?
What would be the reaction from the community?
Do they get sued / shut down?

I legitimately don't know, it's not my area, I'm not even sure what questions to ask in this vein -- Did pulsar 4x have to get any permissions or anything?  Any restrictions?  Were they required to do something fundamentally different, like use their own pool of commander names or something? 

Thanks for reading.   I would love to see open discussion about any or all of these thoughts and questions from anyone. 

(About myself: I am a 38-ish software engineer in the general Chicago, Illinois area with a passion for writing and playing games.    I started playing Aurora 4x when Quill18 released his let's play series on the game in Dec 2015.    I've been lurking in the forums ever since, kinda didn't realize I didn't actually have a forum account until now, hence the new signup and first post.    I realize it's a doozy.  )
« Last Edit: July 19, 2018, 11:32:25 AM by Kyle »
 

Offline Steve Walmsley

  • Aurora Designer
  • Admiral of the Fleet
  • S
  • Posts: 7189
  • Thanked: 2230 times
    • http://www.starfireassistant.com
Re: Source code? Making an Aurora 4x replica?
« Reply #1 on: July 19, 2018, 01:31:54 PM »
Let's assume for a moment that I was happy to hand over the source code to someone else to re code in C# (or another modern language) and leave them to it without providing any help or assistance.

The first problem you run into would be reading 100,000+ lines of code and comprehending how the whole thing works without any documentation. This is after I have hacked around with it for ten years to squeeze extra things in. Also, it is partially object-oriented and partially event-driven, with some parts much more efficient than others, depending on my level of knowledge at the time that particular part of the code was written. I wrote the code and I still have to invest time in understanding some of my original logic for the C# rewrites. There are many, many aspects of Aurora that affect other parts of the program and working out those connections would be a nightmare.

Assuming you figure it all out, you then have to translate how this is written into a language that is structured in a different way. C# handles things very differently than VB6 for example. Once you start to rewrite, you realise some things don't really work that well. I assume you would fix bugs for example. What about improving the AI, or changing some algorithms to make them faster. What about adding UI features to make life easier, etc. Would you structure the code to run in memory rather than constantly accessing the DB? Could you really resist changing or adding those things that you really want to see in the program? Bear in mind, I started out 'just doing a rewrite with no major changes' and estimated it would take a 'a few months' :)

But assuming you do reconcile all that, how do you maintain your enthusiasm for doing this when it will take many months (probably years). I am at 28 months since I began and I understand (more or less) how the current program works. My advice would be to start your own game with a simpler list of initial features and then build on it over time. That way you see some progress much earlier and can maintain enthusiasm (this is what I did with the original Aurora). It would also be your creation, not a copy of someone else's. By the way, if I had truly comprehended the size of the task at the start of the rewrite, I would never have started :)

One last thing would be to consider Fermi's paradox and how it might apply to this situation.
 
The following users thanked this post: SpikeTheHobbitMage

Offline Kyle

  • Petty Officer
  • **
  • K
  • Posts: 29
  • Thanked: 42 times
  • Quasar4x dev
Re: Source code? Making an Aurora 4x replica?
« Reply #2 on: July 20, 2018, 01:59:54 PM »
Quote from: Steve Walmsley
I wrote the code and I still have to invest time in understanding some of my original logic for the C# rewrites.   
Boy do I know that feeling.     Most of the things I've ever written I don't understand anymore.   

Quote from: Steve Walmsley
Assuming you figure it all out, you then have to translate how this is written into a language that is structured in a different way.    C# handles things very differently than VB6 for example.   
Again, I totally get this.     I would never try to copy the actual code structure.     When I say replicate, I don't mean attempt to translate code line by line.     I only mean copy every aspect of the UI, and duplicate the behavior of the game deterministically.     For example, when I click this, this happens.     When a random parameter is generated, it is generated over a uniform distribution between X and Y.     I should be able to run VB6 Aurora and Replica-Aurora side by side, provide the same inputs on both programs, and see the same outcomes.     (Assuming I could somehow seed the RNG on both.   )  I don't care if one program uses bubble-sort and the other program uses merge-sort, since the outcomes are the same.   

In fact, in replica-aurora, I would chose the most efficient algorithms possible, and make as many optimizations as I could, which could very well be drastically different from how VB6 Aurora does it.     That's the whole point!  To have the same game, but not have to wait 5 minutes or more a turn.     

The VB6 code is still SUPER important.     How are galaxies, how are AI controlled swarms, invaders, precursors, and NPRs generated?  What are their decision trees?  What are the RNG parameters?  And so on.     I have no idea how I would handle that.     I wouldn't be reinventing the wheel from scratch, I'd be reinventing a combustible engine (which I know nothing about) from scratch.     Generation logic and AI logic do not depend on a language.     Why don't I write my own?  Because I like yours.     It would take years to get mine to be as good as yours, even including whatever problems you're aware of in the logic.     

So I see C# handling things very differently than VB6 as an expected and irrelevant issue.   

Quote from: Steve Walmsley
Once you start to rewrite, you realise some things don't really work that well.    I assume you would fix bugs for example.   
I would not intentionally include any bugs.     Since it's not a line-by-line translation, existing bugs shouldn't cross over.     

Quote from: Steve Walmsley
What about improving the AI .   .   .    What about adding UI features to make life easier, etc.   
Issues with the logic or UI I would keep.     Who am I to judge any perceived imperfections in a Mona Lisa as I'm replicating it? :)  Improvements can be done after the replication project is done.   

Quote from: Steve Walmsley
or changing some algorithms to make them faster.     .   .   .     Would you structure the code to run in memory rather than constantly accessing the DB
Absolutely would do that.     Again any performance improvements that do not change the deterministic behavior of the game is the whole point of such a project.   

Quote from: Steve Walmsley
Could you really resist changing or adding those things that you really want to see in the program?
Yes.   

Ever known an avid paint-by-numbers person? (My brother is one)  Or someone who builds model airplanes from a kit?  Or someone who makes replicas of art, guns, or whatever else?  Someone who built a LEGO Star Wars™ Millennium Falcon™?  There is a certain type of person that takes great pleasure in meticulously duplicating an existing piece of work that has already been designed by someone else, without ever feeling the urge to make modifications of their own.     Any modification would be considered a flaw and an error.     I duplicated one of the dialogs in Aurora4x and enjoyed it a ton, looking forward to starting in on the next one.    (See attachment)

I also feel that adding things leads to unnecessary delay.   

Quote from: Steve Walmsley
But assuming you do reconcile all that, how do you maintain your enthusiasm for doing this when it will take many months (probably years).   
Yep that's a real problem.     How one feels today is never a good indication of how one feels 2 years from now.    That's the reason for my robot thought experiment -- you could safely submit your code to the robot because a.    It doesn't get tired and b.    it's not erratic.     What would a human do?  You can never be sure.     I certainly wouldn't want to give my codebase out to someone if there was any possibility they would get tired of their original idea and then.   .   .    do what?  Post the whole thing on the internet?  Try to profit off of it?   And there is always that possibility.     Which is probably why I myself have never shared my code with anyone (not that anyone's asked).     I have a pretty sophisticated music library program, for example, which actually plays good mixes based on who is in the room and what they have rated each song.     I haven't even released it, let alone shared any code, mainly because I can't be bothered to.     

So how do you get any guarantee that someone you shared with is genuine, and wont just abandon their project and do who knows what with your code?  You don't.     I don't know how to reconcile that.     (This is why they need to hurry up and invent robotic friends!) Anyway, typically these concerns are dealt with using collateral, a refundable deposit, a payment, a legal contract, an NDA, employment, or any combination of the above.     Are you actually after something like that?

Quote from: Steve Walmsley
One last thing would be to consider Fermi's paradox and how it might apply to this situation.   
Yes there are 70 sextillion stars in the observable universe.     But how many Aurora 4x enthusiasts with access to the source?  1?  So I don't see how it applies.     By the way, obviously the source itself would be irrelevant if you published a complete flowchart with every formula and decision tree, but that's almost as much work as rewriting the whole game, which you're already doing.   
« Last Edit: July 20, 2018, 02:03:50 PM by Kyle »
 

Offline Steve Walmsley

  • Aurora Designer
  • Admiral of the Fleet
  • S
  • Posts: 7189
  • Thanked: 2230 times
    • http://www.starfireassistant.com
Re: Source code? Making an Aurora 4x replica?
« Reply #3 on: July 20, 2018, 02:52:58 PM »
Apologies, I didn't mean to imply that I was prepared to hand out source code. My objective was to say, don't be bothered about not having the source code, because the task would be extremely difficult anyway. Your screenshot shows a very good representation of the game window UI, but your satisfaction comes from achieving that yourself. My advice is to build your own game. Start with something relatively straightforward and achievable and then build on that.

I created a fairly complex program called Starfire Assistant, which replicated the rules of a pen and paper game. However, when I moved on from that to building my own game with my own design, it was far more rewarding.

In terms of me not trusting anyone, or needing some form of reassurance, that isn't the reason for not handing out the source code. There are plenty of people I know who are excellent programmers who could potentially help with writing Aurora (and I would trust them to do so). In fact, I have sought advice from them in the past, or on this forum, when I am stumped by something. However, Aurora is my own creation from which I derive a lot of pleasure and satisfaction. In fact, seeing my ideas come to life (along with suggestions from others) is a huge part of the fun. If anyone else was involved, even with the very best of intentions, that very rewarding experience of building something with my own hands would be diminished.

That's also one of the reasons why I never bother about trying to sell Aurora. Earning money (beyond a certain level of income) is a part of a process to get the things that you believe will make you happy. If had a lot more money I would still be spending my time tinkering with Aurora, so I skipped the worrying about money part and went straight to having the fun :)

The comment about Fermi was to consider how many excellent programmers there are in the world population of seven billion and how many games there are like Aurora. This task is not about programming ability.
« Last Edit: July 20, 2018, 03:06:59 PM by Steve Walmsley »
 
The following users thanked this post: SpikeTheHobbitMage

Offline Kyle

  • Petty Officer
  • **
  • K
  • Posts: 29
  • Thanked: 42 times
  • Quasar4x dev
Re: Source code? Making an Aurora 4x replica?
« Reply #4 on: July 21, 2018, 01:37:04 PM »
Thanks for the replies and I hear what you're saying :)

So, I know that you want me to make something original, but would you be outright opposed to me releasing a look-alike?  Without the source it will be very much original under the hood.   Obviously that would be insanely far in the future and your C# version would be ready before then, but I'm having fun so far :)  Would you be willing to help with a few formulas here and there knowing what I'm up to?  I will of course check the internets first.   For example, the google machine helped me with the formula for industrial population in the create-new-game dialog.  (see attached!)
 

Offline Steve Walmsley

  • Aurora Designer
  • Admiral of the Fleet
  • S
  • Posts: 7189
  • Thanked: 2230 times
    • http://www.starfireassistant.com
Re: Source code? Making an Aurora 4x replica?
« Reply #5 on: July 21, 2018, 03:05:45 PM »
Thanks for the replies and I hear what you're saying :)

So, I know that you want me to make something original, but would you be outright opposed to me releasing a look-alike?  Without the source it will be very much original under the hood.   Obviously that would be insanely far in the future and your C# version would be ready before then, but I'm having fun so far :)  Would you be willing to help with a few formulas here and there knowing what I'm up to?  I will of course check the internets first.   For example, the google machine helped me with the formula for industrial population in the create-new-game dialog.  (see attached!)

I have no problem with you creating something on the same lines as Aurora and happy to help with formulas if you need them. Having fun is what will keep you motivated !
 
The following users thanked this post: SpikeTheHobbitMage, Kyle

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54