Java-Gaming.org    
Featured games (81)
games approved by the League of Dukes
Games in Showcase (499)
Games in Android Showcase (118)
games submitted by our members
Games in WIP (568)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Could a game like EVE Online be implemented on the SGS?  (Read 5991 times)
0 Members and 1 Guest are viewing this topic.
Offline Ragosch

Junior Member




Java games rock!


« Posted 2006-07-11 11:28:08 »

My complaints about the SGS are basically that database queries are not supported by the SGS itself. Now imagine you would need to implement something like EVE Online on the SGS. SGS has a huge market and mission database with millions of entries and you would need a database system for it to manage all the queries needed for proper access to the markets like EVE provides it (local, regional and global markets and mission data). If you would do that with just GLOs you cant expect any sophisticated answers in decent time and the game would be broken. So you would need to use an external database and the SGS currently just provides this using raw sockets with asynchron query/result access. This means you would need to do a query or database manipulation operation on one SGS task and get the results on a different task. What about transactional safety then?- It could happen that it is broken because the manipulation operation is send from one task (which could be discarded afterwards) and the result is given to a different task (and this result is maybe invalid due to the discard of the task before); or the sending task commits but the database fails and the state of the SGS objectStore is not valid and needs to be fixed.

So, how would you implement an EVE Online like database with the SGS?- IMO the SGS model is broken for games which needs to deal with some huge databases as far as transactional safety is concerned, but maybe you have a better idea I am not thinking of.

If you have never played EVE to answer this question: EVE offers a 14-day free trial currently where you could get an idea about this huge database and the way EVE provides access to it.

Ragosch
Offline endolf

JGO Coder


Medals: 7
Exp: 15 years


Current project release date: sometime in 3003


« Reply #1 - Posted 2006-07-11 11:43:50 »

Erm, havn't we had this discussion before?

Jeff has reported that he and his crew are looking at solutions to just this problem.

Endolf

Offline Ragosch

Junior Member




Java games rock!


« Reply #2 - Posted 2006-07-11 11:53:22 »

Yes, we had this in a way before - but I feel it is not taken serious as a real problem. I wanted to point out in a different thread, that it is not only our game which needs this but that there are a lot of other games which need this also ... and to give a good example of a game which is currently top ranked and has a constantly increasing number of subscribers which would need that also, I made this example. It is vital for the success of the SGS IMO to take this problem really serious. That is why I made a new topic about it and point out the problems regarding to transactional safety if you would use an external database for it using the raw sockets from the SimTask object.

Ragosch
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline endolf

JGO Coder


Medals: 7
Exp: 15 years


Current project release date: sometime in 3003


« Reply #3 - Posted 2006-07-11 12:12:07 »

but I feel it is not taken serious as a real problem.

IIRC, Jeff mentioned that people were investigating this within his team, how more seriously did you want it taking? Smiley

Endolf

Offline Jeff

JGO Coder




Got any cats?


« Reply #4 - Posted 2006-07-11 18:58:27 »

Its on our Radar.  I'd call it a tier-2 issue.  A lot of how we might adress it depends on some final architectural issues we're looking at now on the big back end. 
Some thing we are  looking at include

(a) a formal lock down of the ObjectStore's internal interface to the rest of the system
(b) the idea of a well defined and pluggable "event generator" interface to the system for extensions

Dpending onwhat we do here I could see this being attacked in different ways.  The thirs approach, which is ofcourse abvailable today, is to put that database ona seperate server and call to it with the raw socket interface but I see this as the least desirable solution.

SO... for teh moment I am going to tunr this around asn ask this question...

If you could have this any way you wanted, what would it look like?  A more compelx and felixible index system then the name index?  Generic JavaSpaces style object searching?  A seperate info data base with an SQL interface? A virtualized generic JDBC connector that works asynchronously and generaters events?  Some other idea?

Id love to see some debates on the pros and cons on these approaches.

Got a question about Java and game programming?  Just new to the Java Game Development Community?  Try my FAQ.  Its likely you'll learn something!

http://wiki.java.net/bin/view/Games/JeffFAQ
Offline beowulf03809

Junior Member




We live for the code, we die for the code


