# Could we design some open source software?

There have been a few questions about . It seems to me there are some big gaps in the tools out there.

• DokuWiki seems to be ideal for documenting a new world
• Graphics programs and Map creators seem to be the best option for designing the geography.

There doesn't seem to be a lot out there for

• Autogeneration of
• Solar Systems
• Races
• Landmasses
• Cities
• Designing a world which can then be tweaked and exported as maps for fiction/RPG
• Keeping track of
• Characters
• Technology
• Flora and Fauna

My question is simple (and very broad). Is there enough desire/skill/inclination to create an open source project to close some of these gaps?

• Features you'd like to see
• Interest in joining such a project
• Skills you could bring to the table
• YES YES YES YES YES YES YES YES YES YES YES YES – mechalynx Oct 9 '14 at 12:33
• I'm sure this stuff already exists. But when it's free, it's relatively cheap. – Vincent Oct 9 '14 at 14:57
• @Vincent can you post some links? No point in reinventing the wheel! – Liath Oct 9 '14 at 20:31
• i think it's this one rpgmanager.net – Vincent Oct 9 '14 at 20:41
• I'm really not sure about the quality and I think it's not what we are looking for. – Vincent Oct 9 '14 at 20:42
• and, what kind of skills could be useful outside programming? graphic design? – Vincent Oct 9 '14 at 20:47
• @Vincent Absolutely, UI/graphics is not my strength! – Liath Oct 9 '14 at 20:49
• @Vincent we can wing it as far as graphics is concerned for a development prototype (lots of assets going around, with permissive licenses), but it's definitely going to need the hand of a proper artist to get it to be sexy (and work in terms of ui cohesion). I'd add that perhaps someone who's experienced in UX would also be really important - I have a strong interest in it myself, but I'm no expert. – mechalynx Oct 9 '14 at 22:35
• I've created a community wiki answer which I'll mark as THE answer once it becomes eligible. Please edit with any features/wants I've missed. I feel the next steps are to create our own board and github space to discuss outsite the QA format. – Liath Oct 10 '14 at 7:51

Requested Features

• Support for:

• .NET Framework
• Cross-platform
• Exports:

• Various map styles in common formats (JPG, PNG, GIF)
• XML file (for import into any other application/language)
• Some kind of webpage/wiki (available from WB.SE)
• World documentation, an encyclopedia (for DMs/Authors)
• Filters to control publicly revealed details
• World generation profiles in YAML
• Autogeneration of:

• Solar Systems
• Races
• Landmasses
• Cities
• Scalability: users should be able to design an island in a lot of detail or a galaxy in a low level of detail.

• Realism control: users should be able to pick between "fast mode", for quick and dirty mockups, "fantasy mode" where unrealistic extremes are allowed for the engine and "realistic mode" where the engine attempts to create features within known real bounds.

• This should be controllable per generation type, not just overall.
• Scriptability: the UI shouldn't stand between users and their goals; an API should be exported to allow advanced users to use the full power of the engines, even from the command line. Also, this would make it easy to exchange world generation approaches in an easy to use form and could make the UI pluginnable.

• Keeping track of:

• Characters
• Technology
• Flora and Fauna

Project details

• A project management structure which will allow:

• Team members to dip in and out and commit to features when they have time
• Focus on requirements they want to see and use

Developers

• Liath
• overactor

Graphics

Support, Testing and Documentation

• overactor
• DonyorM

Progress

• We're chatting here
• I've stubbed out some example C# code to demonstrate my suggested architecture it's available here.

Next Steps

