When Space Elephants Attack

Video thumbnail (Frame 0) Video thumbnail (Frame 743) Video thumbnail (Frame 2453) Video thumbnail (Frame 4466) Video thumbnail (Frame 5786) Video thumbnail (Frame 7968) Video thumbnail (Frame 9745) Video thumbnail (Frame 11390) Video thumbnail (Frame 13118) Video thumbnail (Frame 15861) Video thumbnail (Frame 16881) Video thumbnail (Frame 18789) Video thumbnail (Frame 19685) Video thumbnail (Frame 20809) Video thumbnail (Frame 22396) Video thumbnail (Frame 24074) Video thumbnail (Frame 24914) Video thumbnail (Frame 26290) Video thumbnail (Frame 28157) Video thumbnail (Frame 29727) Video thumbnail (Frame 30779) Video thumbnail (Frame 33093) Video thumbnail (Frame 40911) Video thumbnail (Frame 43500) Video thumbnail (Frame 45210) Video thumbnail (Frame 46677) Video thumbnail (Frame 56460)
Video in TIB AV-Portal: When Space Elephants Attack

Formal Metadata

When Space Elephants Attack
Alternative Title
A DEFCON Challenge for Database Geeks
Title of Series
CC Attribution 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Release Date

Content Metadata

Subject Area
The Schemaverse is a vast universe found purely within a PostgreSQL database. Control your fleet of ships manually with SQL commands or write AI in PL/pgSQL so they control themselves while you sit back and enjoy the con. This presentation will help my fellow database geeks to understand the game play mechanics used in The Schemaverse so they can compete in the weekend long tournament. Abstrct, the author of The Schemaverse game, is a hobbyist programmer and data aficionado. While not pretending to have much actual experience with database security in the professional world, he has enjoyed making database systems do ridiculous things since his first SELECT.

Related Material

