Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411430 Posts in 69363 Topics- by 58416 Members - Latest Member: JamesAGreen

April 19, 2024, 07:54:32 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsGhost Knight Victis - Heroic Dark Urban Fantasy - Action RPG
Pages: [1] 2 3 ... 6
Print
Author Topic: Ghost Knight Victis - Heroic Dark Urban Fantasy - Action RPG  (Read 15065 times)
AnomalousUnderdog
Level 1
*



View Profile
« on: January 17, 2017, 01:42:17 PM »



Ghost Knight Victis is a single-player action RPG inspired by the henshin hero genre (Kamen Rider, Karas, Garo). You play as a terminally-ill superhero fighting against Lovecraftian horrors invading the real world.



The catch is that his health deteriorates every time he uses his powers. As the player, you need to ensure the main character stays alive until the end of the year, when the final boss appears. You'll also need to maintain your secret identity, and prevent endangering your friends. But standing with you are individuals who are in the same predicament.




I'm doing this solo for now. While I do co-own an indie dev studio, this is a pet project of mine that I do in my free time. I've been working on this for a while, and now I feel like it's in a state where I can share the work-in-progress. Cause I know getting feedback is valuable, even this early on.

Here's a compilation of my progress since the start:





Right now, my focus is on building up the combat part of the game, as a demo. But in the future, it will have a world map with story that plays like a life sim of sorts.


The combat is real-time action, but the world map part will play like some sort of digital board game, where you choose what activities to do per day (work on your job, hang out somewhere, do exercise, etc).







I’m programming the game in Unity, I also do the art. 3d models are made in Blender, and textured in Substance Painter. But I try to use free generic assets I get online when it’s appropriate.

I can only work on this game every weekend, but I do try to make an update every week.
« Last Edit: December 26, 2017, 10:23:20 PM by AnomalousUnderdog » Logged
AnomalousUnderdog
Level 1
*



View Profile
« Reply #1 on: January 17, 2017, 01:54:01 PM »

Last update I got in-game menu working:





I’ve added a system where the GUI can remember which screen you came from, so pressing the back button will bring you back to the previous screen. In essence, it’s like pressing the Back button in your web browser.

This is used in the in-game menu, where you can change settings. The menu responds to both mouse clicks, and gamepad input.

I’ve also spruced up the GUI art a bit. I added some nice blur-behind-GUI effect.

(The patio furniture is just a test.)



I also added back mouse control for camera rotation since people were asking for complete keyboard and mouse control.

The three weapons shown in the image above are attack buttons. Pressing that button will immediately attack with that button, not switch the currently equipped weapon. In this way, you can combo with different weapons easily.

Controls are rebindable, but I wanted to add some sensible defaults. I ended up with this for the keyboard:

WASD: Movement

Left Mouse: Rapier
Right Mouse: Spear
Shift + Right: Warhammer
4th Mouse Button (in case user has a 5 button mouse): Warhammer

Spacebar: Phase Dash

Q: Target Lock On/off
Middle Mouse Button: Target Lock On/off
E: Cycle target

I'll have to do some further playtesting with these later on.
« Last Edit: January 22, 2017, 02:59:18 PM by AnomalousUnderdog » Logged
AnomalousUnderdog
Level 1
*



View Profile
« Reply #2 on: January 22, 2017, 02:46:37 PM »

Made the controls display show keyboard & mouse controls when input is detected from there, and show gamepad controls if input is from there.

Also added a hotkey to minimize the controls display.





Also continued working on the first non-placeholder enemy for the game. I don't really have a name for it yet.

I test the rig first in Unity to make sure it animates properly.





Then I move on to making textures for it.

Logged
AnomalousUnderdog
Level 1
*



View Profile
« Reply #3 on: January 29, 2017, 04:50:14 PM »





Testing the Fast Mook (now called Wooden Mannequin) enemy in-game.

Thanks to the way I set up the character system, I can easily swap the 3d model of an enemy to a different one. So it was easy for me to add this new enemy, using the previous enemy placeholder as a template.






I added ability to have dual-wielding attacks in a single animation (like a one-two punch) where you can specify when the right hand and left hand deal damage (independently of each other), or you can make both hands deal damage at the same time.