• Edit this answer with features/offers of help
• Discussion Board
• GitHub Space
• I'm actually working on a related project so I may do some high level architecture prototypes over the next few weeks. – Liath Oct 10 '14 at 7:47
• The requirements for flexibility here scream GIT to me, team members can sign up to mini features as and when they have the time then send pull requests when they're complete. – Liath Oct 10 '14 at 7:49
• I would like to say that I can commit to developing, but I can't really. Though I would love to help test it. – DonyorM Oct 10 '14 at 8:25
• What's up with the .NET inclusion? I don't think it's compatible with 'cross-platform' and don't say 'Mono'. Why not keep it independent? I see no reason to use .NET at all and serious complications if we do. I can't really place myself as a developer because I don't know it, like it, use it or have MSVS installed. I can still work on peripherals, but it'll have to be clear what those are. – mechalynx Oct 10 '14 at 16:01
• Hi @ivy_lynx my main reasons for .NET are firstly that I'm a .NET developer and a number of the people who've expressed interest know C#. It makes sense to use techs we know, the second is personal, the personal project I want to use the lib for is .NET. Happy to listen to other viewpoints but haven't got time to kick something off and learn new techs myself... Path of least resistance! – Liath Oct 10 '14 at 19:32
• @ivy_lynx I know C# graphics can only take us so far... Keen to listen to ideas! :-) I'm not a UI guy – Liath Oct 10 '14 at 19:34
• @Liath If developer consensus is on .NET/C# then keep it, it would work much better - it wouldn't make sense to change tech for one guy who doesn't like it, not in the slightest. But I can't work with it for many reasons, the first one being the very same path of least resistance :P which goes the other way for me. I don't really feel like there's much to add besides the recommendations I have in my own answer. Should I add myself as "support developer" or something, to keep it open (for non C#/.NET stuff) or would that make it too non-commital (as in a bad idea for teamwork)? – mechalynx Oct 10 '14 at 19:49
• @ivy_lynx we're all pretty non-committal at this point. We were also keen on making sure it was mono compatible, I appreciate what you're saying through about it being a poor relation of C++! At the moment all we've got is a very simple 20 minute mock and some discussions. Head over to the chat and weigh in, there were some big java discussions going on earlier – Liath Oct 10 '14 at 20:38

Features

I'm not sure if this is realistic but:

What would be extremely cool is if we could make a bunch of modular programmes, where modules essentially take input variables and have several output variables. This way, you can generate a solar system with one module, select a planet from that solar system and plug those variables into a geology module etc.

We would have to decide what sort of modules we can create and what sort of inputs they take and what sort of outputs they generate, but if we do, creating the individual modules can be done independently of the others.

Every module can also generate some optional data and graphical output along the way.

Interest

Yes, though I don't have all that much time, I'd love to help out where I can in any project that comes out of this thread.

Skills (Sounds better on paper than it really is)

I have some knowledge of programming using:

• Delphi
• Java
• C#
• Swift
• C++
• Javascript

I also have some background in game dev and 3d modeling and working with several graphical programs.

• I think a modular approach is critical, not just for the reasons you've outlined but also so any consuming/expanding developer can substitute in rules for their own races/worlds which we don't support. As to whether these modules generate the maps... design decision to be made later. Personally I'd have rendering as a separate layer so you could swap in different styles of maps. – Liath Oct 9 '14 at 12:43
• @Liath Good points, being able to plug output data of a module into several configurable rendering modules seems very useful.The overarching programm could basically be a node-based programming language. – overactor Oct 9 '14 at 12:49
• I have deep C#, Javascript and game dev. Although it's a reprehensible language I would suggest JavaScript for this because it is so ubiquitous and cross platform. – glenatron Oct 10 '14 at 9:22

Features

I would ultimately like to build a project which can be run as either a windows application or a plugin library (to support games and any other software which people wish to use it for) which you can throw a blank galaxy at and it will populate from the stars to the houses. The user/developer can then go in and tweak everything to their heart's content... big ask.

Top Features:

• To create a new Galaxy(); or new City(); for use in a game.
• To model a world and link to it from WB.SE so questions can be answered about it
• To print off maps of your designed world
• To create webpages/documents about your world including/excluding "not yet released" sections

Interest

Yes, time permitting.

Skills

Mostly technical .NET, C#, javascript/jQuery and SQL.

