Author Topic: Arcen Platform  (Read 1824 times)

Offline TechSY730

  • Core Member Mark V
  • *****
  • Posts: 4,557
Arcen Platform
« on: October 31, 2011, 11:11:32 AM »
Something I like about your game is that you seem to use the same engine of engines, or platform, or whatever, for all of your games.

I can tell by some of the common things among them. Similar UI elements and behavior, F3 brings up debug info, errors are written to UnhandledErrors.txt, and all that.

Do you have a separate codebase for the shared logic between all your games that your games import, or is it done by "copypasta" between the projects?


So, overall, is this an accurate representation of how your games are laid out?

OS --> Mono --> Unity --> Arcen Common Platform --> Game Specific Engine

Offline Nalgas

  • Hero Member
  • *****
  • Posts: 680
Re: Arcen Platform
« Reply #1 on: November 01, 2011, 11:15:00 AM »
If memory serves me right, there were some posts a while back talking about removing a bunch of AI War-specific stuff that was cluttering the code up from the AVWW branch back in the early days of its existence, and from time to time improvements that have been made for one game that are applicable to another have migrated over eventually, like between Tidalis and AI War at some point.

From the way it's been talked about, I get the impression that it's maybe not quite as formal as you're implying, but they do share a lot of code for the tasks they have in common (all the custom stuff that extends or replaces what Unity doesn't do well enough/at all but is still broad enough that it's applicable to all of the games, e.g. all the stuff you pointed out).  I'm going to guess that it's still maintained manually if my guess that it was was before is correct, because I don't know where they would've found the time to change that with how busy they've been lately.  Heh.

Offline TechSY730

  • Core Member Mark V
  • *****
  • Posts: 4,557
Re: Arcen Platform
« Reply #2 on: November 04, 2011, 10:42:38 AM »
From the way it's been talked about, I get the impression that it's maybe not quite as formal as you're implying, but they do share a lot of code for the tasks they have in common

Yea, now that you mention it, it seems more likely that the shared behavior is more "copypasta" components across the games and not a shared library or code base.
« Last Edit: November 04, 2011, 10:49:17 AM by techsy730 »

Offline x4000

  • Chris Park, Arcen Games Founder and Lead Designer
  • Administrator
  • Zenith Council Member Mark III
  • *****
  • Posts: 31,220
Re: Arcen Platform
« Reply #3 on: November 07, 2011, 10:20:33 AM »
Didn't see this until today, but yes the codebases are different.  There's really almost no files in the whole "Arcen platform" that escape changes 100% between games.  I think the FInt and Compression classes tend to get copied over verbatim, and the MersenneTwister implementation does, but that's about it.  Everything else -- from the GUI onward -- tends to evolve on its own.

Here's why: the Arcen "platform" isn't a general-purpose platform.  It does exactly what it needs to do for a specific game, and no more.  The methods aren't generalized to be able to build any framework on top of any other framework.  For instance, look at the debug info in the F3 menu.  There are a few things in common between all three of our games about that, but the vast majority of the info actually IN the F3 debug screens are wildly different.

And the reasons for us not making a consolidated platform are: 1) that would take a lot of time that, since we're not planning on selling our platform to others, is better spent elsewhere; 2) each game has unique needs, and by tailoring the general platform to each game we get something with as absolutely little bloat in it as possible; 3) we can retrofit prior games with new platform additions at our leisure, or not at all -- when making a change in AVWW, we don't have to consider if that's also compatible with AI War or Tidalis, both of which have really different architectures.


I'm a huge fan of code reuse, but there are limits.  Having created many large component libraries in the past, and used many by third party vendors, I had the sense to not try to put that into something that is as high-performance as a game like these. ;)
Have ideas or bug reports for one of our games?  Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!