EDIT: version 1.0 is out now. With a .exe download for non-programmers. 2 players on 1 keyboard, semi-Newtonian fun with 4 weapons. Major feature updates that are postponed until I hear people are actually playing it are sound and joystick/controller support (which would allow up to about 6 players at the same time). Other features like new weapons and ship shapes can be requested, or edited in manually in the GitHub.
I started this Sunday and although I have quite some experience contributing to (closed source) projects, this is my first application that I made from scratch that is not data analysis.
It is still super early days, I am on holiday and started work on this while travelling here last weekend. Just finished the first working version with the minimal feature set I wanted.
Elite 2Deep is a 2D space shooter local multiplayer game with Newtonian* mechanics. You can yaw, thrust forward, backward, and strafe. Keyboard controls only and only 2 players for now. Expanding to more players should be simple in the current code structure, depending on how simple it is to get game controller inputs.
You need to hold the Fire button for a second before you fire your rail guns.
For those familiar with Elite: Dangerous, this is a purely Flight Assist Off game.
I just added some minimal setup instructions in the wiki page.
*Actually I already set it up for a speed limit like Elite Dangerous has but the max speed is set very high still.
Very cool, I downloaded the files, but need to download and install all that other python stuff so might be a bit till i get to check it out fully. till then I’m guessing from the description it’s similar to Spacewar!, Star Control, that kind of 2 player space combat?
I’ve got my Raspberry Pi setup for Python. (Well every Pi is setup with Python–thus the name!) Until I can get the girls get away from the TV, the RasPi stays parked unfortunately. But once they go to bed I will dig inside your code and make a complete mess of it. I can’t wait!
I know installing Python is too much of a barrier for most, and once I have a more complete version I will look at adding a compiled “.exe”
It is indeed similar to space war. Except it is just a duel mode for now, with no AI yet. The thing that took most effort was to get rid of limiting the world size at the screen edges: I don’t like it when you fly out of the screen on the right side and enter it on the left side, so I made a “camera” that automatically pans and zooms to follow the ship’s movement.
I plan on doing a refactoring where I put those world screen coordinate conversions and pygame draw calls in a renderer object.
A little bit of input from my python project experience:
Regarding setup, to someone familiar with python (developers) you could make it a bit quicker to install by supplying a requirements file (a .txt with a list of all the python libraries). You can then use pip to install those into your python environment. If you use pip yourself, you can just do
$ pip freeze
and get a list of requirements that you can paste into a file such as requirements.txt and check that into your repo. It’s not that bad right now with just pygame and numpy being the requirements, but if that list ever grows, it will become a bit of a pain to update or install dependencies.
Looking at your repo, there’s a few things in there you might not want to check into git like the __pycache__ folder or your visual code studio config files. A .gitignore file could help you with that.
Lastly (and sorry for this, i’m just a coding standards Nazi, feel free to disregard ) if you’re planning to cooperate with other coders, it is always a good idea to adhere to pep8 (that’s the python rulebook on coding and code formating). Other people will have a much easier time to read your code if it adheres to pep8, plus there are good linters out there that can catch things like typos, coding errors or unused imports. IMHO in the long run it makes your life a lot easier. If at some point you plan to incorporate an automatic unit testing framework (like pytest), there’s even plugins that can statically check your code for pep8 compliance.
Anyway, just my 2 cents. Looking forward to follow your progress!
Thanks for the tips! I have scrolled through PEP8 a few times, which PEP8 linter do you recommend? I just used the default pylinter, as VS code recommended.
Not very happy with it though, as it does not recognize pygame and keeps throwing problems
Major update!! Now with a .exe file for non-Python programmers.
Also, many new features: more weapons, difficulty levels, controls rebinding, collisions.
Still missing are sounds and controller support (which enables up to 6 players), but those are some big features that I may do after a while if people actually play it.
If you have a bug report or small feature request, feel free to ask or send a picture of a drawing of a spaceship.
Send me a drawing of a sketch and I will put it into the ship shapes. As for the other options, I doubt it, but who knows, maybe I will make them sometime.
EDIT: instead of a sketch, how about a .CSV of coordinates?
A list of coordinates like
is close enough for me to just drop it in. Also, a name of the shape.
For scaling, the current ships are length 90 and width 60, as is the universal hitbox. But I could easily change the hitbox for the Space Train…
I have been unable to get it to run on the RaspberryPi. The RPi runs Python 3.4.2 as the current version and that might be the issue. In several modules numbers were formatted 0_000 (ie, “7_000”). Each time one of these values caused a crash I removed the underscore.
Currently I am stuck with a crash at line 35 of utils.py
res = np.transpose(np.matmul(rotmatarr, rarr))
“AttributeError: module object has no attribute ‘matmul’
Numpy does indeed have the module “matmul” so could be that the problem is on my end.
The mystery continues. Numpy added matmul with version 1.10. The raspberry pi comes with 1.8. Apparently some of numpy’s higher Algebra functions are intended to be crunched over multiple threads. The Arm 7 processor doesn’t like that so they’ve held it back to the old version. Not giving up.
Alright! I got it to run! I had to install a dependency and then update Numpy. That took about 20 minutes to compile. I then had to change the font path. The result is a pretty cool game. I like the way the screen zooms and expands depending on the proximity of the two ships (a feature of matmul perhaps?). That was a fun little python dive.