Author Topic: Pulsar 4X  (Read 32413 times)

0 Members and 2 Guests are viewing this topic.

Offline Antagonist (OP)

  • Pulsar 4x Dev
  • Sub-Lieutenant
  • *
  • A
  • Posts: 124
Pulsar 4X
« on: August 07, 2012, 02:10:21 PM »
Well, 2 people like Pulsar 4X, and we even have a forum by that name now, I guess we have a name.

For those just tuning in, this is the board for the project of creating an up to date fan sequel of the popular Aurora (a game I assume you are all familiar with it).


We have Steve's blessing and Erik created us this nice sub-forum.

This thread and forum serves as our public face for talk about the project.

Details about repository will follow shortly. Planning an discussion will happen here.

DevEdit:
HTTP Repository Link: https://github.com/Pulsar4xDevs/Pulsar4x.git
SSH Repository Link: git@github.com:Pulsar4xDevs/Pulsar4x.git

Wiki: http://pulsar4x.pentarch.org/wiki/
« Last Edit: September 05, 2012, 07:16:33 AM by Antagonist »
 

Offline Antagonist (OP)

  • Pulsar 4x Dev
  • Sub-Lieutenant
  • *
  • A
  • Posts: 124
Re: Pulsar 4X
« Reply #1 on: August 08, 2012, 03:17:53 AM »
Until we actually have a wiki or shared googledoc or something for design, I'll post some namespace structure ideas here:

I am seeing a lot of public interest PMs sent, quite a few community members are interested to help, though many of them don't have C# experience. I don't have the utmost faith in casual crowdsourcing of dev work, and I think the majority of work will still fall on a few dev's shoulders, but I do believe in giving perhaps not fully dedicated wannabe contributors the opportunity to help out. I advise we get a ticket board up, something listing small and large tasks we need done, whether coding a window, a GLSL shader, writing, translations, icons or GUI art, perhaps 3D models later... We can then point any interested parties to one of them.

Back to design. I'm not making any decisions in this about gameplay beyond what Aurora already makes, but this decision needs to be made in order to kick off the repository.
The following assumes a full MVVM model:

Pulsar4X (solution)
Pulsar4XGTK (project)
-Windows
-Dialogs
-Controls
-Images
-ViewModel
Pulsar4XLib (project)
-Entities (database plain data entities)
-ModelView
-Stargen


The namespaces will read basically Pulsar4XGTK.Windows etc
The model, context, utility, maths and constants classes don't need their own namespace and will be directly in the Pulsar4XLib namespace. I am considering advising to drop the ModelView folder and have the ViewModels connect directly to the Model for greater simplicity in this case which I guess would make it more MVC?  Either way I don't want a single line of gameplay logic and code to sit in the windows classes ideally.  How well this works for GTK I dunno, I come from the WPF direction in my current dayjob.

As we continue we'll add more namespaces. Obvious ones seem to be for AI, Technology, Combat, economy etc and will primarily be added to the Lib project as we expand.

Basic UI Planning:

[Welcome Screen/Select Game] <--> [Main Window]<-->(SUBWINDOWS!)
      ^
[New Game Window]


