Author Topic: Aurora II  (Read 158337 times)

0 Members and 1 Guest are viewing this topic.

Offline MrBear

  • Pulsar 4x Dev
  • Leading Rate
  • *
  • M
  • Posts: 8
Re: Aurora II
« Reply #180 on: July 25, 2012, 10:27:58 AM »
I for one would love to do a complete rewrite of Aurora into (probably) C#.

Initially I'd propose a straight rewrite with no changes to any of the underlying functionality so that from the point of view of a user there would be no difference between the VB application and the C# one (other than perhaps fixing any obvious bugs which might be found along the way).  With that done, I'd then want to look at making it compile and run under Mono (which would have the side effect of making it possible to run on Linux and OS X) - to do that I would imagine that the largest change would be moving from Access to a database like SQLite (cross platform, good performance and pretty much ideal for applications which don't use a huge amount of data and which only need a database to store their own data.  It's also got fairly mature tools available to work with the databases. ).  My gut feeling is that there wouldn't need to be too many other non-trivial changes given that Aurora is based on fairly old technology at the moment and Mono's weak points tend to be the newer features in dotNet. 

From there, I'd look at refactoring the codebase and making sure it's as clean and modularized as possible - some prodding and poking of the current executable suggests that there's a fair amount of scope for refactoring.  With that done and moving to something closer to an MVC or MVVC paradigm, it would be a lot easier to rework the GUI to make it resolution aware and more flexible, as well as being able to achieve the goals in Steve's original post like making it multi-threaded and able to run in real-time.

The only sticking point is that to get the initial and most important stage done, you'd really need access to the current source code to use as the reference version and to test against.  On the upside, with access to the source, I'd estimate that the initial rewrite could be done in a matter of weeks and almost certainly within the one to two month time frame (especially with the help of some nifty code translation tools and code generation tools), and it's a project I'd happily take on if I had access to the source - I'm going to have a surplus of free time over the Olympics!

For what it's worth, my background is in writing financial software in C# and C++.  I've worked for banks and hedge funds predominantly on trading systems, pricing/analytics systems and risk systems - all of which are the sort of complex, highly data driven (and data presentation driven) applications which Aurora is surprisingly akin to!

 

Offline sublight

  • Pulsar 4x Dev
  • Captain
  • *
  • s
  • Posts: 592
  • Thanked: 17 times
Re: Aurora II
« Reply #181 on: July 27, 2012, 05:46:01 PM »
I'll add my name to the list of interested potential contributors.

I'm a newly minted profesional programer (just started work after graduating last May) with previous work experience in C and C++. My talents probably sit with algorithms and code-tracing. I've never used C#, but I hear it's easy to learn if you're already fluent with C. Alas, my knowledge of databases is zilch: so I can't contribute much there.

My suspicion is that we'll never see Steve's code, so anything we make will be a best-effort duplication of the user interface with a cleanly written fan-interpretation of underlying mechanics. A perfect mechanics match isn't going to be critical if we plan on including player-requested features like user-made AI-scripts. Oh, and +1 vote to anything that can be ported to Linux, OSX, and the other Unix flavors.
 

Offline Antagonist

  • Pulsar 4x Dev
  • Sub-Lieutenant
  • *
  • A
  • Posts: 124
Re: Aurora II
« Reply #182 on: July 29, 2012, 05:58:14 AM »
Glad to see the interest.

@MrBear: It does sound like you know your stuff and while it sounds like a good way of going about a port, we cannot really expect to get our hands on the source code, thus any project will likely be from the ground up.  Possibly a rewrite using the current ideas and structure and just placing it over to a new C# project directly, or actually redesigning and rethinking a lot of what Steve has been doing, at least interface and flow-wise. But yeah, the assumption atm is any such project will have to be from scratch.

Your experience is definitely relevant, Aurora has more in common with a spreadsheet program or accounting package than many other games at the moment.

I like the idea of keeping it MVC or MVVM. That is how most apps should be programmed these days. I would prefer the WPF/Entity Framework approach, but that has the disadvantage that mono has no chance of porting it to linux or osx. I guess winforms and nHibernate is doable, but I'll have to look up some of that. I do insist on a object<->database approach though rather than working directly with DataTables or something.

As for my own side project, its going well. Generates around 9-13 planets per run around random stars, though in this case out to about 80AU which I need to look at (pluto is max 49AU out).  Considering overhauling it AGAIN based on some paper I found detailing water density over a protodisk, but still progress on somewhat realistic planets.
 

Offline MrBear

  • Pulsar 4x Dev
  • Leading Rate
  • *
  • M
  • Posts: 8
