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.

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 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.

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.

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 .

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

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...

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.

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. 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:

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.

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

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.

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 ?

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.

To discover your level of astronomical knowledge. It would be bit silly to have simillar problems as sometimes Star wars has.

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.

just quicky browsing i noticed that your panning somthing about seemless and randonly generated textures and worls. Just remeber Seeding must be made procedural and done one by one or threads will cause errors, 2 save game will be a bitch. and when you use the good ol randomly generated terain and world's you find you miss the personel tough. I'm just a hobbyist but i woprked on simmilar stuff of my own just make the filters all pre processable and availible at runtime so make as many just small as you need and consider the gameplay. you make the gameplay not the computer. that is the fun stuff.

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 thought of the same thing! Java games should go beyond just doing "as fast as C++" to something that take advantage of the Java platform and makes it unique. I have looking for solutions for game architecture for a few months because I couldn't stand the horrible tutorials for developing games.

I really dislike the idea of boxed games, so I thought of using the base game framework as a means for distributing software. So basically the user wouldn't buy several games, he would instead install the platform with one game, and optionally install others through this channel. Also updates, patches and new features would be more easily installed.

I was thinking about using OSGI framework. Have you ever heard of it? I'd use the Eclipse's implementation of it. Yes, real big softwares such as Eclipse use it. In this framework you program Bundles, and those bundles provide services that can be used by other Bundes. It's fairly straight-forward to develop on it. It supports dynamic loading and unloading of Bundles, and several versions of the same Bundles loaded at the same time.

The cool thing of OSGI is that it's intended for mobile devices as well, so it could be used for both. I'm about to start studying J2ME to learn the "how" to do a thing that works for mobile/desktop.

I intended to build a (very simple) demos to each milestone of such platform, to show off the capabilities.

Anyway, I'm struggling with 3D loaders right now. I know zero of 3D modelling, I have to learn Blender but I'm trying to figure out how to load the files produced into Java. I didn't want to use a format too obsolete, for learning years later that I'll to rewrite 90% of my code.

I really dislike the idea of boxed games, so I thought of using the base game framework as a means for distributing software. So basically the user wouldn't buy several games, he would instead install the platform with one game, and optionally install others through this channel. Also updates, patches and new features would be more easily installed.

I had the same idea as well - For the system I work on during my day job, I do something similar and I thought why not do the same with a game engine. I am using the engine I've built in two VERY different games- partially to epand on the infrastructure and determine the points of entry - from there it's just a factory method away from a games platofrm.

There actually is something similar to this that was already done by someone (on this board) that launches various demos from an infrastructure. This idea really just takes that a step further into supporting services specifically for games - game engine, renderer, sound engine, event engine, etc.

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