Okay, not exactly sure what to do about the main window, just that while not broken it is def one of the more non-standard parts of Aurora compared to other games/apps. The Economy menu is certainly one of the most used windows in base Aurora, so I feel its integration with the main window would be a good thing. If we integrate EVERY window it might look more like Stars! (http://wiki.starsautohost.org/wikinew/images/7/74/Stars_screenshot.png) but unsure whether that is good or bad. Alternatively I was thinking something with Ribbon-like tabs to switch to different functions? I play with 2 screens though and liked having system map on one screen while economy and other windows on second...

Either way I feel this is a good place people can contribute. If anyone can make some mockups of some ideas what the Aurora windows SHOULD look like we will properly consider them.

One of the safer windows to dev early, and one I would like earlier rather than later, might be the F9 window.  Pick a system, list its stars and planets.  The columns of stats for each planet might change with design, but I don't think the basic look and feel of it will change that dramatically. It would make it easier for me to test out planet generation experiments however.
 

Offline MrBear

  • Pulsar 4x Dev
  • Leading Rate
  • *
  • M
  • Posts: 8
Re: Pulsar 4X
« Reply #2 on: August 08, 2012, 05:33:14 AM »
Apologies for the silence of late - rather busy at work dealing with some project handovers and spending far too much of the last couple of weeks reading functional specs. . .  Plus, there's that sports thing which is a little diverting ;-)

I was doing some thinking on my way to work this morning about project structure and the suchlike.  This is really a reply to the post on the Aurora II thread, but better put here.

Source Control - I'd have to throw in my hat for using Git, if only so that we can use Github.  Given that Github has native Windows and Mac apps that remove a lot of the learning curve of using Git, there shouldn't be many arguments about complexity especially when Github gives us a lot of benefits for free as well - and it makes it easy for non-core contributors to pull sections of code that are of interest to them and push back any changes.

Windowing - I'm not sure what the benefit of using GTK is.  Winforms is well supported by Mono and doesn't require extra libraries.

OpenGL - If we're to go down the OpenGL route for parts of the GUI, I'd suggest we use OpenTK as our library as it's, probably, the most solid OpenGL implementation for . Net at the moment.  It also gives us input and audio for free and works across platforms.

Toolchain - Monodevelop can both read and write VS2010 project files, so no problems there.  I'd recommend using VS2010 Express if you're coding on Windows though.  Some, small, parts of the project will, I'm pretty sure, require VS2010 Pro though - to build the installer at least (Express doesn't support Setup projects).  As far as the database goes, I'd recommend SQLite for being cross platform and self-contained.

Modularity - To keep everything as clean as possible, I'd suggest that any significant chunck of functionality be given it's own project.  The main advantage is making it easy for people to work on one particular area without needing to worry about how it fits into the bigger picture as long as the interfaces used to access the functionality are kept up to date.  It will also smooth to path to making components into plug-ins later - I'm mostly thinking that areas such as System or Planet generation would be good candidates to be turned into plug-ins so that people can pick between different styles of games.

There's probably more ideas to dump, but that's about it for now!
 

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: Pulsar 4X
« Reply #3 on: August 08, 2012, 06:03:51 AM »
I've got VS2010 Pro, so if you need stuff requiring that, I can help.

I'm not a C# coder though. My background is VB and SQL.

Offline sublight

  • Moderator
  • Captain
  • *****
  • s
  • Posts: 592
  • Thanked: 17 times
Re: Pulsar 4X
« Reply #4 on: August 08, 2012, 06:43:53 AM »
Windowing - I'm not sure what the benefit of using GTK is.  Winforms is well supported by Mono and doesn't require extra libraries.

OpenGL - If we're to go down the OpenGL route for parts of the GUI, I'd suggest we use OpenTK as our library as it's, probably, the most solid OpenGL implementation for . Net at the moment.  It also gives us input and audio for free and works across platforms.

GTK was a suggestion of familiarity. I know enough GTK to coordinate/do UI development myself as needed, and have done basic graphics display in it with the Cairo 2D graphics library.

WinForm with OpenTK could work, but would require someone besides me to be a primary graphics/UI contributor.

Thoughts? Volunteers?
 

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: Pulsar 4X
« Reply #5 on: August 08, 2012, 10:18:18 AM »
Until we actually have a wiki or shared googledoc or something for design, I'll post some namespace structure ideas here:

I can set up a wiki, along with a ticket system and/or a project management system here too.

Through the host, the options for project management are dotProject, phpCollab, PHProjekt, ProjectPier, Mantis Bug Tracker, Feng Office, eyeOS, The Bug Genie, TaskFreak, Mound, Collabtive, Eventum.

Ticket systems are Crafty Syntax, Help Center Live, HESK, osTicket, ExoPHPDesk, phpSupport, Open Web Messenger, phpOnline, phpMyFAQ, iQDesk, Trellis Desk, Maian Support.

And it looks like I can put in SVNManager if you want to use SVN rather than git or anything else.

Just let me know what you all want, and I'll do my best to make it happen :)

Offline Antagonist (OP)

  • Pulsar 4x Dev
  • Sub-Lieutenant
  • *
  • A
  • Posts: 124
Re: Pulsar 4X
« Reply #6 on: August 08, 2012, 11:01:55 AM »
Well, Erik is living proof that a dev team doesn't ONLY need coders.

I've... used project management and ticket systems sometimes, but nothing to do with admin or such. I will leave the choice of exact system to someone else. Wiki we can do with, but repository is main concern for me atm. Yes, we should design before coding too much, but getting the repo up with basic solution and project is like a milestone, a pickaxe in the ground, a sign that we started and the project is actually happening. SVN is an option we can use, I like the possibility of keeping project, tickets, wiki and all together, even better if we can get them all to work together. Still like mercurial, but would seriously drop it in an instant if we can get repo integrated with ticket system and stuff. MrBear suggests git for github... I don't have great experiences with git, but I'd like his opinion on some system Erik can host, or whether github would still be advantageous.