Re: Aurora II
« Reply #183 on: July 29, 2012, 05:17:24 PM »
A certain amount (well, really quite a lot) of reverse engineering could be done to determine mechanics if need be.  However, that does move into what I would consider a bit of a grey area - while mechanics per-se cannot be protected, taking the steps of decompiling someone's code is an intrusion onto what I might consider to be their property.  I've got a long going debate between the "Information Wants To Be Free" ideology (which I suppose is a fairly liberatarian ideology) and wanting copyright to be respected.

I agree that some sort of ORM is required, and it would onerous to tackle such a project without.  I'm more familiar with LINQ to SQL than I am nHibernate though and I've had a fair amount of experience with regenerating mappings therein - it's a pain in the ass, but totally doable.
 

Offline Antagonist

  • Pulsar 4x Dev
  • Sub-Lieutenant
  • *
  • A
  • Posts: 124
Re: Aurora II
« Reply #184 on: July 29, 2012, 07:01:32 PM »
I don't really think there is ANY need for decompiling Steve's code for mechanics... it is all very well documented on the wiki and this forum with posted well known formulas for practically everything. We don't have the code and algorithms for say timing and how to make say construction and travel invariant whatever timesteps are used, but that can be developed from scratch.  Tho yes, would be development and not porting, but a lot of the original Aurora needs to be updated anyway.

By regenerating mappings I assume you mean working with nhibernate XML? Screw that. Take a look at fluent nhiberante, its XML-less inline mapping in the C# code. Since we're creating app first and database second, instead of creating an app that works with a (legacy) database, a lot more options open up and it becomes much easier.

LINQ to SQL isn't a terrible option though, it works. LINQ to XML has even been mentioned earlier in this thread, but I am more comfortable with a database engine than a flat file, even if its a very thin engine like SQL CE or something.
 

Offline Antagonist

  • Pulsar 4x Dev
  • Sub-Lieutenant
  • *
  • A
  • Posts: 124
Re: Aurora II
« Reply #185 on: August 03, 2012, 03:55:01 AM »
If anyone is willing to start a repository I have code I am willing to contribute.  As stated previously I simply do not wish the title or responsibility of 'lead' anything.

Git is all the rage these days but in my view it's not as easy to work with on windows, which I assume will be the primary development platform. SVN is an oldie but goodie, just not as good at conflict resolution. My preferred option I use for all my personal projects atm happens to be Mercurial HG, which has a nice Tortoise implementation and good hosting at bitbucket.

For basic solution structure I suggest that keeping with the MVVM approach means at least splitting it into two projects, a lib which contains entities, database setup, game logic... and a frontend project which contains the forms dialog and interaction logic. Splitting it this way would make it easier to allow alternate frontends to be made available (web frontend anyone?), without creating any significant increase in overhead... if proper patterns are followed.

Assuming that access to source is not available makes proper structure decisions at this stage somewhat important.

And then direction I guess... options are an Aurora remake sequal or something simply inspired by it.

I wouldn't have any issues with anyone creating an Aurora-style game. In fact, I would very likely play it :)

This solves most my issues I may have had with detracting from Steve's work by creating a fanwork. This isn't a quick conversion project, but much of the gameplay design we've already seen in action and we know what works, so less risky than an original game.
 

Offline Beersatron

  • Gold Supporter
  • Rear Admiral
  • *****
  • Posts: 996
  • Thanked: 7 times
  • Gold Supporter Gold Supporter : Support the forums with a Gold subscription
Re: Aurora II
« Reply #186 on: August 03, 2012, 10:47:38 AM »
If anyone is willing to start a repository I have code I am willing to contribute.  As stated previously I simply do not wish the title or responsibility of 'lead' anything.

Git is all the rage these days but in my view it's not as easy to work with on windows, which I assume will be the primary development platform. SVN is an oldie but goodie, just not as good at conflict resolution. My preferred option I use for all my personal projects atm happens to be Mercurial HG, which has a nice Tortoise implementation and good hosting at bitbucket.

For basic solution structure I suggest that keeping with the MVVM approach means at least splitting it into two projects, a lib which contains entities, database setup, game logic... and a frontend project which contains the forms dialog and interaction logic. Splitting it this way would make it easier to allow alternate frontends to be made available (web frontend anyone?), without creating any significant increase in overhead... if proper patterns are followed.

Assuming that access to source is not available makes proper structure decisions at this stage somewhat important.

And then direction I guess... options are an Aurora remake sequal or something simply inspired by it.

This solves most my issues I may have had with detracting from Steve's work by creating a fanwork. This isn't a quick conversion project, but much of the gameplay design we've already seen in action and we know what works, so less risky than an original game.