« Reply #5 - Posted 2006-07-11 19:55:03 »

As someone that is very interrested in this as well ( but not nearly far enough along to be concerned with it not yet being available  Cheesy ), I would have to say that an "event generator" sounds initially appealing, but I would be worried about it's flexibility.  An economic model is different than a weather model which is different than a political model which is different than, well, you get it.

One option I am thinking about would be to have a second database deployed in parallel to the SGS's ObjectStore to ensure the same level of scalability & failover as the primary ObjectStore but without the same level of restrictions as the ObjectStore.  However, to minimize risks it would still seem to need a similar level of access control as you are placing around the ObjectStore.  Perhaps ELOs ( Event Level Objects ) which actually provide the interraction w/ the EventModelStore in a manner similar to how message driven beans can be used in J2EE development .

Example of an EVE like market system, ELOs can be written purely as market managers, a GLO sends a request to an ELO for prices of a given good at a given location.  The ELO can PEEK the EventModelStore database for availability of the good, recent and average sale and purchase prices at that location, etc., and calculate a new sale price for the player. The player accepts the price and makes the purchse, the ELO would GET the quantity of goods at the location to reflect the sale and also update the database with the new sales prices.

Another ELO might be triggered on a scheduled basis to review each regional market for supply/demand trends and update prices over a larger market segement without being specifically driven by a single player's actions ( if three out of five ports in the area are all selling large quantities of Robots, then the market might adjust the cost of Robots upward at all five ports to better reflect demand ).

Since the EventModelStore/ELO/EventTask is a generally seperate set of functionality it can be layered in on an as-needed basis. If a game is more basic and does not require such a model, then the standard ObjectStore/GLO/Task implementation would be enough.

Talking thru my fingers a bit there, so I may need to formalize my thoughts later, but you may get the idea.  It's probably too complex to be reasonable, but I was trying to keep it in line with similar direction that SGS is going already and maintain the power and flexibility the current SGS model already provides.
Offline Jeff

JGO Coder




Got any cats?


« Reply #6 - Posted 2006-07-11 21:20:15 »

Quote
As someone that is very interrested in this as well ( but not nearly far enough along to be concerned with it not yet being available  Cheesy ), I would have to say that an "event generator" sounds initially appealing, but I would be worried about it's flexibility.  An economic model is different than a weather model which is different than a political model which is different than, well, you get it.

Okay let me make that one clearer.  What I was talkign about was GLO events.  basically so you can plug any arbitrary code directly into the kernel of the system and generate what look like SGS events to the system.

Though if you have another idea the name spurred,  id be curious to hear it.

The rest of this is very intresting.. but i need to read and really digest it before I ask any more questions Cool

Got a question about Java and game programming?  Just new to the Java Game Development Community?  Try my FAQ.  Its likely you'll learn something!

http://wiki.java.net/bin/view/Games/JeffFAQ
Offline Ragosch

Junior Member




Java games rock!


« Reply #7 - Posted 2006-07-12 05:57:55 »

Pluggable events would definately be good - no doubt. But for a market-database like EVE has you need a real database system which can be accessed in a transactional safe manner seen from the SGS point of view (it needs to be safe inside the current SimTask). That is why you cant do this in an asychron way because it would break the transactional safety as I have pointed out in the OP; it needs to be synchron to the SimTask. The transaction should database-side not be commited until the SimTask is ready to be commited also. This way the results in the objectStore and the database can be seen as either both valid or both rolled back, i.e. both transactional safe in relation to the same context (the SimTask).

Seen from a programmatical point of view SQL command would be good to manipulate and query the database. An SQL query is optimized by the database system and leads to an efficient access (this is the job of a database system, so let us let it do it's job), which is needed for sophisticated and fast results. I am totally against any form of doing it by hand while there is a database system which can do it even better because it is specialized to do so.

Ragosch
Offline Mr_Light

Senior Member


Medals: 1


shiny.


« Reply #8 - Posted 2006-07-12 14:53:01 »

Sounds like premature optimalisation.

sync, transaction, locking, connection stratigies certainly  wouldn't  be my entry point in this. Hibernate, EJB3, JPA projects have all asked these questions too, but perhaps lead into differend conclutions because of differend criteria, wouldn't it pay to look at that documentation/those discussions? We are reinventing the wheel here, surely a more slick one that runs better on our projected terrain. But it will still be a wheel, and thus will have similarities in solutions and problems. And not even tied alone to the techical aspect of it, but also to stuff like ease of use to the programmer, and esp. on that point we could learn alot from other projects.

It's harder to read code than to write it. - it's even harder to write readable code.

The gospel of brother Riven: "The guarantee that all bugs are in *your* code is worth gold." Amen brother a-m-e-n.
Offline Ragosch

Junior Member




Java games rock!


« Reply #9 - Posted 2006-07-12 20:25:05 »

But that is exactly what i dont want to do ... reinvent the (database) wheel again - I want to use it because it solves the problem of manipulating and query data which is hold in several tables in a transactional safe manner. The issue is here to embed a database nicely into the SGS to ensure transactional safety for the whole database (consisting of the database and the objectStore, which itself is just a table inside the database).

Or did I misunderstand you?

Ragosch
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline aNt

Senior Member




AFK


« Reply #10 - Posted 2006-07-13 16:09:44 »

JavaSpace database pls, ta.
Offline Jeff

JGO Coder




Got any cats?


« Reply #11 - Posted 2006-07-13 19:35:47 »

Ah so this is the debate I wanted to get started...

SQL v. JavaSpaces model v. .....

Keep in mind that JavaSpaces put more limits on objects then the current GLO model.

So IF you are talking JavaSpaces, do you want GLOs restriced with the JavaSpaces limitations?  Do you want it as a seperate parallel structure (could be tricky and error prone as now you have two different object models  in the system...) OR do you just want search abilities on GLOs simialr to JavaSpaces?  (*might* be tricky to implement without limitations similar to JavaSpaces... )



Got a question about Java and game programming?  Just new to the Java Game Development Community?  Try my FAQ.  Its likely you'll learn something!

http://wiki.java.net/bin/view/Games/JeffFAQ
Offline Ragosch

Junior Member




Java games rock!


« Reply #12 - Posted 2006-07-14 07:33:28 »

Search abilities on GLOs - a database is so much more than just some search abilities on GLOs. What about complex queries which do joins over several tables filtering out the requested data grouped and sorted in the desired way?- The last is what is needed if you think of a database like EVE has it ... do you really want to return to information retrieval like in the pre-database area?
Ragosch
Offline Jeff

JGO Coder




Got any cats?


« Reply #13 - Posted 2006-07-14 23:17:32 »

Interesting discussion guys...  I have some ideas starting to form here but Id like to see where the discussion goes still..

Got a question about Java and game programming?  Just new to the Java Game Development Community?  Try my FAQ.  Its likely you'll learn something!

http://wiki.java.net/bin/view/Games/JeffFAQ
Offline endolf

JGO Coder


Medals: 7
Exp: 15 years


Current project release date: sometime in 3003


« Reply #14 - Posted 2006-07-15 08:50:24 »

Hi

I'm going to vote +1 for Ragosch regarding complex queires with joins over multiple tables. I have no imediate need for this in SGS, but my long term plans also include a trading system which, having worked on real finacial applications, I can bet will get complex quite fast. On the other hand, that sort of system I *could* manage externally if addition of this feature was going to adversly effect the performance of the GLO based operations.

A thought I've just had (and I'm typeing as I think, so excuse the mess) is that maybe we partition the data, and one set of data in SGS is SQL based tables and queries, and one part is accessed via GLOs, in the SQL a type of GLOID is introduced so we can return rows from SQL queries that have the ID's of GLOs in them. On the other hand, the GLO id's are just strings, so it's perfectly acceptable to have 2 interfaces to the database that are seperate data tables, one with serialised GLOs, and one thats 'normal' tables. As long as they are in the same database transactional integrity might be easy to maintain, which was Ragosch main objection (as I understand it) to having 2 data sources.

Endolf

Offline aNt

Senior Member




AFK


« Reply #15 - Posted 2006-07-16 09:51:28 »

i think Javaspaces is much more then just a database of fields (relationships can he added to objects)- you can also have Works to do stuff for you. Its also a much more modern way of storing data, its also easyer to get your head around (after you get the hang of it). GLO's are much more then a Entry in a Javaspace (custom Entry?). The cool thing i find with SGS is the comms layer, also the way you can make rooms etc... The SGS team have done an amazing job here. GLOs and Entrys feel like the same, SQL is just nasty, and can get out of control fast. Storing backups of the SGS world into a Javaspace feels like a nice - i have made a game server that has all the data stored in a few Javaspaces. SGS is way better then what i did (game worlds need to be in memory when they get BIG). And if banking uses Javaspaces for the biggest game in the world (the stockmarket) then i guess is ok for us Wink.

I'm supriesed that people think a game like EvE-Onlines persistent world cant be done in SGS, with game items being stored in a Javaspace- if SGS can grid its world over lots of computers for more power (javaspaces can also do this) then theres no big deal (part from the hidden problems you will never find till its to late) Smiley

I dont do much highend database modeling, so i cant say if SQL would be better- its just different... Javaspaces just tasts nicer...
Offline endolf

JGO Coder


Medals: 7
Exp: 15 years


Current project release date: sometime in 3003


« Reply #16 - Posted 2006-07-16 10:51:18 »

Hi

I haven't looked in to java spaces, so i don't know what it's capabilities are.

The reason I suggested SQL is that the database providers like oracle have spent years and years creating algorithms for analysing the queries and finding out how to optimise them, you also have the ability to add indexes etc in to the tables themselves when you know certain fields will be searched on frequently to avoid having to do table scans.

An example query I thought of, which links in to eve and the trading system, is something like this.
1 table contains all the currently offered items on the market, the item instance id, the location it's for sale at, and the price.
The item table contains a mapping from the id to the type, and instance stats of that object, things that can change, like wear, no usages etc. The location is an id to a particular shop or space station, the sector/area it's in, maybe some higher grained geographic area structure information too.

I want to find, all the type 4 plasma drives, with condition >50% in the same galaxy as me with a retail price of < 100,000,000 credits.

in SQL I can do joins, inner queries, indexes on tables, to try and reduce the number items I have to transfer across the bus, and reduce the amount of data in RAM, also, improve performance of this queries, especially when there are large numbers of objects on the market or in the object table.

I think Ragosch feels that trying to do this sort of query with GLOs could be not very performant. Jeff may be able to suggest ways to use GLOs that I hadn't thought of that would satisfy the issues above.

Would javaspaces be able to cope with say 2 million objects in the objects table and say 10,000 items for sale in a performant maner?, a very quick look at this article suggests that this really isn't a good use of them. (I've never used java spaces, correct me if I'm wrong, I like learning new things so I won't take offence Smiley)

Endolf

Offline aNt

Senior Member




AFK


« Reply #17 - Posted 2006-07-16 22:16:49 »

http://www.gigaspaces.com/

have a look at a very hardcore jini/javaspace. there also the very cool blitz:

http://www.dancres.org/blitz/

no point me covering the whole thing on a forum when theres loads of info
out there- u can make a much more complex data models then just a few Entrys
hanging around a space ;P- dont want a flame war; i gave up on SQL a while
back- oracle:anything thats been around a while, doesnt make it the correct
thing to use today.


Offline Ragosch

Junior Member




Java games rock!


« Reply #18 - Posted 2006-07-17 17:15:30 »

I use SQL-like databases since the early days when it was called SEQUEL in the 80s; if you are used to real database systems and a powerful data query and manipulation language like SQL, you do not want to do that on your own again ever in your life. Is there any proof that javaspaces can provide all the beneficial features of a database system and performs well in comparision to SQL databases?- I think especially of fast joins between several normalized tables, complex selections over those joined tables, and result-sets which are grouped and sorted in the desired way (including standard functions like average, sum and such). If you know of any performance contests between databases and javaspaces, let me know and post a link here.

Those features are not trivial, a good database represents about 30 years of experience using relational databases and speed up of database queries by optimization of the query before it is performed on the data. I remember those days when I studied computer science in the early 80s where these database manipulation and query languages were born. I can remember the problems with optimization of database queries and therefore I dont want to use anything "new and modern" which is not proven safe, fast and reliable as far as database management and database query is concerned.