This can also be used to let other body parts deal damage, as long as they've been set properly. Later on, I'll use this for monsters' tail swipes, bite attacks, etc.
Logged
AnomalousUnderdog
Level 1
*



View Profile
« Reply #4 on: February 06, 2017, 12:15:24 AM »





Here I'm making an attack for the Wooden Mannequin. I create the animations in Blender then view it in a test scene where nothing else is happening, so I can quickly see anything wrong with the animation.

The playback speed is slow since viewing from Blender also shows the raw data, so my screen recorder doing its thing on top of that slowed things down. The light trail on its eyes also ended up with unnaturally-looking straight lines for that reason. It comes out acceptably curvy when I'm not recording to video.





And here I'm testing it in-game. This is recorded from a standalone build of the game so the framerate is far more acceptable.

I was starting to worry I did something wrong in the code that was screwing the framerate.

I probably should start balancing the damage values and attack animation speeds, and I probably should make the enemies stand apart more because they keep on hitting each other.
Logged
AnomalousUnderdog
Level 1
*



View Profile
« Reply #5 on: February 13, 2017, 04:02:54 AM »

I made it that your light and particle effects die out when your character dies.





Making a new rapier combo attack (the current one in the game was just a test and I’m not sure if I’ll be really including it). I’m going for a typical slash-slash-thrust, but the thing here is that the first slash will also parry incoming attacks if you time it correctly (once I implement parrying). That’s the special property of the Rapier in the game.



Logged
AnomalousUnderdog
Level 1
*



View Profile
« Reply #6 on: February 13, 2017, 04:05:53 AM »

Testing the new Rapier attacks in-game.





I felt like it's hard to get the "rhythm" right in pressing the attack button to do the new rapier combo attack, so I'll be tweaking the animation speeds and overall length.

I also realized that in other games, even when the character is back to the idle animation, there's still some very short time allowed to press the attack button and it'll still continue to the next attack in the combo sequence. So I'll try that too.

After testing this, I realized that hit pushbacks are not working at all. Enemies are supposed to get pushed backwards when hit. I was pretty sure they were working at one point, so I'll look into this.

I was replaying Bloodborne for a while and I realized that the townsfolk enemies do not hit each other, their attacks simply pass through each other. And it works well enough when I play it, so maybe I'll try doing that for these enemies as an experiment.
Logged
AnomalousUnderdog
Level 1
*



View Profile
« Reply #7 on: February 20, 2017, 07:32:26 AM »





Tweaked the rapier attack animation. It feels easier to pull off now, and the blending between them now looks more natural in-game.

The recovery for the spear attacks on the other hand, needs to be a little slower. The warhammer will be the slowest among all of them.

I figured I need to add some weapon trail effects, not just for juice, but to let the player more easily see the curve of the rapier swings as visual feedback (important since a lot of the game will be in nighttime areas, which make things hard to see). But that will come later.

Also, got the hit pushback working again. Obviously, I still need to tweak the values.

Here I also demonstrate the debug tooltips. They overlap a lot in this one, but normally, I only use it on one enemy.

Near the end I also show the experimental top-view camera.



Work-in-progress, designing the look of the GUI. Can't think of a good checkmark symbol, so I just gave it a red glow.
Logged
AnomalousUnderdog
Level 1
*



View Profile
« Reply #8 on: February 26, 2017, 11:20:21 PM »

Worked more on the GUI. These are some of my experiments:









Here I'm testing the interactivity of the checkbox and sliders.





Someone mentioned the bloom in the GUI looked good. It was actually a bug, there wasn’t supposed to be bloom in the GUI (and it doesn’t happen during runtime), but I thought of putting it there since it did kinda look good.

Another guy mentioned it reminds them of God of War, which made me think of recoloring it with a bluish tint instead of red (blue flames, blue glow, etc.).
Logged
AnomalousUnderdog
Level 1
*



View Profile
« Reply #9 on: March 05, 2017, 05:04:45 PM »

