Streamer vs aliens
- Genre: First-Person shooter
- Timeframe: 15 weeks (20h/week)
- Engine: In-house Engine (TEMP engine)
- Reference game: Call of Duty: World at War Zombies
My Contributions
- AI
- World mechanics
- Visual scripting
- Debug console
- Various post process effects
AI
The AI in this game works on a behaviour tree with a somewhat simple behaviour.
- If outside: go to entrypoint
- If at entrypoint: attack entrypoint
- if entrypoint open: walk to player
- If at player: attack player
The attack is a bit special though, if the enemy has started attacking; but the player has moved out the way. The enemy will not change behaviour and instad follow through with its attack until it is done.
World mechanics
We have a couple of world mechanics. Just like our reference game, we have purchasable doors, weapons, perks and repairable entrypoints. All of these mechanics are driven by visual scripting.
Here is an example of the door mechanic being driven by visual scripting. And subsuequently the other world mechanics works in a similar manner to the door.
Debug console
I saw on a previous years portfolio that they had made a debug console using Windows RtlCaptureStackBackTrace, which I thought looked pretty neat. So I decided to try and make my own Unity-esque debug console.
In our engine we have multiple macros for the debug console such as:
LOG_ERROR
Just takes in a message and logs it as an errorLOG_ERRORF
Takes in a message and formats it likePrintf
and then logs it as an error.LOG_WARNING
,LOG_WARNINGF
,LOG_MESSAGE
,LOG_MESSAGEF
works like the ones mentioned above but for their own respective purposes.
Every log-type has a map of logs associated with them, the purpose of this is to cache the different types of logs that can happen. So we don't have to call RtlCaptureStackbackTrace
every single time we wanna log something. Though normal messages are being handled a bit differently, this is due to the fact that not all messages are the same; and caching all of them would eat memory.
The logs are then passed to our console window, which prints them out as selectables and if double clicked; will open up the respective files where the log was called.
Post process effects
I made some simple post processing effects.