### Features

• Cross platform
• Modular
• Informative error messages
• Simulation (so a planet/solar system/valley can be allowed to develop and the most interesting point in time can be chosen as a setting)
• Hierarchical simulation (so a machine with limited resources can just simulate a small region in sufficient detail - ideally choosing level of detail and size of region to include)

### Interest

I can contribute on a part time sporadic temporary basis.

### Skills

To be acquired. Currently I have:

• Basic familiarity with Python 3.
• Superficial awareness of C++.

<3 <3 <3

Interest

While I am a bit saturated for projects at the moment, I have some design ideas that could work brilliantly with this and I have been researching a lot of libraries and related software and the main project I'm working on has UX and feature ideas that can possibly translate to this as well.

Skills

I think I can at least help with prototyping it:

• Javascript and related tech
• Python and
• C would be what I could work with best (my C is really rusty though).

Design proposal

edit - As far as worldbuilding is concerned, I think Dwarf Fortress has a parameter model for world generation that can be used as a starting point for what to include and how to present the options. It uses a layer based approach to building the world, much like TimB's series of questions, which would let us leverage them algorithmically. DF also has a good degree of scope in its world generation, even going as far as simulating civilizations falling and rising, wars and legendary figures.

Obviously, as overactor suggests, it should be modular - a set of specialized software that outputs maps as images (where that is relevant) and data held in something like an sqlite db. These programs can easily be built in C and since they'd be command-line, they'd also be easy to port between platforms. Mingw-w64 can be used to cross compile to windows, so we can keep it all under one compiler (gcc).

We can make it scriptable in Lua for configurability, if it's in C or Javascript (there's a lua vm compiled from the C sources for Javascript). I think this would be idea - just export an api object to that and control the whole thing.

For the interface, we can use a xulrunner app (since xulrunner is crossplatform) which should allow quick prototyping for the ui, leveraging web technologies, even for the rendering. Common formats should be used and they won't be a problem with this. The huge advantage of xulrunner is that, using chrome priveleges and XPCOM, you can build an app that has all relevant native capabilities - save files arbitrarily, call programs as backends, run scripts, whatever.

There's already lots of libraries in javascript to help out and an sqlite compile from the C sources to js, so that can carry over, cross-platform.

As far as the UI design is concerned, it would require some basic drawing tools, which can already be plugged in using existing libraries and may require some clever UX to make sure it isn't overwhelming, if we're going to place everything in the GUI.

There's plenty of CV and OCR libs out there, we can probably make something configurable by hand so that, for example, you can import an rpg map, tell it how to interpret it (elevation etc.) and then figure out where rivers would go. Simple, but it can be handy - or at least cool.

The feature set would have to be defined better for clearer design, but overall, I think if we keep everything nicely separated, it should allow us to work at our own pace, knocking out one piece at a time.

The features I think can be cleared the easiest would be:

• Terraforming (landmasses etc.)
• Geological resources
• Bioming
• Population/resource estimation (maximum, minimum sizes, growth rates)

and I think we can leverage this for questions (along the lines of "How can I practically model x in my world?") and leverage questions for computational approaches (especially the more practical and handwaivey ones).

