Page 1 of 3

EMP – multiplayer game

Posted: Fri Sep 28, 2012 1:27 am
by EMP
OK, am I the only one attempting this?
No, it is not Oolite
I've been developing this as a hobby since 1992, so development is proceeding but very slowly, with just an hour or two spent per week. Then two years ago I discovered Oolite, and development stopped until I got up to Deadly status.
With the exception of the planet description and Thargoid insult generator, this is all my own code, no Elite or Oolite code has been used or looked at.
Graphics are not as amazing of Oolite, needs some work there.

Image

EMP
Deviations from Elite
• Multiplayer. This is the main feature, and the game has been built from the ground up to be server based, EMP is acronym for Elite Multi-Player. Without a server it will currently use a generated system (used for testing) Concept is that the player, when registering, will choose their species, and then their alliance (based on their species of choice). Choosing Insect will allow you to be a Thargoid.
• Multiple stars per system, including Blue Giant, Red Giant, Neutron Stars, Quark Stars, and Black Holes. XNA BasicEffect class imposes a limit of 3 light sources for the illumination in the system, so the nearest three stars are chosen.
• 3D Nebulae (Relative to system positions)
• Background stars are based on stars in 3D chart
• Planets with Atmospheres and Rings (All planets cubic projection)
• 3D cargo, 3D ship equipment, 3D people.
• 3D Star Chart. You don’t choose a system and then hyperspace to it, rather you need to fly out to the connecting wormhole.
• Gould Belt Region (aka Galactic Chart), it is where you are right now, so if you navigate to Earth, you will see familar star patterns. The familiar planets are in the eight standard regions, but I’ve regenerated them to be in 3D, Lave is at the centre of Chart 1, and is surrounded by the familiar planets but move away from Lave and you will find planets in proximity which are not in proximity in Elite.
• No wormhole creation other than at designated ‘Alderson’ points. Read Jerry Pournelle's Mote and Co-dominion series of books for the concept (Alderson Points and Alderson Tramlines). Alderson points are located away from the planetary system, you will need to fly to a known point, open the wormhole (same as in Elite, it uses fuel), fly into it, and you exit at the other system at the reciprocal point. This means you do have outbound and inbound ships, for a good reason.
• No 'Witchspace', so the Thargoids cannot intercept you while in transition, however they might blockade the known alderson points, and Thargoids seemingly know the whereabouts of more alderson points than GalCop. i.e. If you choose to play a Thargoid, you will see more available wormholes.
• No Lasers. What!!! Yep, no lasers, a design decision - your ship fires a plasma weapon (think Star Wars/Battlestar Galactica). You need to engage in close combat in order to destroy your opponent’s ship. The reason for this decision is the multi-player latency, a laser wouldn’t work because the target would have already moved when the laser was sent to the server and back out.
• No yaw control (to keep game play closer to original Elite).

Code: C# (Express Edition)
Graphics Engine: XNA 3.1
I tried to upgrade to 4.0, but my laptop’s graphics chip couldn't handle it.
Controls: Same controls as Acornsoft Elite.
A - fire, S - pitch down, X - pitch up, < - roll left, > - roll right, E - ECM, etc.


Completed
• Star background
• Space dust (need that indication of speed)
• HUD and messaging, temperature and Altitude, Fuel, Energy, etc. I rewrote this code to make the HUD look like Oolite, it originally looked like Elite.
• Ship controls - generally based on Acornsoft Elite, although I currently use F5 for external view.
• Collision Detection. Bounding Sphere test followed by Mueller's Triangle-Triangle intersection algorithm with extra test to eliminate false positives.
• Weapons fire
• Target ID
• Missile target, launch, and AI
• ECM
• Docking (Manual) and Launch (While docked, the system is still active). Also can dock at Generation Ships, which I’ve created two different models for so far.
• 3D star chart
• Wormholes
• Stars with coronas.
• Planets (including atmosphere and rings)
• 3D nebula
• Asteroids
• Fuel Scoop (for fuel from stars and scooping cargo)
• Joystick Control
• Currently most ship models ripped from Griffs OXPs, but sadly without the normal mapping and light mapping effects. I've converted the DAT files to Sketchup, then exported the .X files for XNA. A few ships are my own design, created in Sketchup. I need lots of Thargoids, so I've focused on those. I can't texture map, so they don’t look fantastic.
• Sounds ripped from Oolites Nosleep sounds.
• Station and ship lights, and other visual effects.
• Station types are based on the system and will not randomly change.
• Thargoid insults (gotta have those :), although I’m not sure how they will be implemented when the Thargoid warship is under player control.
• Current count is 3875 systems, 7367 stars, 7210 tramlines, and 46591 planets (including moons)

