• Register

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

Report RSS Progress Update 5

Fifth Progress Update!

Posted by on

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:

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:

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
SkullDust99
SkullDust99 - - 239 comments

im seeing lots of progress! Good work!

Reply Good karma Bad karma+3 votes
KamRandle Author
KamRandle - - 68 comments

Thanks! :)

Reply Good karma+2 votes
WeeGee9000
WeeGee9000 - - 1,639 comments

Thats what im talking about!

Reply Good karma Bad karma+2 votes
KamRandle Author
KamRandle - - 68 comments

Thanks! :) :D

Reply Good karma+1 vote
himanshugoel2797
himanshugoel2797 - - 14 comments

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

Reply Good karma Bad karma+2 votes
KamRandle Author
KamRandle - - 68 comments

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 :)

Reply Good karma+1 vote
Guest
Guest - - 689,438 comments

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

Reply Good karma Bad karma+1 vote
TheFadedDarkness
TheFadedDarkness - - 13 comments

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...

Reply Good karma Bad karma+1 vote
KamRandle Author
KamRandle - - 68 comments

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. :)

Reply Good karma+1 vote
Guest
Guest - - 689,438 comments

Wow man... these look awesome. I would love this for vita.

Reply Good karma Bad karma+1 vote
KamRandle Author
KamRandle - - 68 comments

Hey, Thanks! :)

Reply Good karma+1 vote
Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: