Java proof of concept game

This is a actualy three projects in one im proposing here. The purpose of these three projects is to built a complete however small freeware java game demo with a new Java game engine especialy built for that purpose.

The target is mostly the games community in general, the game magazines and game news sites in particular. The quality level to aim at with this demo would have to surpass HL2. Im not saying that Java game programmers in this site could do this but trying alone would have its benefits.

The benefits we can take from this are many:

1- Deep knowledge of how a game works as a complete system.

2- A fully documented and fully functional game example (however small) for others to learn and follow.

3- A process that can be used to test and finely improve existing java game apis.

4- A proof of concept to show others that Java can match or even be better than common technology used today for making games.

5- Showing the use of java game programming techniques that are optimal and easy to implement but hard in other languages, including: dynamic programming, dynamic game reconfiguration, macosx support out of the box, networking.

First project proposal follows:

The first project proposal is a game engine that combines the strengths of every Java api out there but without the problems each one brings. Being a small community it would be crytical and much more productive for everyone to work on a single solution.

Most java games apis share one thing in common that is a unified interface (a sort of Toolkit) forcebly linked to a native library that provides access to all required core functionality of a game engine including: os system services, windowing system, input devices, timer, accelerated gl api, accelerated sound api.

Besides this “toolkit” or gamebox as i like to call it myself it would have the following caracteristics:

1- Modular, organized in services that support a common interface and could themselves be OR not associated with native libraries parts of the engine where it would be required.

2- Dynamically configurable, changing service instances or reconfiguring them would not require any restart of the game or reloading of the game model. In the worst circunstances the game would pause for a moment showing an apropriate gui to resume the game exactly where it was later.

3- MVC, use of the model-view-controller pattern. A clear and physical distiction between controller code, scengraph and game model.

4- Use of or extending the most effective java libraries like for example the Collections api instead of creation yet another library for trees or sets.

5- Dynamic recompilation and caching, with two representations of the game data structures. One is the logical representation. The other a compilation of the logical representation more friendly to the service being used (e.g. opengl, directx, software rendering engine). Recaching, like in 2, does not imply the game needs to restart since the status of the game is allways represented in the logical representation.

The 2nd project proposal follows:

The second project proposal is about the design (gameplay design) of the small demo itself. NOTE this is a proposal that is hard to achieve technicaly and that would showproof the qualities of Java under very complex types of games.

The situation complicates if we talk about a space exploration rpg where the player can be in many situations hard to combine in the same game:

  • The player can be walking inside a space station of several kilometers looking ouside a window and seeing the rest of the spacestation in the distance with the nearby planet behind.

  • The player can be walking outside the space station, where there is no gravity (assuming the existence of one to simulate gravity inside the space station), with magnetic boots that can be turned on/off and adapt to the contours of the space station.

  • The player will walk the space station corridors inot the hangar, enter his space ship and assume control of it (avatar change).

  • The ship will wait for the space station hangar doors to open and get order to leave. The space station will assume automatic control and drive the ship outside. The ship will then fly to the planet surface, first enteringthe amosphere the aproaching a landing pad on the surface and landing. All this happens seamlessly without any pauses for loading.

  • The player will leave the ship enter a gravitational hoover or another type of land transportation and by using the surface map and auto-pilot move to its destination. Again it all happens seamlessly.

  • The player hoover reaches its destination and the player leaves the vehicle. The player the enter a bigger starship. This time its a space cruiser equiped with a special engine foe hyperspace travel. This cruiser is like a small city. The player enters the cruiser and takes transportation to the command center. There he assumes control of the cruiser from the on-board computer.

  • This huge cruiser leaves the planet atmsophere and after leaving orbit enters initiates a travel from the sun to the nearby start Alpha Centaury in a couple of seconds using an engine tecnhology that allows faster than light travel without any incurring dangers. This also happens seamlessly. The cruiser has a realistic representation of the nearby stars in the galaxy.

NOTE: For gameplay and tecnical reasons and because this would be a small demo its necessary to have artificial bounds, so the game playground would be the nearby 10 star systems (aproximately) close to the Sun.