In Development
• System information
• Cargo manifest and station trade screen
• Docking Computer AI (Almost done but need to match station rotation)

Not started
• Vipers/Defenders to launch from station
• Missile Launch from AI ships
• Save Game
• In-Station Trade and equipment purchase.
• Economy modelling.
• Passengers/Slaves AI
• Multiplayer Arena Beta version (might be able to get this running fairly quickly if I give it a fixed system).
• Player to player messaging and insults
• Station bulletin boards – this would be required so that the administrator can create missions.
• Game Physics - bouncing of ships/asteroids, collision of small objects
• Model/Texture download - if you encounter a new ship the game needs to download its model and textures from the server.
• Wormhole travel to a new system needs to download the textures for the planets and moons in that system. I currently have accumulated over 20GB of planet textures.

I will need to ask permission from Griff and Nosleep for the models and sounds before I can post any arena version for testing, plus whomever created povray planets, although I did generate a couple of hundred random planets/moons and mapped them to cubic projections. Gave me a headache writing that code.

Will try to post a few more images when I have time. (my screen capture doesn't do well with the transparency, so the images don't do justice to actual display)

Re: Oolite Multiplayer? Please read

Posted: Fri Sep 28, 2012 8:38 am
by Tichy
EMP wrote:
Code: C# (Express Edition)
Graphics Engine: XNA 3.1
Does it work only for Windows?

Re: Oolite Multiplayer? Please read

Posted: Fri Sep 28, 2012 9:03 am
by JazHaz
Sounds great!

Re: EMP – multiplayer game

Posted: Fri Sep 28, 2012 11:08 am
by Kasero
A multiplayer Oo/E/lite? Sounds great. Very interesting :D

Re: EMP – multiplayer game

Posted: Fri Sep 28, 2012 11:46 am
by Shipbuilder
As far as I am aware there is no one else looking in to a multiplayer Elite based game.

I'm very impresses with what you have been putting together (I know from my own experiences putting together some oxp's for Oolite the amount of time that needs to be invested but then again when it is something you enjoy that's not so much of an issue).

I look forward to seeing some visuals.

Re: EMP – multiplayer game

Posted: Fri Sep 28, 2012 12:45 pm
by Griff
Good luck with your project! Please feel free to use/re-edit any of the models & textures from my OXPs :D

Re: EMP – multiplayer game

Posted: Sat Sep 29, 2012 6:39 am
by EMP
Hi Everyone, thanks for the feedback! It is encouraging that this is something people are wanting to see.
And thanks Griff for permission to use your models.

Yes, this is Windows Only (at the moment). I don't see why it couldn't be ported to other environments once it was up and running.

Following image is how the star systems are strung together. I created an algorithm to exclude join systems which are too close together (angular separation). Star Clusters (Star Charts) are joined together with long tramlines between blackholes, neutron stars, and quark stars. So there is no concept of the galactic hyperdrive, just fly through a wormhole as per normal. Also, as you cannot select a system and then hyperspace, the galactic/local chart isn't very useful other than for navigation purposes. You will still need to fly out to the corresponding wormhole to go to your destination system. This is a major deviation from the Elite/Oolite concept, but I've dreamed of having 3d star charts in Elite since 1984.

Image