Ragosch
Offline aNt

Senior Member




AFK


« Reply #19 - Posted 2006-07-20 07:38:38 »

Then why bother with SGS, or Java for that matter?... EvE runs over Python for its serverside i think- its an open source framework, maybe go play with that, i guess thats 'proven and safe' now, took a lot of fixing/work by CPP to get it where it is today mind, not sure all there patches are publicly free...

Its a case of thinking about what Javaspace gives to SGS and the Java programer. I DO understand what you are saying.  im not backing Javaspaces, It just seems to be a better fit then SQL- being Javaspaces is also a disturbuted system of objects, and can be expanded across many computers within the same mindset as SGS. Heres a nice webcast/podcast (its just mp3 whatever).:

http://download.java.net/general/podcasts/j1-2k6-mtT01.mp3

Javaspaces is a newish mindset; Its infact been around a long time, and has been proven and is being used today. I'm sure there is a whole world of people out there that will give u performance mumble, if that makes you feel better.. Google 'Tuple space's' maybe you seem to like history, but thanks for your history lesson on databases (i didnt no SQL was also SEQUEL, thanks for that, well done; Billy). All in all it seems we can all write our own storage system regardless of the SGS team doing it for us- so use whatever you like, i just thought saving an object to your database was nicer then writing an SQL call... Looking up object by using matching would also be nice- if you want details on speed and stuff- i'm sure the JINI.org dudes can tell you that info my friend... I still havnt seen anything here that makes me feel writing aload of SQL is the way to go... But making a Player object and 'write'ing it to a space sounds cool to me...
Offline OverKill

Junior Member




Java games rock!


« Reply #20 - Posted 2006-07-21 07:10:53 »

Just want to drop a note and say that DB access would make the project very interresting and might attract more people to SGS.
Offline guruqu

Junior Newbie




Java games rock!


« Reply #21 - Posted 2006-07-21 14:13:12 »

There is quite a lot debate going on here. What i am suggesting is that we could do a GSQL like the hibernate did, they used HQL which at last is tranlsated into SQL language and get executed on whatever the DB server is. Maybe we can define our G query language and when we needed to execute it, we translate it into SQL and get execute than get the recordset we need again package it into GLOs and send back to the server program.
Offline Mr_Light

Senior Member


Medals: 1


shiny.


« Reply #22 - Posted 2006-07-21 18:13:20 »

not sure why you would want an other QL appart from legal issues, binding, control... ok so maybe there are some issues  Wink

anyways if your gonna do anything with your data you want it in javabeans anyways and since you want to tell of which type those are suppose to be you want a differend QL already. there is no overhead using orm, since doing fancy stuff directly and writing it performand is gonna be so error prone your game won't be released, duke nukem forever baby. tis mapping you create a projection of the relational database not a duplicate. and even going with that approch sql still doesn't need to be hidden as hibernate has proved. also hibernate doesn't do anything new as far as the database specialist is concerned. even so hibernate still allows you to overide. it's trival steps put togetter and allowing the programmer to easely use it, no non-natural flavors or colors added.

hibernate is hardly new is so old that these theys we even have a specification the JPA Java persistence api, and I've just noticed how it also includes the Java Persistence query language
JPQL apprently.