I was working on the dropdown box, and I got a little disappointed at the default dropdown box functionality in Unity. It can't seem to show the choices longer even though there's enough space. The choices also show using a fade in/fade out animation only (you can't change it).





Thankfully, Unity provides the source code for Unity UI (it's in C#), so I took the source code for the Dropdown box in their BitBucket and customized it to work better for what I have in mind: resizing properly when the choice box has padding, and non-hardcoded animations when choice box opens/closes.

Here, I make the choice box do a swiping motion in/out, instead of the regular fade in/out (although that can still be enabled if preferred):





The Controls screen is working nicely so far. You can adjust sensitivity, invert Y-axis, checkbox to let the game allow moving the mouse outside the window or not (if game is in window mode). The settings get saved into a text file in the user's My Documents under my own subfolder for the game.

Also, since some people have asked me how I make my GUI, I made this tutorial: http://i.imgur.com/rGYlnCA.png (I'm not going to insert the image here since it's very very long).
Logged
AnomalousUnderdog
Level 1
*



View Profile
« Reply #10 on: March 13, 2017, 05:59:04 AM »

Added back quick thrusts to the rapier attack combo. The rapier’s supposed to be one of the fastest weapons in the game, so I quickened the animations a bit. I also fixed a bug that prevented damaging properly if the attack animation was too fast.





I also updated my video card drivers which seemed to have gotten rid of this nasty error when I work: the whole laptop hangs, pagefile usage spikes, and mouse gets unresponsive. I’ve been reluctant with updating my drivers cause last time I did it, the laptop refused to boot up anymore.



I’m also working on graphics settings, they get saved into a text file in JSON format:


Logged
Valar05
Level 0
***



View Profile
« Reply #11 on: March 14, 2017, 09:17:44 AM »

I remember seeing your dodge gif on reddit a while back, glad to find you here still chipping away at the game.  Rapier looks awesome!
Logged
Panurge
Level 5
*****



View Profile WWW
« Reply #12 on: March 14, 2017, 11:21:00 AM »

Looks great and I love the story outline so far. Really interested to see where you take it.
Logged

AnomalousUnderdog
Level 1
*



View Profile
« Reply #13 on: March 20, 2017, 10:08:48 AM »

Got the graphics settings screen working.

Here I'm testing out the resolution choices:






Here toggling effects in real-time (the change when I set the anti-aliasing method may not be that noticeable):






@Panurge @Valar05 thanks guys! Been wondering if anyone really reads this thread.
Logged
AnomalousUnderdog
Level 1
*



View Profile
« Reply #14 on: March 26, 2017, 06:07:07 PM »

Changed layout of the graphics settings screen, so more of the game can be seen when toggling graphic effects. Fixed bugs/made workarounds so the graphics settings screen can work inside a scrollview.

Switched to using Unity's Post Processing Stack image effects which look nicer and was definitely faster.





Also fixed some bugs with changing screen resolution.
Logged
RizeoftheSummonds
Level 1
*



View Profile WWW
« Reply #15 on: March 26, 2017, 07:41:12 PM »

This game looks cool
Logged

AnomalousUnderdog
Level 1
*



View Profile
« Reply #16 on: April 03, 2017, 09:08:13 AM »

Added a brightness adjustment slider. This is only an image effect, and doesn’t change the hardware gamma in any way (a limitation in Unity, as far as I’m aware). This will probably be my final addition to the Graphics Settings screen for now (I’ll get back to this in the future for “Toaster Mode”, and maybe change the look of the buttons).





I also added “Revert to saved” and “Reset to defaults” buttons for canceling changes to the settings. To do that, I made a reusable dialog box, which I probably will indeed reuse for an “Exit the game?” confirmation when the user wants to quit.



Also fixed a bug where the dropdown choices would get stuck being shown above, even if at the moment, there’s ample space below the button.

Added weapon “swoosh” trail effects. It didn’t look good as a solid white (looked like the weapon had a ribbon tied to it), so I lowered the alpha.







Logged
AnomalousUnderdog
Level 1
*



View Profile
« Reply #17 on: April 09, 2017, 02:33:30 PM »

Added healthbars on enemies. I think I’ll add stamina bars on them like in Nioh cause it allows players to strategize better, seeing when the enemy is out of stamina.





Slowed down the camera snapping speed when targeting.

It’s now also even slower the more that the target is already near the center of the screen.

This is to prevent the camera from swinging around too fast when the player rapidly switches from target to target.



Logged
AnomalousUnderdog
Level 1
*



View Profile
« Reply #18 on: April 17, 2017, 11:14:20 PM »



My current goal is improving the enemy AI. I need to allow it to choose which attacks to use depending on what it detects (if it has enough stamina at the moment, if the player is in hit stun, if the player is surrounded, etc.).

I added a few new decorator nodes to the Behaviour Tree system: loop, wait-until-success, and abort-if-failed.

If you’re not familiar with Behaviour Trees, here are a few links:
Gamasutra: Behavior trees for AI: How they work (by Chris Simpson)
AIGameDev: Behavior Trees for Next-Gen Game AI (Video, Part 1)



The loop/repeat decorator forces tree traversal to repeat whatever it’s decorating, before moving to the next node. I can use this to create patterns of attacks for enemy AI. Since it’s a decorator, it can loop just one node (e.g. attack 2 times) or loop a whole sequence of attacks (e.g. repeat this attack pattern twice).



The wait-until-success decorator will essentially turn any node into one the can suspend the tree traversal (”Running” state) until the node reports success. I’m thinking of using this to make the enemy AI wait, until it has enough stamina to do a certain attack that I want it to do.

The abort-if-failure decorator will immediately stop traversal of the tree without bothering to let execution go back upwards. Aborting will also reset any in-progress data that nodes are processing. This is meant to reset the tree in case all of a sudden, a higher priority behaviour needs to kick in.



I’m using this to stop the enemy AI from doing a long series of attacks if they don’t need to keep doing it anymore. If the player is already dead, or too far away, there’s no reason to keep attacking.


I’ve also cleaned up the code for tree traversal and added more unit tests to ensure there’s no bugs.



Here's a video of that enemy AI at work.





Right now I have some bugs with the movement and when how it detects if it arrived at its destination. I’ll continue working on this next weekend.

My Behaviour Tree system outputs debug messages to help me pinpoint what went wrong with the AI:

Logged
AnomalousUnderdog
Level 1
*



View Profile
« Reply #19 on: April 23, 2017, 06:19:42 PM »






Fixed the bug

Finally got the enemy AI working properly.

My initial problem was that enemies would just stand still after getting near enough to the player. Thankfully, I made my behaviour tree system easy to debug, as each node can report the reason why it chose to report success or failure. I can then output a debug log of the whole tree traversal. Turns out the problem was just floating point precision:



I told the AI to get 1.7 meters away from the player first before attacking. But it always ends up stopping at exactly 1.700885 meters away, making the AI think it hasn’t reached the required distance yet.

Turns out when it comes to less-than and greater-than comparisons, my code was not using my intended tolerance/threshold values.

So instead of:

Code:
firstNumber > secondNumber

it should be something like:

Code:
firstNumber - secondNumber >= -tolerance

with tolerance being a value like 0.01

I don’t need it to stop at exactly 1.7 meters away, this is a real-time action game after all, with characters constantly moving around. So the tolerance check is quite enough.


This is what the test enemy AI looks like right now (click for full view). It’s definitely too large to read through. So having sub-trees is something I want to implement later on.





Random Selector



Added a “Random Selector” type of node to my Behaviour Tree system. This is a simple “randomly pick one among the choices” without any intelligent decision making, meant purely for just random behaviour (I will later add a different type of selector that will use some form of utility AI/decision tree).

The number on each child node represents their odds of being picked. In the image, “Fast Attack” has a 3 out of 6 chance of being picked randomly, “Slow Attack” has a 1 out of 6 chance, and the “3 hit combo sequence” has a 2 out of 6 chance.

By default, all of them will have a value of 1. But if you want a particular node to occur more frequently, you can increase its odds value.



I’ll be using this for the enemy AI to add some randomness to their attacks.


Stamina Bar

Also added display of enemy’s stamina bar below their health bar (it's the thinner, green bar).



And, I added this experiment of showing the health and stamina numbers on the targeted enemy. This will likely be an optional setting, if ever. Meaning it’s disabled by default, and you can turn it on in the game settings.

Logged
Pages: [1] 2 3 ... 6
Print
Jump to:  

Theme orange-lt created by panic