The next deviation from Elite is that a cargo item or passenger/player are separate entities within a cargo pod or escape capsule (themselves ships), which can be nested within other ships. So you may end up with edible poet steaks within a cargo container within a Cobra Mk III within a space station. Cargo containers can contain up to 5 items - and you will need to purchase additional cargo containers if you have too many commodities. The reason for this is that if your ship explodes, less cargo items are floating in space. You start with 4 empty cargo containers (4 x 5 = 20 tonnes, and your ship can contain a maximum of 7 containers (7 x 5 = 35 tonnes, sound familiar?). Although I'm thinking that ship equipment will also take up cargo space - things like Energy Units could be left floating in space if your ship were to explode... and the more your ship is outfitted, the less cargo it can carry. It is also conceivable that your escape pod can be scooped by a passing ship, which means your ship (escape capsule) is now in the cargo hold of another ship. 'You are the ship' is a concept I am trying to avoid here - you are actually passenger zero.

I'm willing to take recommendations and ideas at this stage of development. What would you like to see?

Here is another screenshot - approaching a Thargoid Station (model is truncated D10 dice shape).

Image

And a generation ship (not a screenshot, just the Sketchup model)... but it looks the same in the game, but frame rate drops due to the complexity.
Image


The Cobra is easily small enough to fly through the engines. It is an interstellar ramjet afterall.

Both the generation ship and Thargoid station are dockable - I'm not sure how the game should respond to dock attempts by a different alliance. Something to consider. But the Gen-ship is neutral, and I'm thinking it's primary produce would be slaves (who are willingly wanting to get off the ship).

Thargoid stations are necessary for the players that choose to be Thargoids. Will need to think how a Thargoid economy would work and what items would be sold at their trading stations. Obviously the goal if playing a Thargoid will be to build up their ship weapons and armour to be able to take on the evil Galcop empire ships that have crept into their systems.

Re: EMP – multiplayer game

Posted: Sun Sep 30, 2012 11:12 am
by Gimbal Locke
Most interesting & promising project.
EMP wrote:
OK, am I the only one attempting this?
You're not the only one. I'm working on something myself (in Erlang), but I've not advanced as far as you have by any means.

There is also this project.

I hope to play your EMP game soon.

Re: EMP – multiplayer game

Posted: Sun Sep 30, 2012 4:17 pm
by JazHaz
Is there a download for people to try out?

Re: EMP – multiplayer game

Posted: Sun Sep 30, 2012 7:16 pm
by EMP
You're not the only one. I'm working on something myself (in Erlang), but I've not advanced as far as you have by any means.
Great, keep us posted on progress - any deviations from Elite other than multiplayer? Is it client server or peer to peer?
I've chosen client server so that the server can track which ships are in which system, allowing the possibility of it being a massively multiplayer game.
Is there a download for people to try out?
Good point, not at present, shouldn't take long to create a fixed-system version (I wouldn't want to upload 20GB of data), although it will still be about 300MB in size with all the resources. Sounds are copied from Oolite OXPs (generally NoSleep), so I'd probably need permission to post first. I would like to get some feedback, though I know where it lacks, mainly my poor graphics programming ability - any XNA developers want to help?
You will notice from the screenshots that the HUD isn't quite complete, although it is functional.

Also, any recommendations on where I would post it for download?

I've currently got a couple of Thargoid AIs shooting at you, they don't spawn thargons at the moment though. The intention is that they will be under player control so I won't build it into the AI. The idea is you could fire of a thargon the same as a missile is launched (and scoop it up once the target is destroyed).

Re: EMP – multiplayer game

Posted: Mon Oct 01, 2012 7:16 pm
by Gimbal Locke
EMP wrote:
You're not the only one. I'm working on something myself (in Erlang), but I've not advanced as far as you have by any means.
Great, keep us posted on progress - any deviations from Elite other than multiplayer? Is it client server or peer to peer?
I've chosen client server so that the server can track which ships are in which system, allowing the possibility of it being a massively multiplayer game.
I am also working on a client/server system, but it is nothing more than vapourware for now.

For a multiplayer game, it is impossible to avoid deviating from the original Elite and from Oolite since there are so many things in the game which only work in single-player (the most blatant examples of that are of course the energy bomb, but also the random chance to have a rock hermit when entering a system or whatever happens if a player dies).

I stick to the wormhole creation, I wanted to avoid stargates or Alderson points. The torus drives are being replaced by afterburners (no mass-lock), which use a different fuel than the hyperdrives. For the Thargoids, I have sunless systems between the known systems which are only on the Thargoid's maps and which can be reached by a misjump by the non-Thargoid players but without being sure where exactly they will end up. I intend to equip some Thargoid ships with "hyperjump magnets" which can attract jumping ships in the neighbourhood.

For the lasers, I keep some past states against which I check if it was a hit or miss at the time of the shot.

But as I said before, "Multilite" (as I call it for now) is not yet playable at all. I'm learning the Erlang programming language and its OTP libraries as I go along with this project, so progress is very slow. I will post in this bulletin board when (or if) I have something to show. Until then, there is no need to pay any attention to me.

Anyway, the choices you have made in deviating from Elite seem very interesting, gratz for what you have achieved already. I'm looking forward to playing EMP.
EMP wrote:
Also, any recommendations on where I would post it for download?
Check out SourceForge or Google Code.

Re: EMP – multiplayer game

Posted: Mon Oct 01, 2012 10:24 pm
by EMP
For a multiplayer game, it is impossible to avoid deviating from the original Elite and from Oolite since there are so many things in the game which only work in single-player (the most blatant examples of that are of course the energy bomb, but also the random chance to have a rock hermit when entering a system or whatever happens if a player dies).
I considered not having an energy bomb at all, but plan to implement a solution where it is actually a bomb like Oolite's Quirium Cascade Mine, but without the cascade effect.

