My Enemy's Enemy is my Friend
Requires pygame and numpy. Please play with sound on!
Playthrough Videos:
Part 1 of 3: https://youtu.be/MzEqs0aj1y8
Part 2 of 3: https://youtu.be/bz7x3VbqBMc
Part 3 of 3: https://youtu.be/neNqHciPZXI
Alternate Ending: https://youtu.be/xagWlKJZlB0
Game Website:
http://randomprojectlab.blogspot.com.au/2017/03/pyweek-23-my-enemys-enemy-is-my-friend.html
Awards
Scores
Ratings (show detail)
Overall: 4.1
Fun: 4
Production: 4.8
Innovation: 3.5
Respondents: 11
Files
File | Uploader | Date |
---|---|---|
enemys_enemy_pyweek23.zip
— final
Final Game |
mit-mit | 2017/02/25 18:29 |
day4_screenshot.png
Day 4 Screenshot |
mit-mit | 2017/02/22 09:22 |
Diary Entries
Day 1-3
I wasn't that keen on this theme, because I was hoping to make a pleasant and relaxing game this year, but I just can't brainstorm anything good that meets the theme like this :).
I'm going solo this comp (Lucid is sitting this one out), and hence down on artistic talent and ability :( .. therefore I decided this was agood opportunity to go for something 3D. I'm doing a tactical space shooter (inspired by games like colony wars and x-wing vs. tie fighter) with a backstory involving working for a terrorist cell against a government responsible for the killing of your family.
I'm going a bit different by avoiding opengl or hardware rendering, and attempting to see how far I can get with numpy + pygame alone. I've had issues with pyopengl and panda3d before on various machines, and I'm concerned about the playability of games with lots of dependencies. It's working out pretty well so far, although I've quicky learnt how difficult it is to create texture mapping using numpy alone in an efficient way. Most of what I have so far is flat shaded polygons, which I think will fit the bill OK.
I spend most of day 1 and 2 developing a rendering system for polygons and blobs that uses colour and lighting. I got some basic spacecraft physics working towards the end of day 2 and some modelling, other visual effects and a basic HUD working day 3. Making good progress, but concerned still that I'm overscoping on this one :) ... oh well, thats all part of the fun, isn't it?
Day 4-7
Thing I was most excited about this comp is I actually sat down to properly compose and produce the in-game music, and I was pretty happy with the result: a nice orchestral theme, which I felt captured the ambience I wanted in the game.
Hope you like it, and please let me know any bug reports!
Playthrough Videos
Part 1 of 3: https://youtu.be/MzEqs0aj1y8
Part 2 of 3: https://youtu.be/bz7x3VbqBMc
Part 3 of 3: https://youtu.be/neNqHciPZXI
Alternate Ending: https://youtu.be/xagWlKJZlB0
Unfortunately my laptop hates running pygame and recording video from the screen at the same time, so the framerate of the game is reduced to half of what it would normally be :( ... hence sorry about the videos being a bit long. Hope you enjoy!
Post-mortem
Array of 3D effects: All of the 3D effects are essentially drawn using three functions: "pygame.draw.line", "pygame.draw.circle", and "pygame.draw.polygon". In the first 48 hours I had in mind how I was going to use these to draw flat-shaded polygons and projectile effects, and I was just lucky that it pretty much worked out off the bat. I experimented a bit with trying to get texture mapping to work efficiently using pygame.draw.surfarray and numpy functions, but it was pretty much a failure. The only bit of texture mapping I kept was the thin halo of the milky way in the background, which I put in mainly to help with visual orientation.
Motion Dust: The little lines that fly past you as you move. I put these in in the last 12 hours, and I'm really glad they worked (not perfectly) as it's really hard to gauge your motion otherwise, particularly when things are far away.
Ship AI Voice: After playing Universe Factory's last few pyweek entries, I knew I really wanted voice in my game (because it has given their games such a boost in my opinion), but I didn't have the people for it. I ended up using osx built-in command line function "say" using the voice "Vicki" to generate all the in-game AI conversations, and I liked how it turned out (even if she has slightly odd pronunciation at times :) ).
Music: I sat down for at least half a day to try compose and produce the background music for the game. I'm not a composer, so for me I was really happy with how the music turned out; it was exactly the right ambience I wanted that game to have. I wrote the score up in Musescore using a couple of sections of strings, brass, a timpani and a snare drum, and did a little post-processing in Audacity. I really had fun doing this, and it's something I'd like to work on more (I love it when games have good music, something I will aspire to)
I was grinding pretty hard on development for basically every waking hour I had spare over the week, so I'm pretty sure I wouldn't have been able to make it any better in the time I had. In any case, if I did have a bit of extra time I would have concentrated on a getting a few extra things working:
More variation in gameplay and missions: I really wanted to have a few different mission modes (for example a defence related objective, an objective where you are required to disable and board a ship) but I just didn't get anywhere near finished in time to do this. I felt like the gameplay therefore was a bit repetitive. Also, unfortunately, I left very little time for game polish, so alot of the missions I didn't really space out properly (too much time spent travelling between objectives, firing at things really far away). I guess I knew from the start that the game was going to be technically ambitious, and therefore I was going to have to sacrifice having time to polish it, and actually make it a really good game.
Better Story and Alternative Endings: I knew from the start how I was going to use the story to match the theme, but in terms of actually developing the narrative, I did this mostly in little five minute gaps throughout the week, in-between getting the mechanics of the game implemented. So basically the story was a bit ho-hum, but that said, I'm hardly a writer, so it might not have gotten any better with extra time spent :). Also, I was going to have an alternative ending mapped out and feature this a bit more, but I just ran out of time ... I got to 6am after minimal sleep over the past 3 nights and I was just too exhausted to keep going, so I left it as it was. If I had more time I would have made this better.
This was a fun pyweek with lots of great games. Congratulations to the winners Tee and Universe Factory, two really great games! and congrats to everyone who participated and made a game! See you all next comp!