Monday 8 October 2012

Humble beginnings of the HPL Engine

I recently stumbled upon some really old videos with gameplay tests in the HPL engine and decided they would be fun to show off. This was not our first foray into 3D first person horror (Unbirth was), but it was the first time the the HPL engine was used. All of these are gameplay videos are from a student project then know as "The Hatch" and later became the "Penumbra Tech Demo".



6th of December 2005 - First Gameplay Test
I had now been working on the engine from scratch since late July, so a little more than 5 months. It is fun to see that most of the important interaction features are in at this point. The sound system for the physics is actually pretty much the same we have used until Amnesia. Jens is the one who recorded this.




7th of February 2006 - Improved Gameplay Test
The engine is now a little bit more refined, mainly with interaction and speed I think. I think that the portal visibility system got added during this time (I actually remember that I came up with a solution in the parking lot when buying groceries for Christmas). Recorded by Jens as well.



23rd of March 2006 - AI Test
The first proper AI test. It now has all the basic systems in, pathfinding, hearing and so on. Most of these features actually survived until Amnesia as well (and still use some variants). It is great to see how the AI works with the physics and shoves the door open as you try to close it. Interestingly, this creature has the most complex pathfinding we have used so far since it had two separate ways of moving about. I recorded this myself and the resolution is so crappy because my computer was unable record and play the game at the same time otherwise.


4th of April 2006 - Kind of Proper Gameplay
Pretty much all features needed to power the gameplay in the tech demo is in now. I think I recorded it.

The final version of the tech demo can be found here.


