[GAME] EmptyEpsilon

edited February 2015 in EmptyEpsilon
Open source clone of Spaceship Artemis - A bridge simulator. Build with the SeriousProton engine.


Source Code:

Operating Systems: 
Windows: FREE
Linux: FREE

Unreleased (in Development) - source code available



  • Developer here.

    Still under heavy development. Currently working on getting most features found in Artemis implemented. But with a few changes.

    Started on this for 4 main reasons:
    - Artemis has no support to run properly on Linux/MacOS
    - Main screen view does not really look like space, lacks FSAA support and is pretty much ambient lit.
    - Science and Comms have much less to do then the other officers.
    - GameMaster screen is a joke. You want to order AI ships around, see what they are thinking. You want to be in control as GM.

    As for progress (as of today, 22-06-2014)
    Code is up to the point where Helms, Weapons and Science is working now. With flying around different ships, working client/server code, loading of homing missiles and firing them, beam-weapons auto-firing at the current target.
    AI ships can attack you, but have no "bigger plan" like fleets. And simply stand still if you are too far away. (5km range)
    There are bases, but no docking.

    But lots is missing, no nukes, no mines, no ECM, no nebulae, no asteroids. Some of this stuff is easy to add. But first I want to get Comms and Engineering working so all officers have a minimal role.
  • Another progress update. (25-06-2014)

    Implemented the energy&coolant systems for the engineering station. The coolant is more dynamic then the Artemis coolant, no coolant units, just sliders where other sliders go do if you adjust another one up and use up all coolant.

    All systems can be damaged by overheating, and other damage when shields are down, and damage can currently not be repaired yet.
    Not being a fan of the 3D repair view of Artemis I'm working on a room-view like FTL has. Which I think offers more potential.

    Still no comms yet. But some one at the office give a nice idea. What if you could have the comms officer send out boarding parties. This way you could board enemy ships, giving more combat options, and give the comms officer a lot more to do.
    Instead of blowing up a ship, raid it for supplies? Or place bombs in it to blow it up? Just make sure you beam back your party before the ship blows.
  • You may also want to look at how SpaceNerdsInSpace does repairs, it's different then Artemis and uses a top down view.

    I agree that commutations needs more too do, I also had the boarding party idea, and some others:
    • Should be able to try and hack other ships, using word games in a console
    • Should be able to get weapons to launch probes and set up data networks to extend Science's range and detail
    • Should be responsible for the NPC crew, telling people to go to medical, making sure people are working at peat efficiency (depends how detailed you want to go).
    • Should be able to set up merchant deals with stations and ships.
    • Should be able to intercept messages from other ships to learn tactics and 'secret' quests.
  • Oh, nice ideas. I also had the idea to have comms request a re-supply ship.

    The merchant deals would fit nicely with the fact that I can have neutral, enemy or friendly stations. For supplies from neutral stations you need to make deals.

    Most likely have my first actually game-testing session tonight. So fixing up some things to make it more playable. Added a GameMaster screen (server only) which can spawn new ships, move stuff around, delete stuff, and change AI behaviour.

    Also created 5 factions, some of which are friendly towards each other, some not. So you can create space battles between other factions.

    Hope to add nukes before tonight.
  • edited June 2014
    One of the things I miss from older versions Artemis is that Comms controlled the Main screen. That gave Comms more to do and didn't rely on the busier Weapons and Helm players to control it. 

    The game's looking good so far. Might try to get a 2 player demo game going tonight.

  • I don't understand why any station can't controll the screen. Different people could have different reasons to show stuff on the main screen. Weapons may need to show a target, Nav a destination, Comms the communicating ship, Sciences an anomaly, Engineering the status display. It's supposed to be cooperative so let people cooperate :) It should be up to the crew to decide what station does normal view changes.
  • edited June 2014
    I pretty much build the code so that I can quickly change any station to be the main screen controller. Having it on comms actually doesn't sound that bad. And maybe only show the buttons somewhere else if you do not have a comms officer (guess that's the reason why it's in helms/weapons, because comms is listed as optional)

    Still working on the repair system. Which is quite some work.
    Did add nukes, mines and EMPs. (Which was low-hanging fruit) And we had a small test session, which highlighted 2 bugs. First the multiplayer didn't work at all, server hang. Fixed that, then 1 computer didn't seem to discover the server at all, so I need to add manual-IP entry if the auto-detect fails.

    Other then that, people really liked it. Until I spawned a "Dreadnought", which pretty much blew them up before they knew what was happening. It's pretty much packed with weapons, with 20 homing missiles, 5 front facing beams, and 2 back facing beams, and they attacked it heads-on.
    Then I showed them I could actually stage NPC battles by spawning ships of different factions. Which is a bit like playing with ants actually :-)

    The missiles, mines, nukes & EMPs have no 3D model yet, so they show up as a single white pixel in the main-screen view.
    Another important discovery was the lack of sound, it really made a huge difference (we played 2 games of Artemis before we played our test session) so I really need to add some good sound effects for beams, hull-damage and missiles.
    Docking is also an important feature which made it feel "incomplete", much more so then the missing comm station.

    Also attempted to build on MacOS, which caused some issues. Fixed those, and managed to build&run it, but we didn't include a Mac in the test yet. Didn't test Linux yet, but I'm not expecting much issues there.

    Oh, and everyone loved the fact that getting destroyed puts all the stations on "static snow" where only the main screen shows 3D, and everyone else is just looking at pure static on their console. Makes it really clear that you're dead-dead. But does not shut down the game. You could actually spawn a new player ship and continue.

    (Make sure to update both the SeriousProton engine as well as the main code, as the engine also gets updates. I split the engine from the rest as I'm using the engine in other projects as well. But the Multiplayer code is EmptyEpsilon specific right now)
  • Finally got repair crews working.
    As well as docking. Which only recharges energy right now. And works slightly different, undocking is an active action, not just a "fire engines".
    And changed the button artwork (looks more like a black&white star-trek now then a bad Artemis knockoff)
    Also made every position have the main-screen buttons.
    And, added some sound-effects which adds a lot to the overall feeling.

    Next up, comms.

    (Compared to Artemis, I'm currently lacking comms, asteroid fields, nebulas, smarter AI, beam-frequencies and a few features that I couldn't care less about)
  • Not sure if anyone is still following this, but most likely someone is.

    I implemented astroids, some more AI functions, scenario selection, and comms.
    Comms and scenarios are loaded from LUA scripts. Making it quite powerful. Example scenario:
    This scenario surrounds you with astroids at 10 to 20km distance, with some mines in there as well. It also creates a bunch of enemies at 7-10km distance, and 1 group of enemies with a Dreadnought enemy as "leader".
    There is 1 neutral station at the center, so you can re-stock homing missiles and mines there.

    The neutral station comms is controlled by a script as well.
    Right now it does not allow you to init comms if it's an enemy station, and it allows you to recharge weapons if you are friendly or neutral. Neutral stations only give 50% homing missles and 100% mines. No nukes or EMPs. And friendly stations can recharge everything.

    Graphical wise I added particles, which means missiles have trails now, engines show engine tails, and mines have place-holder art.

    Oh, and engine wise, it currently supports up to 32 player controlled ships. This does mean that you need to have 191 computers connected to the server (to man each station + main screen), which might not work with the current network implementation. And, I have no idea where to find 192 players...
  • edited July 2014
    I've been following the game since I found it. Been pulling & compiling it about once a day (if not more). Hoping to get to play with more people soon. Might get to play a quick game this weekend.
    You've came a long way in a short period of time. Keep up the good work.

    If I can figure out why the server is Core Dumping on Linux, I'll get to see the new changes. Figured it out. Working fine now.
  • I've followed along as well, but have had difficulty building/running the project
  • edited July 2014
    jeffM, you'll need Code::Blocks, SFML 2.1 (in the same directory as EmptyEpsilon & SeriousProton, make sure it's called SFML-2.1). I had to change the EmptyEpsilon.cbp file and remove the "-d" on the sfml portion (several lines in the debug section) to get it to compile. I created a script to change this for me each time and create a Makefile so I could compile using make instead of having to launch Code::Blocks.
  • I am aware that it uses Codeblocks and SFML. If you change the build target to release it doesn't do the debug stuff so you don't need to edit the script.

    I go it to build, it just does not run. There are entry point issues with SFML. It's possible I did not get the correct version that works with the MINGW compiler on windows, so I'll have to double check hat.

    I have built Visual Studio projects for the entire system but they won't compile under MSBuild due to how some of the code is structured (specifically the lua scripting integration and the use of POSIX libs)

    On Linux it has issues finding OpenGL32 and GLU.

    I will bang on it some more this weekend.
  • We did a test session today, 5 players.

    I found some bugs. Main one was that the docking state didn't work properly on clients, so undocking could only be done on the server. And comms had some issues. But fixed those already. Also had some multiplayer syncing issues when there where a lot of objects in the game. Fixed that problem, but nobody noticed while playing.

    Also need to work on some balancing stuff, and that you can target missiles with beams. Next was the "main screen on all stations", which was a bit of a disaster, everyone was touching the main-screen controls all the time. So changed that into an option that you can select if you can control the main-screen.

    The AI really needs some more work. First captain pretty much won the scenario by jumping 20km away and have all the enemies crash into the mine/asteroid field.
    Also need to create a nice default scenario where you just get some random enemies attacking a bunch of stations, with some random asteroid and mine fields.

    As on building. Managed to build on Windows, Mac and Linux. Did need to do some adjustments for Linux and Mac. Will provide Makefiles later on, as CodeBlocks is nice for me to develop in, but it's not that easy to setup portable make methods.
    (PS, I care little for getting it to work with visual studio)
    (For Linux, you need to change the "OpenGL32" into "GL" and "GLU" as link libraries)

    Overall, I'm not unhappy at all.
    Especially when our engineer found out that you could self-destruct and go out in a blaze of glory. (Overheating the reactor will eventually blow up your ship in a large explosion)
  • Oh, and once I get to a bit more stable state, I'll put releases online.
  • What compiler are you using with Codeblocks? the MINGW it comes with or something else like TDM GCC?
  • By switching the compiler to TDM GCC and using that build of SFML I am now able to build on windows.

    By changing the GL libs you mentioned and removing sfml-main from the link dependencies I am able to build on linux.
  • Also, have I seen that ship somewhere else? it looks very familiar.
  • 3D models are from:
    The free ones, sorry, I still need to add proper attribution for that. And hope to raise donations for more of his models once I need them.
    The music is from www.matthewpablo.com
    And the sound effects where made with http://www.bfxr.net/

    kwadroke already pointed me to http://www.solcommand.com/ which also has a bunch of really nice models.
  • edited July 2014
    Ahh that's were they were from.

    You probably want to provide more then just attribution, also what license each of the assets is released under. As it sits right now the assets look like they are GPL like the code since that is the only license file you include.

    I know the
    TurboSquid license does NOT allow derivative works (and limit s redistribution formats) so the models would need to state what rights end users are granted.


    The 3D model is contained in proprietary format that cannot be opened
    in a publicly available software application and from which the
    TurboSquid Stock Media Product cannot be extracted or decompiled without
    reverse engineering.

    3. The software or game has no functionality for end users to import any open 3D file format or export any 3D model.

    From: http://support.turbosquid.com/entries/29237436-Royalty-Free-License-FAQ?locale=1

    By including the OBJ files you are violating that license sadly. The likelihood of you getting in trouble right now is low, but you probably want to correct the issue before anything bad can happen. I hate to see good projects get in trouble because they didn't follow a license.

    I'm not sure about your music, but GPL is not commonly used for data files, they are usually in some Creative Commons license if they are open
  • edited July 2014
    Ah, ok. It's easy to comply with the TurboSquid license. If I define my own model format, and only provide the models in that format, and only load models in that format then I'm there.
    And a tool for conversion to that said format. (no conversion back)
    No description of said format, and then you require to reverse-engineer the code to get to the actual model info. Which is in compliance with the license.
    Should be easy for the models. Maybe a bit more work for the textures.

    The music requires:

    Games and Interactive Media:
    Front-end credits:
    Music by Matthew Pablo

    Main title screen (if you wish to put any credits there you should also include mine as well, if you aren’t putting any credits, then you don’t need to)
    Featuring Music by Matthew Pablo

    Ending credits:
    Music by Matthew Pablo

    As for the game, added an extra scenario this morning, a battle between 2 factions, where the player side is on the losing side per default, so you have to turn the tides.
    (Also did some tests with 100 vs 100 ships, which ran quite fine. 1000 vs 1000 caused the engine to crawl to a halt. So do not do that)
    And updated the Surrounded scenario, which has an example of a leader with 3 wingmen. Also fixed some AI things for that so they fly in formation.
  • I addressed the TurboSquid licensing issue.

    I also added a "basic" scenario, which works a bit like the default Artemis scenario with a few stations, random asteroid fields, and incoming enemies. Still want to add a few random neutral transport ships in the mix so you have a harder time finding out which are the enemies.

    Also added an enemy with a warp drive and one with a jump drive. They are quite weak, but jump into the action really fast.

    And I added a "single pilot" mode. This is pretty much helms, weapons, main screen, and short-range scanning into 1 view mode.
    Doesn't this defeat the whole bridge idea? Yes and no.
    Imagine you have 6 people to play with. You could do 1 bridge.
    - Captain, Helms, Weapons, Engineering, Science, Comms.
    You could do 2 bridges:
    - Captain&Comms, Helms&Engineering, Weapons&Science
    - Captain&Comms, Helms&Engineering, Weapons&Science
    But, with this "single pilot" option, you could also do:
    - [Leader - Flying a cruiser] Captain, Helms, Weapons, Engineering&Science&Comms
    - [Wingman - Flying a fighter] 1 man ship, takes orders from the main captain
    - [Wingman - Flying a fighter] 1 man ship, takes orders from the main captain

    Simply put, you have more variations to play. Instead of only a full ship, you can fly small support fighters.
  • Just tested it out. Glad you added fighters. These would come in handy if you had 7-8 people wanting to play, instead of having to do a understaffed ship.
    Currently, the fighters seem to be over powered with weapons. I would just have homings and beams on these ships. I know this can be changed in the LUA file.
  • edited July 2014
    The fighter only has weaker 2 beams, and 4 homing missles. And 1 EMP right now. But I'm thinking about removing the EMP.
    (The screenshot shows Mines and Nukes as options, but the maximum storage for those in the fighter is 0. I adjusted the code so it does not show the options you cannot use now)

    And, yes, you can adjust, and add anything you want in the lua files. All template names starting with "Player " can be selected as player ships. So if you want to have some big slow battle station, you can. If you want a warp-drive and a jump-drive. You can. (Cloaking doesn't do anything, even tough you can set it to true)

    Oh, and you could also play as 32 single manned fighters now. Imagine the chaos in that.

    One other thing I changed is that you cannot see beam-range and arcs till you scanned a ship. So the only way to identify a ship class without scanning is visual. And if you haven't scanned all enemies your helms officer has a tough job. Also puts more pressure on the science officer.

    Comms is still boring. Sorry. It's not that hard to add some more conversations now, but I need to think up the proper code-architecture for adding things like re-supply ships and assistance requests. Would be pretty cool if you could ask for a supply-drop in sector E5 for example, so you can pick it up on your way to your next target. But it needs some kind of "money/reputation" system or else you could ask for unlimited amounts of stuff everywhere.
  • Had a large play session yesterday. With a total of 8 players.

    So, the first thing that broke was my network code. We tried 2 bridges in 2 different rooms. But lag on 1 computer caused the server to lag, causing chaos. So we had to drop down to 6 people in 1 room.

    We have 1 really experienced player, he also played a lot of Eve online, and other games. And he was being a fighter pilot in 1 session. He single handed won the game. So the fighter is getting a few changes, it's going to drop the warp-drive, drop the EMP. And I'm going to add that it can dock to larger player ships. This so you can jump with the larger ship.

    I'm also going to increase the impulse engine speed of all ships. I think they should be a bit faster. The enemies also need to be a bit stronger, as it was quite easy to win.

    I had one guy who really liked playing engineer, and had some nice ideas for changes. He was also really good at playing engineer. Simple change will be an indicator if you heat is increasing or dropping.

    Other silly actions include:
    - Comms constantly bugging our fighter pilot by re-opening the comm channel all the time.
    - Firing a nuke before setting a proper target.
    - Firing a EMP shortly followed by a nuke, causing the EMP to destroy the nuke.
    - Captain shouting "JUMP NOW!" when we where under attack, causing a 30km jump away from any station, with almost no energy left.
    - Engineering discovering the self-destruct sequence.

    I already debugged the network code, reduced the traffic amount by a huge amount (due to a bug lots more traffic was send, and I optimized a few things to it needs to send less data) I also fixed that no longer 1 client can block the server from sending to other clients.
    MacOS build is still giving me troubles. So we had 2 macs running it with Wine, which worked okish except for the audio and 3D views.
  • (Note, it's a bit silent on this front, due to family issues. Development will resume later)
  • edited August 2014
    Just wanted to report that we just ordered 5 15" touch screens at work. (Was too good of a deal to let go. 70 euro per screen) so we'll be building our own consoles and improve the code for touch-screen support once those arrive.

    I am kinda wondering what I'm going to do with a "money or reputation" system. Right now you can ask for assistance from a station, and it will send out a ship to help you. I'm not a huge fan of the "build time" implementation of Artemis. So I'm thinking about having some kind of resource that you can use to order resupplies and help with.
  • edited August 2014
    Nice. I'm hoping to get some all-in-one PCs with touch screens in the future for my setup.

    I finally setup Code Blocks this morning on a Windows machine to compile. Should be able to test EmptyEpsilon easier on my machines and others.
    Had a problem with CodeBlocks using a older/wrong version of libstc++-6.dll and had to grab a copy from the MingW32 project for it to run properly. Looks like a Code Blocks issue.
  • http://daid.eu/~daid/20140812_140930.small.jpg
    This box arrived today.
    5x 15" touch screen. And they are clearly from some kind kiosk setup, the screens are very tough, not your normal LCD screen, but glass.

    Odd thing is, the touch is rotated 90 degrees compared to the screen. But we can adjust for that in software.

    Cannot wait to start building.

    (Note, this is our previous project: http://daid.eu/~daid/20140811_095749.small.jpg )
  • http://i.imgur.com/9CnqXwU.png

    Re-designed the engineering station. The Artemis design has some issues if you put it on a touch screen. Makes it quite hard to use. So I changed the layout.

    I'm also adding a "Database" to the science station. Which has a wealth of information about ship types, weapon types, stuff like that. I'm kinda thinking, if I add so much different things that you can never fully know everything out of your head, then the science officer is the perfect person to look up this information.
Sign In or Register to comment.