Video is accompanying material for the following resource
Expert system Interactive television Video game Spacetime Database Game theory Expert system Human–computer interaction Graphic design Game theory Spacetime Neuroinformatik
Scripting language Server (computing) Sequel Multiplication sign Numbering scheme Database Database Expert system Sign (mathematics) Internetworking Internetworking Query language Spacetime Information Game theory Human–computer interaction Information security Information security Game theory Address space Arithmetic progression Spacetime
Multiplication sign Projective plane Database Database Bit Cartesian coordinate system Element (mathematics) Internetworking System programming Game theory Information security Information security Game theory Mathematical optimization Physical system
Different (Kate Ryan album) Usability Game theory Spacetime
Building Sequel Direction (geometry) Range (statistics) 1 (number) Insertion loss Limit (category theory) Total S.A. Rule of inference Number Dispersion (chemistry) Computer worm Lipschitz-Stetigkeit Planning Database Bit Virtualization Limit (category theory) Uniform resource locator Universe (mathematics) Game theory Table (information) Session Initiation Protocol Row (database) Spacetime
Group action Functional (mathematics) Sequel View (database) Range (statistics) Tape drive Bit Object (grammar) Game theory Group action
Data mining Range (statistics) Maxima and minima Game theory Numbering scheme Limit (category theory) Table (information) Resultant Number
Functional (mathematics) Graph (mathematics) Sequel Open source Direction (geometry) Direction (geometry) Range (statistics) Maxima and minima Code Range (statistics) Database Total S.A. Mereology Limit (category theory) Stiff equation Data mining Uniform resource locator Video game Game theory
Group action Functional (mathematics) Standard deviation Building Source code Range (statistics) Virtualization Group action Limit (category theory) Sequence Data mining Strategy game Function (mathematics) Data mining Strategy game Game theory
Functional (mathematics) Building Multiplication sign File format Maxima and minima Variable (mathematics) Event horizon Numeral (linguistics) Event horizon Function (mathematics) String (computer science) Game theory Table (information) Game theory Reading (process) Physical system
Scripting language Statistics Functional (mathematics) Scripting language Graph (mathematics) Slide rule Sequel View (database) View (database) Range (statistics) Bit Benchmark Game theory Table (information) Physical system
Scripting language Medical imaging Boolean algebra Personal digital assistant Function (mathematics) Range (statistics) Set (mathematics) Sheaf (mathematics) Table (information) Formal language Declarative programming Physical system
Scripting language Functional (mathematics) Scripting language Run time (program lifecycle phase) Inheritance (object-oriented programming) Sequel Code Multiplication sign Maxima and minima Maxima and minima Process (computing) Error message Query language Function (mathematics) Cube Website Error message Resultant Physical system
Scripting language Dependent and independent variables Electronic mailing list Numbering scheme Streaming media Function (mathematics) Error message Game theory Information security Information security Row (database) Reverse engineering Physical system
Scripting language Injektivität Authentication Dependent and independent variables Enterprise architecture Sequel Authentication Database Database Bit Limit (category theory) Limit (category theory) Exploit (computer security) Power (physics) Query language Query language Cuboid Game theory Series (mathematics) Physical system
Scripting language Injektivität Code Mehrplatzsystem Multiplication sign System administrator View (database) Source code Software bug Mathematics Query language Cuboid Series (mathematics) Information security Stability theory Physical system Exception handling Data integrity Scripting language Injektivität Electric generator View (database) Bit Variable (mathematics) Measurement Connected space Process (computing) Configuration space Energy level Information security Game controller Functional (mathematics) Sequel Limit (category theory) Regular graph Rule of inference Declarative programming String (computer science) Game theory Rule of inference Chemical equation Database Limit (category theory) Cartesian coordinate system Word Query language Function (mathematics) Statement (computer science) Game theory Table (information)
Point (geometry) Area Tournament (medieval) Multiplication sign Decision theory Tournament (medieval) Fitness function Database Bit Image registration Image registration Drop (liquid) Limit (category theory) Area Power (physics) Process (computing) Software Different (Kate Ryan album) Backup Game theory Window Resultant
Point (geometry) Game controller Sequel Open source Java applet Code Multiplication sign View (database) Range (statistics) .NET Framework 1 (number) Database Client (computing) Event horizon Formal language Mathematics Goodness of fit Roundness (object) Strategy game Software testing Physical system Scripting language Area Injektivität Email Inheritance (object-oriented programming) Information Mapping Projective plane Java applet Tournament (medieval) Electronic mailing list Planning Client (computing) Database Bit Line (geometry) Wiki Repository (publishing) Universe (mathematics) Statement (computer science) Convex hull Game theory Table (information) Writing Sinc function Spacetime
Area Game theory Spacetime
well thank you for coming to my talk talk today is when space elephants attack and it's about a new game that I'm bringing our new contest that I'm bring to DEFCON today for this weekend which is called the schema verse and it's just basically a game within a database so first quickly Who am I I'm
an expert in design and video game you I I'm specialized in computer human interaction I'm a graphic designer and I'm also a very skilled technical writer
except I'm actually none of those things whatsoever I made a game in a database that wouldn't make any sense so Who am I
really just a database keep so scheme
reverse 101 it's a space battle game played entirely within a postgresql database there's actually no you I whatsoever just glorious sequel queries constantly the game itself is a tick based game so basically everyone has a chance to do one move and then the tick finishes some things are calculated and then the next tick goes on the database itself is completely open to the Internet everyone who gets the address for it will be able to connect so long as you come to me first at the contest booth to sign up security is implemented within the database itself there's also a couple dirty little Perl scripts here and there but pearls always dirty surprisingly this game is actually pretty good time so I hope a couple people come sign up and give it a try the game itself does also play after the con there's just a constant running server you can join it so why did I do
this great question every geek needs a project this just happens to be mine sure everyone can respect that I also wanted to be educated myself on database security learn a lot more and learn about even just optimization and non security elements and I wanted to do the same and educate others on the Mac I just wanted to push database systems a little bit further when I started creating this system a lot of people told me well I said I asked the internet the intern all knowing I said where what would you do to secure an open database on the Internet the only answer I got was don't well why what's wrong with that it's just another application what's what's missing from this system that would make this a bad idea so this is what I wanted to find out and I might find out this weekend and finally it's also pretty funny it's a game in a database come on so why bring it to DEFCON clearly the last DEFCON that I've been at I've just been too relaxing just drinking and having a good time I felt I needed a little bit more stressful here it also wasn't enough to break here especially for the database geeks so I brought this here in hopes that you have a good time so getting into the actual gameplay as I
mentioned it's a tick based game everyone goes finished new tic starts up basically you command an army of ships who go out conquer planets and fight each other and blow things up sounds pretty good so in the game there's a
bunch of different goals you can actually have you can be a space jerk running around just blowing people up not really actually playing you can be the Emperor just going and conquering every planet that you can find you can be the planet pillager and just rape the crap out of all the lands of resources that you can find using those resources to then build bigger and better things or size matters build the biggest and best ships constantly and you'll also win but of course there's one overall goal which is to do all of those things
and become the schema supremacy so how do you actually play this game as I mentioned you come to me or anyone
who's at the contest booth and you asked to register when you registered you get inserted into the player table and then you get an actual user account on the database yes you are a user on the database you also get two things you get a row in the players table and you get a row or you got a planet assigned to you as your home planet so you can see when you start out in the player table you got some money there you got looks like 10 million i don't really good and then you gotta feel reserved to get you started to you also have something called an air channel which I'll get to later on and finally on your planet you can see your planet has a location has a name which it's your planet you can update the name if you'd like it also has a mind limit so that limit is only that number of ships can actually mine that planet per tick I'm going to get it into that a little bit more liquor and finally the Conqueror ID which is you great work so the planet you get off the beginning is somewhere off the far center of the universe center of the universe is where most of the battle will happen so you get this planet off nowhere and it's kind of your own little home that no one's likely to find so now
you've got your player you've got a plan it great what's next well I such a space battle game so you need some ships so it wasn't kidding when I said this is a sequel game so what you want to do to create some chips which will cost you thousands virtual dollars is insert into your ships table there's a couple ways you can do that it's fairly dynamic you can either just give it a name and it'll be created at the center of the universe you can give it some skill every ship gets 20 skill to start with and you can kind of disperse that however you want you can upgrade those more later on but it's good just to have that initial go and you can also specify the location of where you want to build now there's a little bit of extra rules there basically if you're building to the center 3,000 in every direction from 00 you can build wherever you want within that that's fine outside of that range you can only build on planets that you've already conquered so you've got your home planet where no one can get to it you go there mind some resources and then hit center earth for the actual battle so what can ships actually do
each of your ships have the ability to do three different actions they can only do one of those actions per tape so you have to decide what it's doing when performing that action both thing both objects have to be within range of each other range is just another skill that your ship has so what's the first action
attacking of course so again this is a sequel game so there's a ship's in range view to find all your enemy ships because you can't ormally see them but if they're within range of your ships then you can so using the attack function you can actually attack from one of your ships to an enemy ship that is within range of you make sense actual attacking uses your attack skill and their defense skill plus a little bit of luck and then calculates that to your future health that doesn't get committed until the end of the tank of course if
those attacking results will repair repair is the same thing you can actually prepare anything within range of you repairing uses the engineering skill no luck is really involved in that one it's just engineering and finally
there's mining mining is how you get all the resources in the game mining is how you continue on and build up your fleets and improve so when you mind a planet you don't nothing happens instantly you get added to a table called don't remember anyways it's added to a Mayan table where it is just temporary for that tick that says this ship is mining this planet at the end of the tick all ships that tried to mine each planet try and do so now keep in mind there's that mind limit so only a certain number of ships can mine a planet per tick if you mine a planet more than anyone else that tick you now conquer that planet oh and you also get
the resources you don't have to concrete to get the resources though so obviously ships can also move around and this is the most finicky part of the game it's the thing that people complain at the most about but you can write a better move function in sequel the game as open source please do so so there's really two ways you can use the move function and keep in mind this is a 2-d game a 3d gaming in a database would just be weird so the first way you can do it is actually give a speed and then a destination if you give a speed in the destination your ship must have enough fuel to start and then slow down if you want to start or if you want to speed up to 100 then it'll take 100 fuel when you get to your destination it's going to take another hundred fuel to slow down you also require fuel for changing direction while moving if you don't have enough fuel to slow down but you have enough fuel to speed up you're not going to be able to use that first methodology it's going to stop you and say this isn't going to work because I can't stop you and you have a destination but it will at least return back the direction that it was trying to go to your air channel which I'll get to later on so the second way you can do it if you don't have that much fuel and you don't actually care about stopping anywhere it's just specifying the speed and then the direction and then just know Mel for the actual location your ship is just going to go off into wherever doesn't really matter you can refuel it later and stop it when you feel like it so that's pretty much moving around it's not too hard but for some reason it is difficult nice little graph there on how moving actually goes as far as the direction not too complicated so you got these
awesome ships but they won't you want them to be better you want that size matters award maybe well there are a lot of upgrades you can do you can upgrade the health fuel the speed range range is a good one attack defends engineering and prospecting prospecting is your mining should have mentioned that every skill does have a limit that you can upgrade it to attack defense engineering and prospecting have a limit of 500 total they can't surpass that everything else has its own limit it's right there it's also on the CD if you want to reference it so just kind of a recap of
what's going on in the game what happens in a tick every ship can move once in the tick the amount of moves is based on its feet every ship performs a single action or they might do nothing that's really up to you after that the perform mining function takes action and actually calculate who's successful in mining that planet gives their resources and awards new planet Conqueror to anyone who successfully done it planets will run out of fuel so if that happens some planets randomly will receive more fuel after each tick afterwards damage and repair is committed as i mentioned attacking and repair happens to the future health future health becomes current health pretty simple any ship that has been at zero health for sixty tix is going to explode and you can no longer use that ship all your upgrades are gone but you do get thousand virtual dollars of currency bag so that way you can build new ship somewhere and finally tick under source sequence next Val tick goes to the next pretty standard so general strategy as I talked
about earlier basically you want to go build on your home planet that you've been given build up to your mind limit and just mine the crap out of that planet that's going to give you all the resources you need to then build some great chips for the center where everyone else is going to converge and try and branch out to get all the other planets you're going to want to make sure you actually defend and you planet you conquer if you conquer a new planet build some new ships around it to attack anything and to defend it's pretty much the game so anything that's happening in
the game does enter your my events view that you have most things that have been successfully at least some events are public summer private you don't necessarily care when someone upgrades the ship or you don't necessarily should know when someone upgrades a ship the events my events view itself is designed to be read very programmatically because this is a game where you want to be able to pull details and actually figure out where you're going to do based on those details but if you want to read it in a more human readable way of what's actually happening if you just use the read underscore event function with the ID it'll actually concatenate it into a nice little string that you can read so
there's a couple other little helper functions like that refuel ship obviously is fairly helpful you're every time you mind a planet that fuel goes to your players feel reserve and then you can give that fuel to your to your ship doesn't go directly to the ship that might it convert resource is important because you mind fuel but you want money you need money to build things it's actually a one-to-one relationship originally I had some crazy system where would fluctuate but the only thing you ever do is convert fuel the money you never convert money to fuel so it was kind of kind of tanked whoops there's a couple other get character variable get numeric variable there's a variables table that holds like the maximums and things that you can upgrade to so it's just an easy way to get that value and get player ID and get player username you're going to use those a lot if you write some career is based on the events table or if you want to figure out who someone is that's attacking you other
key views that you might find interesting i talked about ships and range again you can't see other ships in your my ships table because it's not the your ships table it's the my ships table so if use the ships in range then you can actually see other ships around you the my ships flight recorder is just kind of neat really it's actually completely useless but if you wanted to graph it and see where all your ships went and it's kind of fun finally there's also online players obviously what it is current stats just gives how many planets have been conquered how many ships total are in the system how many players are online how many players are in the system etc etc so just how much money is in the system too so it just kind of gives you a benchmark to see how you're doing you can't really see very much about how anyone else is doing in the game you can see the overall stats you can kind of guess how well you're doing off at and then there's the public variable table again that I mentioned which you can just use those at functions to grab so finally fleet scripts this is where the game actually gets super cool at least in my opinion I might have a weird sense of cool basically a fleet script allows you
to automate all the gameplay for you because i love sequel if you're sitting in this room you're either my friends or you like sequel as well but you don't want to be writing sequel for the next 72 hours to win a contest because we're at DEFCON DEFCON is a little bit more fun than doing that so how you actually do this and how does it work well if you insert into your flat my fleet stable give it a name its first start if you update your my fleets
table with the script declarations column and the script column and then enable it what's going to happen is it's going to take those sections there which you can see for this one I'm taking all of the ships within range and attacking the crap out of them the system will
take that data you just update it into those columns and then create a function out of it so you can see this will be called fleet underscore script underscore nine because we updated fleet script ID equals nine the declarations go under declare and the scripts go under begin just in case nothing does get returned got a quick little return one at the end there if you wanted to return some things image you feel better it's fine to so so now you've just got
this function which isn't really doing a lot it makes it easier to now you don't have to rewrite the scripts every time you just call them but if you want that to happen automatically for you every tick you can do that the script that controls all the tix is ticked off PL tip-top PL is just one of my dirty little Perl scripts and it will actually connect as your user and run that function on your behalf every single tank to do so you just have to buy a minimum of one minute of processing time for it which is 10 million they're expensive because time is money and you have to set it to enabled the enabled is really just for your own little reference so if you wanted something to stop then you could do so if your script runs past that one minute everything's cancelled gets reverted back and you just lose what you did so you have to keep it within that one minute or by another it on to it to do to buy any time for it use use the upgrade function again you pass it the fleet ID and you pass it fleet run time as the code and then you can specify the quantity so this would buy one more minute for my fleet 9 so
obviously you don't necessarily see what's happening in the fleet because you're not running it so if there's been any problems you just notice I'm not getting any money this is kind of sucks so I have actually made a way where you can see what's going on to postgresql has a notify system built into it and I utilize that to use that air channel that I threw in your my my players any errors that your script will have will be piped to that so if you type listen and add your air channel every time you run a sequel query within the results payload it's going to include any new errors that you've had in that cube I also wrote a super insecure python script which you shouldn't run from the DEF CON Network because you will be on the wall of sheep there's no ssl on it if you want to download the script it's on schema verse calm if you have some server off DEFCON that you feel more comfortable using then it's fine to use it it's not a big deal but please don't use it here here's a little example of
what it looks like dead simple just it's the scheme reverse output stream or SOS and it'll just list anything that's going on there's also a couple other things in the system that will notify here not just fleet scripts but anytime move fails or things like that it just gives it here I did have an air table at first but after 10 million records in a couple days it didn't seem like a good idea to continue so this is def con
security in this game as I mentioned earlier most people's response was don't but hopefully I think it might last it lasted the first night so I'm happy about that architecture wise in
the game as I said you are users so the players are users in the system then you've got the database and then you've read the two perl scripts and i didn't really talk about the one perl script yet but I'll get to it and that's really all the system is so what was I worried
about when writing this game well query limits was the first one all it takes is one person to run a couple queries of generate series 1 to infinity and then no one could ever have another query actually run on the system so I needed to find a way to stop that obviously authentication is a bit of an issue luckily I've got super secure md5 going on that was the best I could do sequel injections obviously a problem although admittedly at first I thought well a user can only do what they have the ability to do on the system and I kind of forgot a key fact of there was another higher power user controlling some things and finally postgres exploits and quirks I don't really know what the next zero day is for postgres if it happens this weekend I have things logging so I hope I find it as I mentioned earlier most communities were less than helpful on pretty much all of this the only I think the one response I got was use SSL so someone connect securely to my box and then destroy it so it's really happy about that so the
basics that I kind of went on basically as far as the actual gameplay goads almost everything in the game is based off of player ID equals get player ID session user session user is just a variable system variable in Postgres that's who's connecting so because you're a user and it connects to your my players table that's how I figure out what you're allowed to do and all the views all the triggers everything's base off that when she gets me to the next thing how do I control data it's basically just as you would hope you would develop your regular application security within your database I use roles to make sure that users should only do what users can do and it can only see what they should be able to see triggers and functions control most of the data changes that users don't have direct access to update rules do the same i should say and then views just make sure you can only see what you're supposed to see again you shouldn't be able to see where other players ships are so it's just I did enable SSL because I do want people connect securely and destroy my box well I rather they win but I'd rather someone not find the username and finally availability which was this query limit said generate series postgres has a very very helpful helpful variable within the configuration called set query timeout or statement timeout perfect I thought this is exactly what I needed I know query should last longer than a minute was my original thought so I set that up and then I played around and I found out that every single user who connects to postgres has the ability to typeset statement timeout equals zero this is one of the things we're talking about pushing database systems a little bit how is that acceptable when you have something that you configure as a security measure and a user any user can connect and run a statement to set it to infinity didn't make any sense that's where r f dot PL comes into play it's just another perl script that monitors all the processes running and will kill anything that surpassed its time limit it's actually a lot more dynamic than the statement would have been because now i can let people buy more processing time if they actually need it and make less i don't like them so here's a little fun example of sequel injections that I thought again oh it's fine they can out there they can only do so many things I was really dumb so in that fleet creation script where you take what you've updated the fleet stable to be and then thrown it into the actual table itself or then that gets taken out put into the function you see script declaration gets put there and then the new script I hope you can see the problem with this not only can someone privileged escalate their script the function that they're creating to be security definer security definer and postgres means the administrator is now running this basically or the person who created function which only schema verse itself has the ability to do now your fleet script is going to run a schema verse every time so I've got a nice little update player set balance equals 0 I may want to specify except me but you get the gist of it but not only that after that by inserting more nice code I actually rewrite the move function as well because I why not I certainly have the ability so i can send every player backwards if I want or I can make the move function more convoluted great so this was a bit of a problem when I wasn't really sure how to fix it I still don't know if I have fixed it but I like my solution i just added a secret so let me go back to that quick look weird underneath the initial create and replace you have fleet under source script it's just a quick string declaration to say this is where it starts this is where it ends to fix this I just made that random if you don't know how to end the script then you can't forcefully stop it the the air or the the actual creation will just Arab now I have had people with ideas come to me and say what if I find a way to just make it so that I throw an exception and then my exception does something I have no idea if this works someone here wants to play around with it again Steph con certainly can so some final words and security I hope that if someone does find a bug in this that can destroy it instead of destroying it they use it to win because if you can win this game through fairly unnecessarily good ways it's def not full respect to you you win I have no problem with that so my only deterrent is the fact that this year at Def Con
running the first-ever schema verse
tournament I do have prizes so if at the end of it someone does drop database schema verse and then no one wins my prizes and they're actually pretty good I have backups but I don't once it goes down I'm not sure if there's going to be time to fix it I might be tutoring but we'll see how it goes so that the tournament did start yesterday although in everyone's manual I think it says the tournament starts tomorrow but the tick actually like the game can take a while to play usually it's played over a week I've tried this I've tried to tweak it a little bit to be a three-day game so here we are it does end at Sunday at noon registration if you want to come play and I really hope that some people here do it's going to be in the contest area just come find us register and then you're good to go I have no idea how many users this will support I've played with probably about 15 different players and it's gone pretty good I don't know if there's going to be more than that here I don't know if they're kind of going to be more power users we'll see how it goes at some point I may have to limit it if I see it starting to slow down because as I mentioned the tick won't end until everyone's scripting is done and a tick will never start until that first one is finished so if I get a hundred players then that's 140 minutes for the processing time if everyone takes up their limit that they get off the beginning so that can be a fairly long time which normally a tip would last one minute so my prizes to the
first person who gets first blood the first person to attack in this game postgresql themselves have donated some nice swag they've given me a t-shirt to give out and some posters commemorating the release of 91 navicat has given me one license of navicat postgres which is a pretty sweet piece of software for mac windows etc I'm not going to be a Salesman here and I have one free admission to postgres West or PG wes i should say these happenings end of September 27th to 30th I thought that was a great price too i realized i was going to be a little more location-specific not everyone might have the ability to travel again in a month that's why some of the prizes might be a little bit kind of decisive once it actually once we see some results and I've also got an extra fifty dollars American from anonymous denote donor who will basically whoever he sees fit in the game will get it so those are my prizes so finally how do you actually
connect to this game however the hell you want it's a database on the net anything that can connect to the database be it any language you want python perl PHP Ruby dotnet Java TCL I super don't care use it it's fine any database client you feel comfortable with i'm going to say pgadmin might be your best bet because i know pgadmin has ssl so i would suggest you use that but if you're more comfortable with something else I know navicat will matically pipe it through some SS age for you so that could be useful to again we are at DEFCON wall of sheep will be plentiful with schema verse accounts if we're not careful and I'd rather that not happen so as you can see under my hosts DB schema verse calm was the super-secret hostname that you use to connect and it's just on a regular port of five four three two so if you want
more information I've got website DEFCON scheming verse calm and then I've got some project homes and said it's open source now my talk has ended up pretty fast I apologize for that I thought it was going to be too long yesterday so I kind of talked a little bit more about strategy and how to win if you actually want to I do know some people who instead of using my tix asst or the actual fleet system that I develop instead of spending wasted money on that they actually just write Python scripts instead to run everything for them every minute roughly the same thing you don't necessarily know in the tick ends but you can always pull the system and find out if there's a new tick so this can be fairly creative with our you play this game since I've got time I'd love to answer questions if anyone has it yeah nearby planets you can see every planet in the game using the planets table of the view oh sorry how can you see the plan the question was how can you see planets within range and originally there was a planet in range view and then I realized well we can kind of see most things so I guess it makes sense that you can kind of see most things too so basically any any table there any planet that you want to see is in the view and you can also see who's conquered it so if you want to be a jerk and target one of your friends then you can go find what he's got and go attack it other questions over there sorry yes you can conquer another player's home system if it's within range now keep in mind most of the planets were developed very close to the center and then as you get out of the the kind of center area of the map then it becomes more and more sparse so your home planet it might actually be impossible to find if you upgrade the ship's speed completely it might still be impossible to get to another planet so it might be protected but if you can find a sequel injection that gives you their home planet then that could work too right any other questions more questions all right how long I've been working on it for about a year and a half it's 2,300 oh sorry how long I'm working on it 2300 lines of sequel code at this point a couple hundred lines of pearl you can see my git repository history which is like activity down activity down yeah so it's been a fun pet project it actually no one knew about it for ages and then it was Merlin on postgresql on the on the mailing list found it it was like hey this is awesome but it wasn't overly tested at that point this is last December which is great for testing because people basically just connected and just brutally destroyed it within a couple days which is great basically took it down rewrote everything most things at least and now it's in a very more stable actually playable time it was basically beforehand it was just you've got some chips you can go around and blow some things up but now there's actually like gameplay to it other interesting things if you wanted you could actually add a goal in the game the trophies table or the trophy table i should say is something you can insert into every trophy that i showed earlier you had space jerk etc space jerk is just the best one clear of pillage is pretty good anyways any of those are just sequel statements again just like the fleet system except these ones have a little bit more control because they can actually go into all the tables your player can only see the views most of the time but the trophies can see all of every table there is so if you want to make up a trophy you can actually add it into the game and if I allow it because there's nothing ridiculous in the code then it will become a trophy that will get calculated out at the end of the round pretty fun there's also items in the game I didn't really talked about it cuz I haven't had time to create any items but just like the trophies in the fleet it's just sequel code that you throw into a table and you're allowed to insert into the items table so if you can insert into that table create an item that you want I'll see who made it I'll see what user created this and I might be nice and give you this item if I think it's really cool and then I'm going to scatter them around the universe and you can find them so the game is can be a little bit more complex or you can you know take it how you wish and other questions good question the question was what happens after the game ends basically uses users day players stay all ships are destroyed planets don't move you get a new planet though kind of change things up all the fuel is redone on all the planets and all the events and everything is destroyed basically originally I wanted to just kind of be an ongoing game but after playing it for a while it didn't really make sense because at some point a new user just can't compete so be kind of interesting in its own way the question was what happens at the end of a game when basically planets are we given out but you do lose your original home plan which I didn't specify yeah question
all right well I guess I'm done early but if you do have any further questions that you wanted a more intimate space q a room for I believe is my room I'll be happy to answer any questions you have talked strategy or if you want to complain about move to me that's fine too I hope you come to the contest area and sign up for the game I love for this to become successful and I'd love to bring it back to Def Con 20 I think that would be fantastic so anyways thank you