(I'm having a hard time finding the actual/official specification)

It's harder to read code than to write it. - it's even harder to write readable code.

The gospel of brother Riven: "The guarantee that all bugs are in *your* code is worth gold." Amen brother a-m-e-n.
Offline Jeff

JGO Coder




Got any cats?


« Reply #23 - Posted 2006-07-22 05:08:13 »

Well, I see two camps emering here.  Im wondering if maybe they don't both have merit...

One camp is looking for more advanced searchign in the GLO database.  Argument here is that it makes the GLOs more useful and valuable.

The other really wants to be able to fully integrate with a modern RDBMS.  Argument ehre is that for hravy database type activity, the RDBMS model is well understood and developed and SQLhas evolved to really be a power-hosue tool that you wouldnt want to have to go and completely re-invent.

On the latter, my mind is spinning at the moment towards something that allows JDBC use from inside SGS events.  The issue here is that SGS events shouldnt block but queries generally do... the solution for that as applied to other things like scoket usage is to have the querey spin off asynchronously and star ta new task when the answer returns....

Thoughts?

On the other, I thin kwe probably still need to explroe some on what kind of search is really required.  "Full Javaspaces" is an easy answer, but it cpmes with a bunch of other GLO restrictions Im not sure yet we want to inherit from JavaSpaces...

Got a question about Java and game programming?  Just new to the Java Game Development Community?  Try my FAQ.  Its likely you'll learn something!

http://wiki.java.net/bin/view/Games/JeffFAQ
Offline Ragosch

Junior Member




Java games rock!


« Reply #24 - Posted 2006-07-22 15:07:46 »

Returning the result-set to a different task is good for query-only access, because there is no problem with transactional-safety. This could be done with the current version of the SGS also using the raw sockets from the SimTask object. There is no real problem as long as you dont need to work and manipulate both, database tupels and the objectStore in a way which ensures transactional-safety. Where changes to the objectStore are only made if all changes to the database are made valid at the same time ... or if the SimTask needs to be aborted, all the database manipulation is rolled back also. This is the problem to solve and if you try to do that in different tasks it will become really nasty fast, because you need methods to ensure and repair consistency of both storages, database and objectStore, if one or the other of both tasks has failed but the other was valid and made permanent already.

Ragosch
Offline Jeff

JGO Coder




Got any cats?


« Reply #25 - Posted 2006-07-24 02:24:32 »

Hmm Isee the abort issue, though an abort shoudl result in it gettign rescheduled.

MAYBE what we need is some kind of JDBC tranasactio nwe can pass betwen the tasks to keep a JDBC transaction oepn until all the GLOs tuff completes and then be set to commit as aprt of that final event's commit...
... let me think some more and as always Im wide open to suggestiosn of other approaches..

Got a question about Java and game programming?  Just new to the Java Game Development Community?  Try my FAQ.  Its likely you'll learn something!

http://wiki.java.net/bin/view/Games/JeffFAQ
Offline Ragosch

Junior Member




Java games rock!


« Reply #26 - Posted 2006-07-24 11:36:37 »

MAYBE what we need is some kind of JDBC tranasactio nwe can pass betwen the tasks to keep a JDBC transaction oepn until all the GLOs tuff completes and then be set to commit as aprt of that final event's commit...

This comes near to a solution, because it creates a kind of combined task (consisting of 2 separate SimTasks) which continues using the already open and not yet commited transaction. My first idea was to have GLOs which can be put to sleep after a DB request and get activated again when the results are available, not counting the sleep time as active GLO time (a longer sleep would not cause an abort). Your idea now is something similar to that, because the combined task "sleeps" inbetween the commit of the first task and the activation of the second one. Nevertheless when the second task is started the first one is already made permanent and would need some kind of correction if the second one is aborted due to an issue - that is why I said "comes near to a solution".

Such a correction would be kind of difficult, because who should do that?- The second task cant, because it is the one which was aborted. A possible solution would be a kind of exception handler GLO ... but now it starts to get more complicated than using a single task with overall transactional safety IMO.

Ragosch
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

Riven (7 views)
2014-10-02 14:36:20

Pippogeek (41 views)
2014-09-24 16:13:29

Pippogeek (32 views)
2014-09-24 16:12:22

Pippogeek (22 views)
2014-09-24 16:12:06

Grunnt (47 views)
2014-09-23 14:38:19

radar3301 (30 views)
2014-09-21 23:33:17

BurntPizza (65 views)
2014-09-21 02:42:18

BurntPizza (37 views)
2014-09-21 01:30:30

moogie (44 views)
2014-09-21 00:26:15

UprightPath (53 views)
2014-09-20 20:14:06
List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50

List of Learning Resources
by SilverTiger
2014-07-31 16:26:06

List of Learning Resources
by SilverTiger
2014-07-31 11:54:12

HotSpot Options
by dleskov
2014-07-08 01:59:08
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!