The complexity of this demo is on the change of scale that can variate from a human sized avatar (maybe walking on a small planet and looking at things as small as a fly) to a city size cruiser traveling at speeds faster than in a realisticaly represented universe with distances of a magnitude of light-years and all this happening seamlessly.

The story of the demo is not original original but its very effective. :wink:

Fourthy years ago man has discovered on Earth a fully operatable and very advanced alien base. The location of this base was somewhere burried deep underground the african jungle. With the knowledge found man soon evolved to the state of becoming a space-faring civilation with periodic travels to the nearby star systems.

History records say that once man initiated the first hyperspace travel short after the first contact with an alien race was made. Fortunatly this was a race more interested in space exploration and commerce than war. Later other alien races where found.

The political map of the nearby group of stars is composed of 4-5 alien space-faring races each one ocupying on star system and claiming ownership of several other planets, most of all pacific races.

The situation alters itself after one of these alien races discovers another ancient ruin and suddenly all the population of an entire star-system dispears. The game starts with this news item on the interspacial news service.

You as a freelancer pilot will be offered contracts and services from several sources and organizations. These organizations include the Earth Space Federation (ESF), commercial organizations, militar organizations. Contracts include exploring ancient ruins, finding criminals, transporting or escorting convois, investigate situations as a private detective. A criminal paralel carrer may also be undertaken where the player can acept illegal contracts for murdering, stealing, transporting illegal goods.

From the game universe perspective, like any self-respecting rpg, what the player does affects the reactions the several universe factions and people have of the player. Reputation drives their behavior and the player has a reputation with each one of these factions and special npcs.

The universe is also dynamic in the sense that it evolves and changes independtly of what the player does. We could consider as a political and social couldron being simulated where the player as a role that can influence the outcome of it. But the game will never stop wating for the player to take an action for the entire universe to move on.

The last project proposal follows:

The last project proposal has to do with a document meta-model that can be used for defining data formats for documents that game editors can export to.

This model would have to be one that would be suficiently flexible to be accepted by all and not so complex and cumbersome as xml.

This project would include:

  • a meta-format parser, with syntax similar to vrml or xml

  • a doc model to represent a parser instance of this meta-format in memory

  • a database of specifications using this meta-format for 3d graphics, animations, music, game databases, etc…

  • a set of small tools to produce instances of data in these formats

(sounding like Cas):

Not worth it, just go and write a few small games yourself, and stop messing about trying to design libraries and fancy stuff like that

(sounding like 99% of game developers):

This is a waste of time, you’ll never get anywhere, it’s far too big. Do tetris. If you’ve done tetris, do multiplayer tetris. If you’ve done that, do multiplayer bomberman. If you’ve done THAT, then you are probably experienced enough to write a 3D but still simple side-scrolling shoot-em-up.

If you can’t finish the entire thing in two months working part-time then it’s too big - unless you’ve actually written and released complete games before.

(sounding like kevglass):

Limit yourself to 24 hours (or 48) and see how far you get. You’ll probably find the code you write is better, the game is MUCH better, and you actually finish writing it (!) - instead of having lots of started projects that never get anywhere near completion.

(personally):

If you want to fulfil your stated aims, delete everything else you wrote above. Just write a simple-yet-extensible game (scrolling shoot-em-up, or FPS, or platformer). ONCE IT WORKS and IS FINISHED, go back and start doing the aims you listed, like trying to invent good libraries and things.

As it stands, you seem to be in danger of duplicating work that you could more usefully have done inside one of the existing projects (LWJGL, JME, or Xith) depending upon which levels of your aims you’re working on. Aside from the fact that you’re biting off much more than you can chew :).

And…

Sounds like you already have a definite idea of the game you want to make (space rpg). That will limit the number of interested developers; you’d have to find people to buy into your idea.

Personally, I have no interest in writing a bunch of low level code. If I were to engage in a large scale project then I’d use ‘stuff already out there’ ie xith, jme, jode etc… The 4k games contest taught me a valuable lesson; this stuff is supposed to be FUN 8)