We can always use evolus pencil for UI designs, when we reach that point (i'd prefer it best to build bottom-up). It's cross-platform, exports to both images and its own format to maintain the widgets in place.

We can also always build a web app - all of this can be done in javascript, but it would be quite bulky and I hate bulky web apps.

if the mess above suggests I'm too much of a noob, I'm ok with getting excluded because of that

• It takes a LOT more than coders to make a project work! :-) – Liath Oct 9 '14 at 12:49
• @Liath true, but we can wing it till we have asset people - there's great sources online for stuff like that. Also, should I post a full design elaboration here, or save it for later? – mechalynx Oct 9 '14 at 12:52
• Put in something very high level so we know where your interests lie. At this point I'm just wondering whether there's enough interest to share some of the work/design/ideas. If this gets off the ground I imagine we'll branch out quite quickly. – Liath Oct 9 '14 at 12:54
• Personally I'd lean more towards the technologies the team are more experienced in rather than trying to make it globally compatible. If we provide command line/export support there's no reason other technology sets can't consume a library even if they wish... IMHO it doesn't have to work with every UI, only our UI with an export. – Liath Oct 9 '14 at 13:43
• @Liath of course, I probably don't make much sense in that ramble but I agree 100% unless we're somehow on a very different page. Really though, this needs defining before we can decide on any tech. – mechalynx Oct 9 '14 at 13:44
• Regarding your last comment - no one is excluded if they're willing to work under the agreed framework/standards! – Liath Oct 9 '14 at 13:44
• Lets try and keep this question targeted on features/requirements - we can worry about techs/support for other languages later – Liath Oct 9 '14 at 13:45

### Features

• Web interface, maybe?

### Interest

Not very skilled at all this fancy worldbuilding stuff, but I can help with the code in general. I don't have a huge amount of time I could contribute, but I'd still like to help.

### Skills

Languages, listed roughly in order of comfortableness / how much I know:

• Front-end web (HTML, CSS, JavaScript, jQuery1)
• Ruby
• Python
• Java
• Bash
• A tiny bit of C++2

Other:

• Git
• Regex3
• Linux / Unix systems (I run Ubuntu)4

1: Yep, I'm listing jQuery separately here. Because... jQuery!
2: By "tiny bit" I mean tiny bit. Very little.
3: Does this count as a language? I don't even know why I'm listing this but meh
4: Not sysadmin-type stuff at all, just a general working knowledge (and to provide information that I'm using Linux in case that matters)

• cool to see you're interested. YOu should stop by the chat, we could use some input from someone with programming experience. – overactor Oct 13 '14 at 11:39

# Features

Most of the important features to me are already posted. But I would really like the program to be cross-platform and modular

# Interest

Somewhat sporadic, I'm pretty busy and I have another project that I have to do for school.

# Skills

I'm pretty new to programming, so I would be learning quite a bit if I helped. But I do know:

• Java
• A little bit of C++

Features

Something that gives both a core API that can be plugged into other systems and a direct interface.

For this type of project to be easy for people on different platforms and types of system to use, I strongly recommend that we use JavaScript for the majority of the project simply because everyone can access it and lots of people can write it without needing anything beyond a text editor and a browser. Also there are runtimes that can be plugged in to just about anything else.

Unfortunately it's a reprehensible language, but it is ubiquitous.

Interest

Potentially a lot.

I don't have a lot of time to contribute at the moment because all my spare dev time is going into a (javascript) game development project but I am very happy to share ideas initially and if I ever get the confounded game finished I have a bunch of half-finished world-building tech ( mostly around international/social/economic activity ) that I want to use to generate the setting for Version 2 and would be more than happy to incorporate into this.

Skills

I have a lot of experience with various programming languages, strongest currently being C#, Ruby and JavaScript all of which I have been using professionally for at least ten years.

• Take a look at the chat room chat.stackexchange.com/rooms/17257/… at the moment we're heavily leaning towards C# because it's what most people are most comfortable in – Liath Oct 10 '14 at 9:37

Liath. This is brilliant, and if WB SE accomplishes nothing but this I would consider it an amazing success.

I am not going to list out a bunch of features, I think that is pretty well covered and if this does take off there will be no shortage of requests. So I am just going to make a couple of suggestions/throw out a couple of ideas.

• Version control, yes we need it, config is my day job and I have some free alternatives to git that support collaboration and social aspects as well as code management, plus my company is an enterprise (sooo not free) customer so I have access to the support teams if we need it. I know folks out there love git but if you're interested in looking at others let me know.

• Project management: I can volunteer to do this. Its nice to have someone keep track of where we are and what everyone is working on, this is the second hat in my day job.

• Testing and doc: I am happy to help with both of these as well.