An action/adventure stealth game mixed with parkour being developed for PC & PlayStation Certified Devices (including the PlayStation Vita) via PlayStation Mobile.
Fifth Progress Update!
Posted by KamRandle on Oct 9th, 2013
Hello Everyone! Sorry for the wait. I've been working on the PC and PSM version of my engine. This progress update is more reading and less watching. While in this update most of the improvements are under the hood (I will talk about them), I have a couple small videos below. I've made the camera more realistic, added simple wall running, and more. So I am to the point where I am ready implement a parkour system. I've already started by adding simple wall running to the game. To make this possible, I had to make several changes to my engine's renderer. When I first implemented wall running, I basically looped through each vertex in my level mesh during initialization, created faces from them, then I'd loop through each face in real-time and check to see if the face is facing right, left, forward, or backwards. Based on which way face is facing, I'd allow the player to do something such as run on the wall (face), only if they are next to the face. Now, the first time I tried this out, the game's FPS went from 60 - 65 all the way down to 25 and lower. Now I sat for a little while trying to think of a way I could fix this, and finally came up with an idea. In my code that finds the faces, it basically looked like this:
This wouldn't have been a problem if I didn't still have to render the whole level along with other objects, but who likes a game with no visuals? Looping through each triangle and checking the directions in real-time made the game run horrible, but only when rendering at the same time. So instead of dividing the faces by three, I said why don't I just divide by 6 for each face, instead of dividing by 3 which would give me each triangle. So I switched it to 6:
The performance seemed to improve a little bit because it now wasn't checking each triangle, but rather every two triangles (1 tri = 3 vertices, 2 tri = 1 face [6 vertices]). And instead of dividing the index count by 6 each frame, I divided it before I went into the for loop. The FPS went up to 30-45. Again, I thought how could I fix this? Well, the simple answer was to implement frustum culling (which still needs work as it is quite buggy). For those who are not aware of what frustum culling is, basically, I only render whats inside the camera's view frustum while everything outside is will not be drawn. After implementing this, the game's FPS went back up to 60-65! It still needs work though. If you look at the ground, the floor will disappear for some odd reason. I will be posting about it on the PSM forums soon. But the game ran really smooth even while checking all the faces and allowing the player to wallrun! I have decided for now, that until the parkour system is fully done and almost perfected, in some villages, I may not allow jumping, until it's fixed. Once it's fixed, all buildings should be climbable. I've noticed that wallrunning currently works the best with levels, that have flat surfaces and walls and not a lot of triangles twisting and turning in different ways. The system still needs a lot of improvement. In the first town, I often find the camera detecting walls that aren't even there when walking on some of the inclines that are around. I will be working hard at fixing this and making it work flawlessly because parkour is a core feature. The game needs it. It will be helpful in many cases. Maybe you're running from some enemies and run into a dead end in an alley, see a ledge but it's too far for you to just jump and reach. So you think, "Hey? I'm in an alley. I'm surrounded by walls. How about I run on the right wall, jump to left wall and grab the ledge?". This needs to be possible. I am even considering scraping just using bare models for the level, and instead, create my own BSP like format that will already contains mesh data (vertices, indices, UVs), data that tells which faces you can run on, what you can grab on to, and I am even thinking about creating a editor to go along with it. This may take some time, but I am totally up to it and it will be worth it. I know the game will not be perfect, but I will do everything I can to make it as close to perfect as I can. The PSM version seems to be in good shape right now. As for combat, I am still stuck on how I want to do it. I have so many great ideas. I've started on it a little though. Each weapon has a model and an lua file. The weapon system loads both files, and handles calling the correct function based on the button that was pressed (Right Trigger = rightTrigger() in weapon LUA files). I will have footage of this in the next two updates. Besides that, the game and engine seem to actually be coming out well. I am excited to show you guys some exciting new features in future updates. I've been looking at sending a couple more test builds out to people after my PSM developer account is completely registered so maybe in the next few months if not the beginning of next year. It is getting late and I have been programming like crazy! Here are the videos:
Intro Screen & New Options:
Thanks for reading & watching! Please like, track the game, and leave your opinion in a comment! :)