In my application there are no randomly generated rock hermits or even asteroids. Everything is created in advance on the server.
I can insert new asteroids as time goes by and players blast the existing ones away.
I stick to the wormhole creation, I wanted to avoid stargates or Alderson points. The torus drives are being replaced by afterburners (no mass-lock), which use a different fuel than the hyperdrives. For the Thargoids, I have sunless systems between the known systems which are only on the Thargoid's maps and which can be reached by a misjump by the non-Thargoid players but without being sure where exactly they will end up. I intend to equip some Thargoid ships with "hyperjump magnets" which can attract jumping ships in the neighbourhood.
Good choice, I considered starless systems but decided against it as Alderson Tramlines only form between two stars, and I wanted Alderson Tramlines to force players to fly on outbound trajectories which coincide with the same inbound trajectories, so chances of meeting another player is high, rather than close to zero. My Thargoids will know about more tramlines, even within Galcop space, which will allow incursions past blockades at some systems. This has already been created in the database, and means that Galcop vessels can't find Thargoid worlds (until they observe the wormholes being used).

I'm sticking with mass-lock, and not having afterburners (fuel injectors) - otherwise I found that a small ship could fly right through a cargo container without a collision detection.
Besides that, I always thought fuel injectors to be a cheat, and it would ruin multiplayer dogfights.
For the lasers, I keep some past states against which I check if it was a hit or miss at the time of the shot
If there is some latency that could mean an unfair kill, which is the reason I abandoned lasers in my game. Impact determination is by the ship being shot at, not the ship doing the firing.

Until then, there is no need to pay any attention to me
Not at all, I'm interested in what solutions you come up with, such as your witchspace interdictor (hyperjump magnets) solution.



Now I need to get my head around Quaternions again, still trying to figure out how to match station rotation during auto-dock...

Re: EMP – multiplayer game

Posted: Mon Oct 01, 2012 11:27 pm
by Gimbal Locke
EMP wrote:
Now I need to get my head around Quaternions again, still trying to figure out how to match station rotation during auto-dock...
That reminds me of this anecdote in an interview (Acorn User, September 1995) with Clive Gringras, one of the creators of Arc Elite:
Sorting the men from the boys

Our discussions with David Braben and Ian Bell sometimes ended up with Ian or David saying that a particular aspect of the game was quite tricky. Docking computers was a case in point; Ian said they should "sort the men from the boys". He was right.

The first hurdle with docking, as any Commander knows, is getting lined-up with the letterbox (opening slot) of the space station. This was achieved by marking a point out in front of the letterbox with an invisible buoy. However, lining up with the letterbox is the least of a Commander's worries; it's the "boxing" or matching the rotation of the letterbox that really flummoxes.

We decided to imagine that there was one "arrow" or vector sticking out of the right wing of the ship and one out of the left side of the space station. As the station rotated, the two vectors described various positions of the hands of a clock. When the vectors pointed in the same direction, it was safe to dock without scraping the craft. Therefore we coded the flight program to minimise at all times the angle between the two vectors. Because the flight program actually manipulated the Cobra, the added bonus was that - if present - yaw boosters were utilised, and the player could still use the Cobra in case of trouble. Needless to say, the next communication from Commander Bell began, "Hello men..."!

Re: EMP – multiplayer game

Posted: Tue Oct 02, 2012 7:04 am
by EMP
Wow! Thanks! That was enough information to allow me to implement auto-dock ship rotation into the letterbox in just four lines of code!
This really is the friendliest board this side of Riedquat. :D

Actually, it was simpler than described, I just needed a vector offset from the station rotation and match the roll to that.

My auto-dock code is a subset of waypoint following code, to allow me to put system ships into predefined orbits or other routes such as figure-eight planet-moon orbits.

Currently the executable (no DLLs) is 509KB and that doesn't include the models, textures, and sounds.
I really admire Braben and Bell for implementing Elite on an 8-bit 2MHz 6502 processor in about 20KB of RAM.

Re: EMP – multiplayer game

Posted: Fri Oct 05, 2012 7:55 am
by EMP
Following a Ferdelance into the docking bay - for some reason it was not as steady as the Cobra, it wobbled more, during the docking process.

Image

I'm not too concerned, as I don't think that AI ships in a multiplayer version will be auto-docking.

I'm setting up an Arena Server, just the one star system, might add another later, but I want to get the multiplayer aspect sorted before I tackle other game details such as trade.