I have my own copy of VS2010 Pro so sorted on that front, but it should not be a requirement for everyone else to have it. The MAJORITY of the project and dev work should be doable with the freely downloadable Express.  I dunno if it'll make a difference, but might help if the initial solution and project structure is done using Express just to be sure.

Windowing - I... don't intend to do much in this direction. I can, have worked with winforms a lot, but enjoying WPF and hoping to never have to go back to winforms kinda situation.  If you wanna go WPF sure I can help! But won't be portable since mono doesn't do WPF yet.  Winforms is familiar over GTK for me yeah, but honestly? If someone is willing to do the work in GTK that's fine. If someone is willing to do work in winforms? That's fine. Solution structure should reflect that though, one option is to eventually(!) put all this on the web, so if we follow proper MVVM and structure patterns we can even have multiple simultaneous UI projects, each using something different, and the backend coders won't care.  Whatever windowing system, NO GAME LOGIC IN UI CODE.  Ideally... I realise hacks are sometimes needed.  Largely I'd like to point out that UI Mockups should be considered somewhat a priority, irrespective of what windowing system we use.

OpenGL - In my ideal mind anything in OpenGL will be post-v1, barring us getting a dev that can focus on GL.  It... changes things. Its great and all but yeah. Far as I understand OpenTK is just something we can throw into the project later right? We don't have to design anything at this stage to accomidate for it? Lemme know if I am incorrect on this.  If we have to compensate for adding OpenGL now or later that has to be reflected.

Toolchain - I like what MrBear is saying in this. Cept I'd like to suggest WiX as a possible alternative for the installer. I THINK it works with express, plus it wasn't totally horrific last I had to use it.

Libraries - log4j is the one that pops into my mind as required even at this stage of the project.  Do this properly at this stage and it'll save a lot of headache later.

Modularity - I agree with MrBear on splitting into projects, just I suspect I might differ on what and where to split. UI should be split from backend yes. Database and entity definitions should stay together... Things on gameplay like economics and combat would be weird to split in my mind... I don't like but can see splitting off system generation maybe? Anything reporting or graphy sure. In short I'd like to hear from him more the modules he proposes. It is important and very relevant to get to an agreement on that soon.
 

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: Pulsar 4X
« Reply #7 on: August 08, 2012, 11:12:22 AM »
I can set up a wiki, along with a ticket system and/or a project management system here too.

Through the host, the options for project management are dotProject, phpCollab, PHProjekt, ProjectPier, Mantis Bug Tracker, Feng Office, eyeOS, The Bug Genie, TaskFreak, Mound, Collabtive, Eventum.

Ticket systems are Crafty Syntax, Help Center Live, HESK, osTicket, ExoPHPDesk, phpSupport, Open Web Messenger, phpOnline, phpMyFAQ, iQDesk, Trellis Desk, Maian Support.

And it looks like I can put in SVNManager if you want to use SVN rather than git or anything else.

Just let me know what you all want, and I'll do my best to make it happen :)

I should mention I can also host mySQL or Postgres databases here too. Should you wish to go that route.

Offline clement

  • Pulsar 4x Dev
  • Sub-Lieutenant
  • *
  • c
  • Posts: 137
  • Thanked: 13 times
Re: Pulsar 4X
« Reply #8 on: August 08, 2012, 12:08:32 PM »
I cannot commit to any specific amount of time to help out but I would be glad to help when I have the time.

As background, I am a team lead for a web based software company in the US. Experienced in C#, VB, SQL, WPF & WinForms (prefer WPF). I have used most of the source control repositories and am fine with any of them. I have VS 2010 Pro.

In my spare time I had started a side project to create a game that was a mix of Stars! and Aurora. I saw someone mention planet and solar system generation,  one of the pieces of functionality I have mostly completed was a port of the Accrete code to C# and turned it into a more OO oriented approach. It also includes some atmospheric code I found in a fork of of the original Accrete code. I am working on adding moon generation to the code and including atmospherics on the generated moons.

Once a repo is set up, I would be glad to help out when I have time available and contribute what I can.

Rich
 