19 comments:

  1. I really like how in first video when you click on the picture it says I can swear I can hear breeze of the trees at night. In other games this sentence would be pointless and you shouldn't even waste time reading it. However in this game that sentence is actually true and a hint! Why? Because you can hear ventilation behind the picture, which is used, now, for escape! KEEP UP THE GOOD WORK WITH YOUR A.W.E.S.O.M.E GAMES!

    ReplyDelete
  2. May I ask what does HPL stand for? Is it Howard Philipps Lovecraft?! ;)

    Claudio

    ReplyDelete
  3. This is a really neat little step-by-step walkthrough of the development of Unbirth/Penumbra. I'll be watching those videos in full... once I try out the Unbirth test/Penumbra tech demo first. :D

    I agree with the first commenter about the remark concerning the ventilation behind the painting. Attention to detail, especially in the environment, is one of my favorite things about Frictional's games so far. Plus I just really love clicking on stuff to see what the protagonist has to say about it; even if all I get in return is a snarky, "What am I thinking?!" (I believe Daniel was the one that did that to me... quite often), it's still worth seeing what the reaction will be - plus it's just darn fun. And the best thing is it doesn't detract at all from the atmosphere; in fact, sometimes it makes a scene even scarier... the one that comes to mind is the black-light room in one of the Penumbra games; I remember Philip says that he can tell something terrible and violent happened there, and I swear I got goosebumps and had to walk away again for a minute before I got the courage to actually go IN the room, because all I could do at that point was try not to imagine what actually happened in there.

    By the way, as awesome as this was, I do have my fingers crossed that we'll also get a fun "Horror Tip" post for Halloween, to keep us busy once we finish messing about with these demos. :3

    ReplyDelete
  4. @Claudio
    Yes, it stands for H. P. Lovecraft (It's written on Wikipedia)
    http://en.wikipedia.org/wiki/HPL_Engine

    It's really impressive. As a computer science student i admire people who have such dedication. How did you keep yourself motivated during the development? I bet there are a lot of people out there who start to write engines themselves but lose motivation half-way in.

    ReplyDelete
    Replies
    1. For me, it was not hard at all to stay motivated. At the beginning of making an engine there is so much stuff that needs to be done and there is this constant progress. It mainly gets annoying when you want to make it a good tool for an artist :) Just adding the lowlevel stuff is so much fun.

      I wrote I paper on the development but I have lost it. If I can find it, I will post it.

      Delete
    2. I would very much appreciate that paper.

      Delete
  5. Great! It's nice to see personal progress! You probably have learned alot along the way

    ReplyDelete
  6. Sadness... I get to the second door of Unbirth and it crashes. Guess that's as far as I'm getting, but at least the first bit was really cool. And those sounds in the music folder are totally worth the download by themselves. Gorgeous and terrifying at the same time. :D

    ReplyDelete
    Replies
    1. Tip : You should just use the loading console and type in the name of the level you want to go to. Going from one level of Unbirth to the next the usual way usualy results in a crash or other problems. Good luck !

      Delete
  7. Thats Awesome Thomas
    Did you make Tech alone
    or with friends.....

    ReplyDelete
  8. Tech Looking Wonderful..I download-ed Tech since 2007 year..
    Textures Graphics Sound Biliboards are Ok(Good) Everything is ok
    I Noticed you edited alot on Tech to Penumbra...
    I think you(Thomas) had hard work on Hpl.Everyone are suprised When they see ...(Ingame)How you can use something and drop
    I have one question....
    Did you everything made on Blender And Did you using scripting and programming on Basic(Visual Basic Studio)C++(Question looks wierd but I am little curios...Im Programmer So I can understand something on it..(Game Developing)

    ReplyDelete
  9. Thomas. Did you ever consider using a third-party engine for you games ?
    Even now, when you have you HPL3++ tech and engine, do you consider go for example with Unity or UDK, Crysis, Havok etc. ?
    How is that happen, that people that use premade engines like above are still struggle to make something even close to what you guys done from scratch ?

    ReplyDelete
    Replies
    1. Regarding engine switch:
      Yeah we have been thinking about using some other engine, the reason is that it is a lot of work to keep editors, features, etc up to date and we could focus on other things instead if we had a 3rd party engine.

      But right now our pipeline is so very tightly connected with our engine and tools, that it would take a while to change it all. For hpl3 we have also built up a very good base to start other projects from and unless we do something our handle cannot handle, it is bound to just be a waste of time switching.

      But what we are doing is relying more on 3rd party tools and extras then we did before. For instance we used to have our own sound library, but now we use FMOD. I have been thinking about using 3rd part stuff for occlusion culling, animation, etc.

      Regarding how we managed to do this:
      I think that when you use a 3rd party engine, especially like unreal, you are very locked into certain things that the engine does. This is usually not a problem, but when it comes to stuff like our physics interaction, it can be very taxing to get that working. This to the degree that you get a bias towards not doing it at all. Our interaction came out of the idea that we did not have to do animations, but when you have all that set up neatly in an engine you are less likely to try something more experimental out. There are games that have been doing similar quality of games (and better) as students projects though, for instance the newly released Eerie (http://www.desura.com/games/erie). I have not played it yet (will) but it has a very nice look to it and it has been completed over a similar time-span as the penumbra tech demo.

      Delete
    2. Thank you for your reply.
      I guess you have a good reason to switch to FMOD, instead of your own sound lib. Playing your games, I've never felt your sounds are missing something, but that could be just me.
      As for the occlusion culling, As far as I could see( mainly from the map editor and map viewer ) you were using occlusion culling already in Amnesia HPL3. I believe a proper occlusion culling, that works with dynamic objects and doesn't require big steps of pre-processing and even extra artists work is kinda hard to make.
      I've played with hardware occlusion culling and found out they suffer limitations major one among them is probably CPU-GPU synch issues. Then I read about DICE/Frostbite using their own software z-buffer to render scene depth in CPU and occlude objects b-boxes against it. Looks like it is good, except maybe for the artists who need to model low-res versions for the occluder meshes.
      Then I found a commercial package called Umbra, that claims to do the hard work, and they show a list of big game using it.

      Delete
  10. Thomas, any thoughts on the Oculus Rift?

    ReplyDelete
  11. Wow, talk about a blast from the past ! I'm so glad you're occasionally releasing all this old stuff from the beginning of FG. It's pretty incredible how sophisticated HPL was already years ago, despite its obvious childhood ilnesses and hiccups. I've never heard you two talk about how the tech demo came about and what it looked like in its infancy, so seeing all these familiar-but-not-quite-familiar early elements of Penumbra brought a smile on my face. There's even an unfinished model of the infamous Hunter character in one of the corners of the room with the fan ! An awesome retrospective. Thanks again for posting it.

    ReplyDelete
  12. Thomas, a quick question about HPL2 particle system impl: I noticed that when you call DestroyParticleSystem(), the PS will spout all of it's particles (as defined in the editor-generated XML .ps file) before the call takes an effect; only when you get to the point where the "dead" particles begin to respawn does DestroyParticleSystem() stop particle generation immediately.

    Is this behavior hard-coded into the engine? Can the PS be somehow tweaked so that it is destroyed instantaneously?
    Tnx.

    ReplyDelete
  13. Is there a specific date of release? I am really looking forward to it.

    ReplyDelete
    Replies
    1. The tech demo is already out if you want to play it. Its been out for many years now.

      Delete

Note: only a member of this blog may post a comment.