Technology and design patterns for x-platform app?
May 15, 2014 12:12 PM   Subscribe

I'm going to take the plunge and build, frankly, an insane application. I won't get into the nitty gritty, but suffice it to say it's a "world builder" app. I am just starting to figure out what I'm going to need, tech-wise, to build this thing, and I'd like some feedback from people who may have some experience in interface building, database design, cartography/GIS, graph theory, star-maps, and other such things....

It's got superficial similarities to Campaign Cartographer and Articy:Draft.

Some of my goals include:

1) Cross Platform

2) NON-Native UI (I want something that looks like it would be a NUI... Something you can drag/drop. Not a ton of grey boring menus. Something more "game interface" than "business interface".

3) CONNECTIONS EVERYWHERE! That is : I need a graph database of some kind, I think. Or something that deals with connections. Some sort of OO/Graph db might work, too.

I envision the ability to make intricate family trees, evolutionary trees, time sliders, highly zoomable maps, parallel timelines, starmaps, image editing (and, eventually, maybe 3d model importing, terrain generation, etc...) GIS/Map Layers of some sort (Not necessary to be literal GIS, but I figured if the Tech exists, and there are libraries, why not incorporate it? But it might be overkill)

I have even toyed with the idea of a hosted service for world-builder enthusiast to upload their worlds to share with others and maybe even participate in joint world creation.

So, with the above in mind here's some tech I'm seeing that I think might suit my purposes, but I want to know what people think in terms of ease of use, capability and such things, even information regarding licenses... pretty much whatever your thoughts are on these techs...

1) Interfaces:

* KIVY
* CEGui
* Awesomium

Or something along these lines with some flat or customizeable UI, that doesn't force me to use the native UI elements.

2) GIS:
* QGIS
* GRASS GIS

3) Database:
* Neo4j
* Hypergraphdb
* Orientdb
* Infogrid

and related, but not necessarily a database (though I think Rexster is a graph-db server?)

* Tinkerpop (a suite of tools that are related to graph databases, including a query language, a special graph server, and other utilities. Includes hooks for many graph-oriented databases.)

-------------
I don't know if a graph database is the most appropriate type of database, but based upon my desire for tightly integrated linkages between objects, places, times and such, I feel like dealing with graphs is very important in this tool.

However, I feel that since I'm going to be doing much to have the ability to create "objects" (essentially similar to Role Playing Game Character sheets), that perhaps an Object Oriented database might work. This is why Hypergraph is on the list.

That said, hypergraph information seems to be fairly sparse from what I can gather. Neo4j seems to be the defacto "king of the hill" for graph DBs at this point, and it has a lot of hooks for different languages.

One other concern I have is that I don't really know Java, and it slightly intimidates me, but it seems that a LOT of this tech uses Java. I'd prefer working in Python, C# or if necessary C++ as a last resort. Or if I can mix match as needed that's fine, too.

I have Awesomium listed more as an example. I guess I'm not 100% averse to HTML5/JS UI work, but I think I'd rather prefer something a bit closer to "native" (let's not argue about whether Java/C# is "more native" than JS, please).

------------
As for development, depending on the language, what are the best open source tools for development? I've used Codeblocks in the past for C/C++, I've used Monodevelop for Unity3D. I've used Notepad++... Is there any editor that's good all around for all languages, or are some better designed for specific languages?

If I try to plan in advance for an online service to eventually be tied into this thing, what are some pitfalls I should try to avoid earl on, what should I build in before hand to make it easier?

I am planning on making things very component oriented/plugin style architecture/expandable... Any tips on that? Design patterns, etc...
posted by symbioid to Computers & Internet (3 answers total) 5 users marked this as a favorite
 
Response by poster: *chirpchirp* ;_;
posted by symbioid at 5:54 PM on May 16, 2014


Best answer: OK, so this is a lot to take in, which is why you haven't had any responses, I think. So you want to build a pretty world-building app that handles a variety of data formats, some geographical and some semantic. You've mentioned a whole bunch of different technologies, and my response as a developer is slight terror at the idea of integrating all of them.

My suggestion would be to take a well-defined corner of what you want to build and start by building a prototype of it using whatever tools work best for you. Most of my experience is in Java, so I'm going to give you some suggestions on the basis of that:
  • If you know C# you pretty much know Java. They are extremely similar languages.
  • Use an IDE: NetBeans or Eclipse. The learning curve's OK, and the code completion and refactoring is absolutely worth it.
  • I'd start out not picking any UI library but rather just using something like Java2D or libgdx to do some simple direct drawing stuff. Once you have an idea of what kind of UI feel you want, it'll be easier to evaluate your options.
  • Similarly, for now, just ignore the question of how to sensibly persist the information. Just create suitable data structures and use Serializable (or the equivalent in some other language, like Python's pickle) as a cheap way of temporarily storing your test data.
Finally, I am very happy to give you advice/feedback on your project as it progresses.
posted by Zarkonnen at 1:01 PM on May 17, 2014 [1 favorite]


Response by poster: Thank you for the feedback. As it is, via other developer's feedback in other areas, I've decided to not pursue this project as it is clear it is beyond my skill level and abilities.
posted by symbioid at 7:51 AM on May 18, 2014


« Older Is this for the drugs?   |   Script or hack to show PDF from /YYYY/MM/DD/*.pdf... Newer »
This thread is closed to new comments.