Imho, the only way to get a project going is to complete a demo then go looking for volunteers. The internet is full of people that sit around and post in forums…

True, so true.

N E V E R

I will, of course, be delighted if you prove me wrong on all counts :).

This sounds a bit like my project here, but x100 :o

FWIW… Mine is a game engine from scratch, specifically designed for an FPS style space shooter, I am over 4 months into the project and need about another 8-12 months to complete it.

If my estimate of scale is correct, what you are proposing would take about a 100 developers/artists (mostly artists once the engine is built) around 2-4 years, working part-time (taking into account greater complexity, group effort, etc.).

There are people on this board with the skills to work on such a project, but I am doubting you could find more then a dozen, and of them few if any aren’t already working on something of their own.

If you want a pretty much apples->apples comparison with another project you need look no further than Tribal Trouble. TT has a low-level binding coded more or less from scratch for all 3 major desktop platforms (the LWJGL - Elias put most of the effort into it), a custom 3D world renderer and bespoke model animation code, an entire skinnable GUI system, etc. etc. etc. etc. etc. And to cap it all a proper website.

It’s taken them roughly 10 “man years” to get from concept to release! And not inconsiderable sums paid for artwork and music.

Help 'em out and buy a copy :wink:

Cas :slight_smile:

From the description above, I don’t think even Tribal Trouble is apples to apples. TT being much smaller.

But, Tribal Trouble IS a great example of something built in Java and it’s done now. So there’s the proof it can be done.

Well, there you go. Considerably smaller in scope and still 10 years’ development.

Cas :slight_smile:

No I feel special- the two years it has taken me to complete half a model and some terrain generation code (not quite right yet) seems like I’m roaring along…

No I just have to work out what kind of game it is and how I can make it fun.

I think I’ll write it and then design it after…

I don’t think it would take 10 or 5 man-years to all the projects i mentioned there. But if that scare you guys then do it for sport a bit at a time without any pretension to complete any of the projects mentioned but for the fun beating up the obstacles that appear in the way and also for the insight this beating would give us.

The three projects i proposed are independent of each other. I have already something 50% done for the third project. Its a parser and a tokeniterator called respectively XParser and XTokenIterator (read x as experimental) and a basic command scripting language called CL. I will put this on the shared code forum. It will be like an interactive programming session.

Has for the 2nd project i don’t see the technical problems in making such demo. Sure is complex but complete seamless worlds with dynamic loading of game content are common these days and being complex is one more reason for being done in Java. Space partitioning would allow us to do this very easly and random generated stuff would allow us to have huge universes without requiring hand-made content for everything, thus reducing dynamic game data loading from the disk by a lot. And remenber people it would only be a small demo with less than 20 star systems or so.

Just ditch my first poject proposition since its the one that raises more controversy. However i feel that dynamic game comfiguration and dynamic loading of services is something that every Java game engine should have in order to stand above C++ game engines and to make development a lot easier.

I see some big problem with making that. First at all I spend 7 years on a random generation of stuff. I thing even now there is a lot of work to research.
Seemless worlds aren’t a problem. Even if you are doing it in a system that uses the nearby node you could just compute transmision into supernode with minimal distortion and then back as needed.
The problem is that cruiser, you said a realistic nearby stars. (All of them? Are you sure astronomers know nearest 50 stars?) Then why not a realistic ship? Launch from planet? No shutles? Wasn’t it game methodology of Privateer?
Another problem is how much of time would you like to spend on that ship. 200?
BTW is Proxima obiting around an Alpha and beta, or is it a rogue star?

" I see some big problem with making that. First at all I spend 7 years on a random generation of stuff. I thing even now there is a lot of work to research. "

I was only talking about using generated content not using the last and most complex techniques. Im sure there are a lot of interesting solutions that can be used and will provide a nice result compare to what other games have done. This is an area in games that is greatly unused but has great potential in games.

" Seemless worlds aren’t a problem. Even if you are doing it in a system that uses the nearby node you could just compute transmision into supernode with minimal distortion and then back as needed. "

Thats one good hint.