Offline Maltay

  • Sub-Lieutenant
  • ******
  • Posts: 134
Re: Pulsar 4X
« Reply #9 on: August 08, 2012, 07:39:00 PM »
In terms of development, I primarily focus on Java and ETL for large systems.  However, I have also done the same stuff in C/C++.  At a higher level, I do systems engineering, project planning, and COTS integration for the USG on a professional basis.  If this is helpful, let me know.
« Last Edit: August 08, 2012, 07:55:18 PM by Maltay »
I don't know half of you half as well as I should like; and I like less than half of you half as well as you deserve.
 

Offline MrBear

  • Pulsar 4x Dev
  • Leading Rate
  • *
  • M
  • Posts: 8
Re: Pulsar 4X
« Reply #10 on: August 09, 2012, 04:57:53 AM »
My preference for github is mostly because I'm (reasonably) familiar with it and because it's got good tools and a good reputation as well as having become one of the more popular hosts for open source projects these days. 

Frankly, my real preference is that source is hosted somewhere reputable and reliable and I trust github/bitbucket/sourceforge etc.  a lot more than I do someone's private server.  Github and bitbucket both have issue tracking and wikis built in, so they cover pretty much all the bases.

If you want to take a gander, this is one (small, simple) repo of mine - https://github. com/elemeno/SimpleMillerRabin

I've love to use WPF as well, but it's not well supported cross platform which is a shame.  Unless we went for Silverlight/Moonlight which is reasonably well supported I think.  For Winforms vs GTK#, from what I understand GTK# still doesn't have good databinding support and without that it's going to be pretty painful to use for a game with so many tables of data.
 

Offline sublight

  • Moderator
  • Captain
  • *****
  • s
  • Posts: 592
  • Thanked: 17 times
Re: Pulsar 4X
« Reply #11 on: August 09, 2012, 07:43:20 AM »
Pulsar4x Structure:
I've been think that if we split the project into two halves as antagonist wishes we may as well split it into three:
- User Interface
- Database Access
- Game Engine

Repository
Lets go with Mercurial over Git. Antidotal internet comparisons suggest Mercurial is easier to learn.
So: Mercurial or SVN? Mercurial gives us the proven bitbucket hosting. SVN allows us the prestige of having Erik host our stuff here.
 

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: Pulsar 4X
« Reply #12 on: August 09, 2012, 08:05:00 AM »
The only thing about external code repositories you need to look out for are the licensing terms. CodeProject has some odd terms, as did sourceforge if I recall.

Offline MrBear

  • Pulsar 4x Dev
  • Leading Rate
  • *
  • M
  • Posts: 8
Re: Pulsar 4X
« Reply #13 on: August 09, 2012, 08:50:47 AM »
Github doesn't have any explicit licensing requirements other than stating that by making a repository public you're giving people the right to fork it, which pretty much forces some form of open source license.  Since I don't see the point in doing this if it's not going to be open source, that's not a problem for me at least (and I'd suggest GPLv2).

Personal experience suggests that the learning curve for hg and git is identical, but git is significantly more popular so tutorials and documentation available on the internet tend to be better.  Clearly I prefer git, but I'm comparatively agnostic between the two - I recall git being smoother on windows than hg, but it's been a while since I compared them on windows (I tend to use TFS on windows, git on OS X and Linux) so don't put too much stock in that as the state of the tools will have moved on.  I do notice that github has it's own GUI client which removes the need to know much about git at all - pretty much anything 'advanced' can be dealt with in their client or through their website.

Subversion I'd rather not use though - I think that the DVCS model is better suited for these sort of projects mostly due to the ability to have local branches while you're working on different things and only pushing the end result back up to master, which makes it a lot easier to push discrete changes without breaking master I find.
 

Offline sublight

  • Moderator
  • Captain
  • *****
  • s
  • Posts: 592
  • Thanked: 17 times
Re: Pulsar 4X
« Reply #14 on: August 09, 2012, 09:29:26 AM »
Ok, time to read the fine print.

Bitbucket: Provides private repository hosting... for up to 5 contributors. That should cover a solid core of primary developers, but makes accessing the crowd of associate coders expressing interest difficult. This might not work after all.

SourceForge: Free hosting. May support both Mercurial and Git. Requires us to explicitly choose an OSI-approved licence.

Github: What McBear said. I think I also saw a use clause that explicitly makes us legally liable for any lawsuit against Github in regard to our code.