An action/adventure stealth game mixed with parkour being developed for PC & PlayStation Certified Devices (including the PlayStation Vita) via PlayStation Mobile.

Report article RSS Feed Progress Update 5

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:

csharp code:
foreach (NXMesh mesh in level.Meshes)
      {
        for (int v = 0; v < mesh.IndexCount / 3; v++)
        {
          ParkourFace face = new ParkourFace(mesh.Vertices[3 * v], mesh.Vertices[3 * v + 1], mesh.Vertices[3 * v + 2]);
          if (face.FaceDirection == FaceDirection.Left || face.FaceDirection == FaceDirection.Right || face.FaceDirection == FaceDirection.Forward || face.FaceDirection == FaceDirection.Backwards)
          {
            Faces.Add(face);
          }
        }
      }

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:

code:
foreach (NXMesh mesh in level.Meshes)
      {
                                int count = mesh.IndexCount / 6; // Thanks to AnMaBaGiMa
        for (int v = 0; v < count; v++)
        {
          ParkourFace face = new ParkourFace(mesh.Vertices[6 * v], mesh.Vertices[6 * v + 1], mesh.Vertices[6 * v + 2]);
          if (face.FaceDirection == FaceDirection.Left || face.FaceDirection == FaceDirection.Right || face.FaceDirection == FaceDirection.Forward || face.FaceDirection == FaceDirection.Backwards)
          {
            Faces.Add(face);
          }
        }
      }

 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:

Wallrunning: 

Intro Screen & New Options:

Improved Camera:

Exception Handler:

Thanks for reading & watching! Please like, track the game, and leave your opinion in a comment! :) 

Kam :D 

Post comment Comments
Skullboy99
Skullboy99 Oct 9 2013, 9:16am says:

im seeing lots of progress! Good work!

+3 votes     reply to comment
KamRandle
KamRandle Oct 9 2013, 9:54am replied:

Thanks! :)

+2 votes     reply to comment
WeeGee9000
WeeGee9000 Oct 9 2013, 1:17pm says:

Thats what im talking about!

+2 votes     reply to comment
KamRandle
KamRandle Oct 9 2013, 3:39pm replied:

Thanks! :) :D

+1 vote     reply to comment
hgoel0974
hgoel0974 Oct 9 2013, 4:13pm says:

great job!
I guess a progress update for Crimson Diaries is overdue :P

+2 votes     reply to comment
KamRandle
KamRandle Oct 9 2013, 11:46pm replied:

Hey, Thanks! And it's all good. Release it when you're ready and think the time is right. Can't wait to check it out! :D :)

+1 vote     reply to comment
Guest
Guest Oct 10 2013, 11:09pm says:

This comment is currently awaiting admin approval, join now to view.

TheFadedDarkness
TheFadedDarkness Oct 10 2013, 11:10pm says:

Kam you ever think of making the game a Third-Person stealth based game. The game could also include a multiplayer mode. Ignore that other comment...

+1 vote     reply to comment
KamRandle
KamRandle Oct 11 2013, 2:36pm replied:

Hello, a multiplayer mode is already planned. As for the view of the game, I'm creating what I see in my vision and my vision is for the game to be a first person game. Plus, implementing third person mode will have an impact on performance depending on the detail of character, while having to render the whole world, NPCs, with also having to load all the textures and more, and I'll have some extra animation processing to do. :)

+1 vote     reply to comment
Guest
Guest Oct 16 2013, 11:57pm says:

This comment is currently awaiting admin approval, join now to view.

KamRandle
KamRandle Oct 17 2013, 11:46am replied:

Hey, Thanks! :)

+1 vote     reply to comment
Post a Comment
click to sign in

You are not logged in, your comment will be anonymous unless you join the community today (totally free - or sign in with your social account on the right) which we encourage all contributors to do.

2000 characters limit; HTML formatting and smileys are not supported - text only

Icon
Shadows (PC/PSM)
Platforms
Windows, VITA
Developer & Publisher
Kold Games
Engine
Unity
Contact
Send Message
Release Date
TBD
Game Watch
Track this game
News
Browse
News
Report Abuse
Report article
Related Games
Shadows (PC/PSM)
Shadows (PC/PSM) Indie Single Player Stealth
Related Engines
Custom Built
Custom Built Commercial Released Sep 1, 2007
Related Groups
Kold Games
Kold Games Developer & Publisher