|||| 8 - 15 nov 2014 ||||
7DFPS ...
blackheart
by robertcalvert | submitted for 7dfps |

5

14


Tag line
Starring Barry as himself


Download links (see about for more)
About
This is blackheart, my attempt at an FPS. It has been a great learning experience working on this project and I have had a lot of fun along the way (and a little stress). Sadly I did not have time to add all the features I would have liked :( Thank you for looking... I am off to enjoy a beer. Requires Java or Open JDK 1.7+ to play (It may work on 1.6 but I haven't tested!) Below is a video playthrough by slushygames12. It made me smile so I thought I would share it :)
Video
fruitfly says...
Like it. nice!
jonny2027 says...
Looks awesome and plays great. Do you plan to open source it?
Cheeseness says...
This is fantastic. What a great homage to the earliest of FPS games. The 8 bit-like art is a surprisingly good fit. Well done!
Thank you for your comments. I will probably chuck the code up on github at some point in the future, I am hoping to get some time in the next couple of months to clean things up and fix the bugs. I want to add some more dynamics (Weapon range, keys, Boss levels, better AI etc.) and some more levels that are not so rushed. I ran out of time BIG TIME towards the end so it has not turned out quite as I had hoped. But I had a hell of a lot of fun working on it and it was an amazing learning experience.... I cant wait until next year.
GreaseMonkey says...
Critiques: - There's no story from my understanding. - You can't pick your weapons, you only ever use your "best" weapon, as far as I know. - The mouse sensitivity is too low for trackpads. - How do you free prisoners again? A proper readme would help. Plusses: - You can work out where you need to go next, a characteristic that was missing from Wolfenstein 3D. (The doors staying open really helps.) - The secrets don't require any wallhumping! Not sure if the blatant FPS drop in the last level is a plus or a critique. It was amusing. But yeah, I really like this entry. If you'd like an interesting challenge, try making a proper raycaster engine.
I would love to work on a raycasting engine but its outside of my current knowledge level. My current approach is to render everything and split static and dynamic objects. Static objects use a display list to speed things (some what) and then I rely on OpenGLs clipping which seems to be quite good. The massive FPS drop is due to the billboarding logic for all the zombies and the ray picking logic (which is really bad). Thank you for the comments :)
I have a small updated version. I am not sure if I should slip it under the same download link in dropbox and override the current version (is this against the rules?). Fixes include: Fixed spelling mistakes Updated AI (Now walk towards you and shoot, but will shoot back if you shoot first) Reworked GL implementation (This may break more than it fixes) Doors shouldn't clip through the walls anymore Mobs now leave blood pools on the floor when killed Weapons now have range (well the shotgun does) Removed some cruft in the code (May stick it up on GitHub at some point) If anyone is interested I will uploaded it, if not I shall shelve it for another day...
jonny2027 says...
I would love to see the update and i would love to see the code on Github, i think its fantastic, plays really nicely and is just good old fashioned fun :-)
Cheers Jonny :) I have uploaded the updated version, the download links should now be pointing to it. If anything doesn't work like before (caused more problems than fixed) then let me know......
jonny2027 says...
Plays really well, the blood splatters are great :-)
jonny2027 says...
Hi Robert, Just wondering if you are still planning on making the source open, would love to take a look at how you created it as i am struggling with a game i am working on. Thanks Jonathan
Hi Jonny, sorry for the delayed response I haven’t been checking on here for awhile. My original plan was to carry on developing with a group of friends via git but due to work and other commitments this looks unlikely to happen anytime soon. I am still hoping to build on top of what I have and fleshout/expand it (probably in next year’s 7dfps). So for purely selfish reasons I want to keep this one close to my chest until it is ready. If you have any technical questions I would be happy to help, I am not sure if this is the correct forum but feel to ask here. I find the LWJGL and java-gaming forums an excellent resource and social experience; everyone is pretty friendly so you may want to ask around there. If you are interested in other competitions to build up experience you should check out ludumdare (http://www.ludumdare.com/compo/author/robertcalvert/), I find this a great learning resource as well. I have some source code on there for other projects that may be of interest to you.
jonny2027 says...
Hi Robert, Sorry for the delay in responding, i understand completely about wanting to keep the code close to your chest not a problem. My main questions and reason for wanting to look at the source code was for how you build the walls and textured them. Thanks Jonathan
Hi Jonny, I always take the same approach to level mapping and use images. Each level is made up of 3 images. These images map the floor, the walls (including items and mobs etc.) and the ceiling. When first loading a level I iterate over each pixel in the images and create a level object (The RGB of the pixel is used to decide what the level object is) within an array. On each tick I loop over the array and call a render function against each object. The render function for a wall is quite simple. I store the position of the wall as the centre of the cube, as such the distance of the quads from here is half the size. Something like: GL11.glTexCoord2f(texture_front.getU(), texture_front.getV2()); GL11.glVertex3f(-half_size + position.getX(), - half_size + position.getY(), half_size + position.getZ()); GL11.glTexCoord2f(texture_front.getU2(), texture_front.getV2()); GL11.glVertex3f(half_size + position.getX(), - half_size + position.getY(), half_size + position.getZ()); GL11.glTexCoord2f(texture_front.getU2(), texture_front.getV()); GL11.glVertex3f(half_size + position.getX(), half_size + position.getY(), half_size + position.getZ()); GL11.glTexCoord2f(texture_front.getU(), texture_front.getV()); GL11.glVertex3f(-half_size + position.getX(), half_size + position.getY(), half_size + position.getZ()); Note that I use Slick-Util to handle the texture loading but use a texture atlas with a custom helper class. Here is a standard example. This shows you how to load an image, bind and then draw a quad. http://lwjgl.org/wiki/index.php?title=Slick-Util_Library_-_Part_1_-_Loading_Images_for_LWJGL This is quite a broad subject so it may be best to ask technical questions in the LWJGL forum, as the guys there can explain things much better than me :)
7DFPS brought to you by Sven Bergstrom & Sos Sosowski & Jan Willem Nijman | Logo by Cactus Follow news and info about 7DFPS on twitter Games hosted on itch.io