" The problem is that cruiser, you said a realistic nearby stars. (All of them? Are you sure astronomers know nearest 50 stars?) "

Well no. Im sure the astronomers know every star visible from the earth or detectable with the x-ray telescopes. Its everything in astronomers databases. But it would be impratical to obtain this imformation or to do quests covering this amount of space. I guess that an amount of star systems you can count with the fingers of your hand would be enough. :wink: Plus there are also a lot of planets and moons to cover but most of them would be there only for posing.

I was refering about generating the surface of planets but with techniques that would allow to seamlessly mix hand made content with generated. Maybe some basic editing capabilites for proceduraly generated worlds like cuting places and adding static meshes.

"Then why not a realistic ship? Launch from planet? No shutles? Wasn’t it game methodology of Privateer? Another problem is how much of time would you like to spend on that ship. 200?
BTW is Proxima obiting around an Alpha and beta, or is it a rogue star? "

Its a mater of guessing what would be the future of space exploration. What would be the science fiction lore of this game. We can guess many things here but i think it wouldn’t be to have a ship take years in space to travel to a nearby star system. How would we be able to make up a plot for such a game ? Lets just say Einstein was not completely right and that future space travelers can travel long distances in space in a mater of seconds.

On the realism subject when i say realistic means realistic in game design terms. It means realistic as long as its fun if possible both but if not possible then at least fun but with the details that break the illusion of realism hiden from the player.

" BTW is Proxima obiting around an Alpha and beta, or is it a rogue star? "

Im curious why are you asking this ?

A good choice for me on a game like this would restrict itself to the closest stars and star sytems. Something like:

Proxima Centauri
Alpha Centauri Alpha
Alpha Centauri Beta
Barnards Star
Sirius A
Sirius B

This is a lot of stuff already including planets, moons, asteroids, asteroid belts, rings. Besides all the small planets would be landable and their climate and geography would be aproximately accurate (whitout going into extremes) with astronomical information availabe.

Some stars like the Barnards star, and the two Alpha Centauris would be the habitats of some of the alien races while other alien races would be native from other suns not represented in the game and would exist only as space travelers with huge space cruisers being their central control.

I seem to recall Frontier was astronomically “correct” for some distance around the solar system.

Cas :slight_smile:

Frontier and First Encounters were more realistic in terms of how solar systems were modelled, how gravity and your ship’s momentum worked - all of that kind of stuff.

Unfortunately, they were a lot less fun than the original Elite where nothing was realistic but the game was fun to play

[quote]Well no. Im sure the astronomers know every star visible from the earth or detectable with the x-ray telescopes. Its everything in astronomers databases
[/quote]
X ray telescopes? There are X ray detectors, but because of a great problem with shaping of x rays it might be really big overshot to compare them with telescopes.

[quote]I was refering about generating the surface of planets but with techniques that would allow to seamlessly mix hand made content with generated.
[/quote]
http://volny.cz/sscom has a some refference images about planet’s map generation.
I didn’t have a serious problem with integration of hand made with computer generated, yet.

[quote]Im curious why are you asking this ?
[/quote]
To discover your level of astronomical knowledge. It would be bit silly to have simillar problems as sometimes Star wars has.

re Breakfast

Some gamers like more longer lasting detailed game, than short “fun” one. There are multiple fly simulators that are even more detailed than FE was. Of course FE needed a targeting asistant, but they didn’t like the idea to make it completely independent on a skill. Actually there were some addons that did space combat significantly nicer, but you probably know them.

Star wars ??? Which one of the star wars games and what problems are you talking about ?

We don’t need a rocket scinetist to read a basic book about astronomy and check star positions and relative sizes. Plus it would be impratical to represent every scientific detail in a game. Im happy already if i could see realistic distances and orbit scenes similar to those images we see in real space exploration. Unfortunatly for most space exploration games these days, acuracy in representing planets and stars, doesn’t go as far as a puting a textured ball in front of the player.

As for gameplay and pure fun, lets face it guys, they just don’t make games like Elite, Starflight, Starcontrol, etc… anymore.