Out of curiosity, what languages and development suites are you planning on using? I do not have the time to help right now, too much work on at the moment but I have always wanted to try another language. I do web applications in Coldfusion.
 

Offline Antagonist

  • Pulsar 4x Dev
  • Sub-Lieutenant
  • *
  • A
  • Posts: 124
Re: Aurora II
« Reply #187 on: August 03, 2012, 01:57:50 PM »
Language? C#. Original is in VB, C# is just... better in every way. Don't want low level like C/C++, and I personally dislike Java. C# is also the language Steve himself has/is/prototyping the official Aurora II that is on hold atm.

IDE for C# projects? Esp using .NET stuff? Visual Studio 2010.  Doesn't need to be paid, Express version works just as well.  There is ah SharpDevelop and other stuff I think? Just havn't worked with it too much.

If serious about multi-platform should look at CMake (I THINK it has C# support?) and so, but I would seriously advise against it at least until later.
 

Offline sublight

  • Pulsar 4x Dev
  • Captain
  • *
  • s
  • Posts: 592
  • Thanked: 17 times
Re: Aurora II
« Reply #188 on: August 07, 2012, 07:52:54 AM »
Ok, I'll temporarily assume the title 'Project Leader'. I might be stereotypical middle management at first, but I'm a fast learner and will be making my own code contributions soon enough.

Direction:
Short Term: I'd suggest we start with a shared google document or coordinate a chat session to clarify expectations and objectives. Or keep posting here for full community feedback.
Midterm: Create an Aurora-light fanwork working game skeleton.
Longterm: Add even more depth than the current Aurora, and enough optional AI-automation that players don't have to learn it all at once and can delegate the bits they don't find interesting.
Flavor: Lets not try for a perfect copy, but add at least one twist of our own. Sort of like Newtonian vs Original. Close enough that the fandom origin is clear, different enough not to compete directly.

Language: C# (Mono), Gtk# .net binding.
Java is very multi-platform friendly, but if we aren't in a rush I think we can do better in a C-varient.

Multiplatform: Yes. See above.
With three developers (Antagonist, me, McBear) the vote is 2:1 for multi-platform. I've used CMake before, but wasn't particularly impressed. McBear's Mono suggestion looks much better.

IDE: Your choice, but MonoDevelop looks interesting if anyone doesn't have a favorite.

Repository: If none object we'll give Mercurial a shot. The only one I've used in development has been Perforce, so it sounds like Antagonist has a lot more experience there. Give me a few days to get comfortable and I'll start a repository.
 

Offline Erik L

  • Administrator
  • Admiral of the Fleet
  • *****
  • Posts: 5654
  • Thanked: 366 times
  • Forum Admin
  • Discord Username: icehawke
  • 2020 Supporter 2020 Supporter : Donate for 2020
    2022 Supporter 2022 Supporter : Donate for 2022
    Gold Supporter Gold Supporter : Support the forums with a Gold subscription
    2021 Supporter 2021 Supporter : Donate for 2021
Re: Aurora II
« Reply #189 on: August 07, 2012, 07:59:28 AM »
If you wish, I can add a forum/section here for you. And create locked down sections for private developer talk.

Offline Antagonist

  • Pulsar 4x Dev
  • Sub-Lieutenant
  • *
  • A
  • Posts: 124
Re: Aurora II
« Reply #190 on: August 07, 2012, 08:55:48 AM »
Logistics:
I would be fine with a shared document somewhere to help plan, though I prefer more realtime communication which isn't always possible. I prefer IRC, tho dunno if other devs share this preference.

The most 'official' IRC channel I have found so far is on irc.newnet.net #aurora so I suggest either it, a channel on the network or a Freenode channel for realtime discussion. Personally I am +2 GMT timezone-wise.

So some direction stuffs: My 2 minutes of research leads me to believe that MonoDevelop has a reasonably mature ability to import VS .sln and .proj files. I am however less optimistic that VS would import whatever format MonoDevelop uses. So I suggest the primary project in the repositiory be in Visual Studio Express format, something everyone should somewhat be able to use. If needed maintain 2 different sets of project files but that's unneeded complicated this early.

I have 0 experience with GTK or GTK#, so if that is what you are going for sure.  I can hook up some viewmodels properly but unless I actually go and learn GTK I'll leave UIs to someone else. My suggestion of keeping frontend and backend seperated still stands however, so at least 2 project files within the solution.

Short term goal as I see it for me is to get entities like Planets, Suns etc setup asap.  A lot of how these link is reasonably intuitive and expanding or modifying them at a later time shouldn't be a problem. Actual random system generation code is lower priority, but getting up a testing solar system of Sol using precalculated defaults should give anyone doing game and UI something to link to and display at least. Then can take my time getting realistic solar systems generating. Database and actually saving stuff is not that important at this stage, but since we already decided on something like LINQtoSQL or nHibernate can design appropriately.

I am a little worried about MrBear. He has offered to help with the conversion or reverse engineering of original Aurora, have yet to hear from him about this somewhat different take on from scratch development.

Name? I dunno, can base it off the original, like OpenAurora, Aurora Rebirth or something, or actually be original about it. My current code is sitting in a project called Pulsar4X which might make an interesting possibility. This is usually something that you need before making a repository so I suppose we should get some opinions about it now.

As said I like Mercurial. There are other options if anyone has a STRONG preference, but I just don't like getting burned when I tried GIT recently.
 

Offline sublight

  • Pulsar 4x Dev
  • Captain
  • *
  • s
  • Posts: 592
  • Thanked: 17 times
Re: Aurora II
« Reply #191 on: August 07, 2012, 11:41:08 AM »
@Erik: A sub-forum would be fantastic.

Name: Pulsar4x has a very nice ring. The names I was thinking of were either bland (AuoraFan) or obscure puns (AuroraSong).

Logistics: Periodic Real time communication helps a lot, but Aurora is global enough to add some challenges. I'm at GMT -4.

Supposedly GTK# supports .NET stuff. Either way I've used GTK and GTK++ before so I can help with UI development. I'll look further into this as soon as I get a repository set up.

Planets And Star Generation: Yes please. We'll need realistic generation sooner than latter. Also, start think about terrain features. We'll probably want to get system/star maps working first: but I'm thinking implementing some planetary mapping for an improved ground combat system would be a great way to add our own twist. Probably the biggest challenge there is balancing object detail with database size/complexity.
 

Offline Nathan_

  • Pulsar 4x Dev
  • Commodore
  • *
  • N
  • Posts: 701
Re: Aurora II
« Reply #192 on: August 07, 2012, 01:14:31 PM »
I'm interested in this, but I don't have much experience with c#. I'll see about getting the glut wrapper for c# to work if you want to display said systems in 3d, obviously nothing fancy though.
 

Offline Antagonist

  • Pulsar 4x Dev
  • Sub-Lieutenant
  • *
  • A
  • Posts: 124
Re: Aurora II
« Reply #193 on: August 07, 2012, 01:34:15 PM »
System generation is my baby, been a personal effort for a while now... I just wish I knew more cosmologists whos brains I could pick and who can point me to the right papers.  I wanna avoid doing n-body calculations since that is hard to get right for a GAME, so simplest method I've seen are those based off Dole's work, the accrete/stargen family. Problem is that the last serious development on it was in 80s. Our knowledge about cosmology has changed a lot since then.  Already ported it mostly to C# and got rid of the HORRIBLE C-style double linked list and pointer style coding, but still messing with generation and results a lot.

However, getting a 'default' Earth system up to play with quickly is more important than a perfect generation system, so yeah.

I think we should seriously avoid thinking or doing anything to do with terrain and such right now. Way too early, expands and changes on the original model way too much long before we even have any of the basics up.

But... if I have to speculate and advise, I'd take a look at the system Light of Altair has:
Simple and not THAT hard to do.  Was largely thinking of it for use with biomes and albido calculations, considering that ice has a different albido to ocean and to rock... either way that is a hell of a mission to do accurately but since the method and formulas I've seen calculates and assumes from say x% ice coverage, y% water, z% cloud coverage ANYWAY...

@Nathan_: If you have experience with GL that's enough. The C# bindings are pretty much the same properties and methods, just in C#. Otherwise C# is just syntax almost identical to Java or even C++.  I'm a little unsure about using GL though, but it does sound popular and the basic Aurora map def needs a good look at.
 

Offline Erik L

  • Administrator
  • Admiral of the Fleet
  • *****
  • Posts: 5654
  • Thanked: 366 times
  • Forum Admin
  • Discord Username: icehawke
  • 2020 Supporter 2020 Supporter : Donate for 2020
    2022 Supporter 2022 Supporter : Donate for 2022
    Gold Supporter Gold Supporter : Support the forums with a Gold subscription
    2021 Supporter 2021 Supporter : Donate for 2021
Re: Aurora II
« Reply #194 on: August 07, 2012, 01:43:08 PM »
Maybe take the development talk to the Puslar 4x forum (under Other games). The base forum should be open to all.