* Note * - within this article all the game engine work and game content shown are in a work in progress and Pre-Alpha state. Also please note the video linked in this article is a "In-Game Tech Demo video" and is not a completed or official "Gameplay Video" for Corpses 'N Souls. The official Corpses 'N Souls gameplay video will be a separate release and video at a later date.
Making it's first appearance from last years game engine development I am proud to announce and demonstrate a long time dream of mine in the form of Real-time 2D destruction. This feature has been fully integrated into the 2DEvolved game engine and Corpses 'N Souls. With the new ability to convert any sprite into a fully destructible object in real-time(it has no predetermined destruction or out come) has provided a massive amount of possibilities, gameplay opportunities and again provide a greater degree of detail to the game world.
Make sure you watch the GDC 2018 tech demo video linked below that demonstrates the Real-time 2D destruction as well as 36 other features: [ Watch The Video Now! ] or keep on reading.
Last year I decided to focus on completing my game engine's optimizations, scalability, compatibility and also complete the remaining feature sets that where on the engines and games 2017 road map. Since GDC 2018 was last month I decided it was a perfect opportunity to make a video that would showcase all 36 technology features that are part of Corpses 'N Souls and the 2DEvolved game engine. It has been a while since I made an public update on my progress since I have been fully absorbed in my game engine development. Now that I have reached a certain mile stone I felt it was the perfect time to update the fans and gaming community as to what I have been working on and what I have completed during last years intense development cycle.
To display my progress visually a "tech demo" video format was chosen for it since that felt like the perfect solution to demonstrate most of my progress from last year. Not only that a tech demo video is also a cool way to display all the technology features that will be included in Corpses 'N Souls. To take the tech demo one step further the entire video is running all of the technology in-game in real-time @ 60 FPS in a mock up level of Corpses 'N Souls in a real game environment. Note, all of the games core code is running to make sure the technology featured will not hamper the core games performance etc. So basically all of the tech in the video is running at full speed in a real game scenario and is what you can expect in the final game.
After the linked GDC 2018 tech demo video I also go into details on all of the features in the video and also discus more about the progress that I completed last year and what are my plans are for this year and beyond.
* Please make sure to select : 1440p or 4K @ full screen mode for the best quality and experience in YouTube *
* Click on the image below to start watching the new [ Video ] *
* Please view this video @ 1440p if you have a low powered computer and GPU. *
It is recommended by the developer to watch the current video in YouTube's expanded [Theater Mode] or ideally in [full screen] mode on a big screen HDTV(which it has been developed on) at 1440p or 4K YouTube quality setting(the small gear icon on the right of the video).
In this article I will be demonstrating and showcasing 36 engine features that have been added, completed, optimized, allow scalability or have had all four of these action items applied to it. For each feature I will go into detail as to what they are and any other relevant information for that feature. After I have discussed all 36 features I will also go into detail as to what are the plans for the rest of 2018 and also share some big announcements.
Here is a list of the 36 engine features that will be discussed in this article:
- Real-time Per Pixel Destruction
- Real-time Procedural Destruction
- Real-Time Hardware Profiling & Analysis Plus Usage Monitoring
- In-game Real-time CPU core load, Ram usage & system usage monitoring
- Massive Interactive Particle & Hybrid Decal Budgets
- GPU and multi core CPU accelerated
- Multi-core Load Balanced Shader Data & Data MAP
- Multi Staged Interactive blood system
- Fully Programmable Blood System At a Unit Level
- Interactive Liquid Simulation
- Normal Mapping Plus Advanced Lighting
- Procedurally Generated GPU Accelerated Details
- Day & Night Cycle
- Day & Night Reactive Vegetation
- Global Illumination
- Dynamic Scanning Entity System
- Screen Shake
- Parallax Scrolling
- Dynamic Real-time Lighting
- Advanced Night Mode & Real-time Dynamic Lighting
- Real-time water & ice reflections plus lighting
- Interactive Physic Particles
- Real-time projection shadows
- Real-time advanced cloud shadows
- Dynamic Water Impacts for Interactive Particles & Hybrid Decals
- Interactive Physic Decal/Particle Hybrid
- Low Resource Interactive Physic Particles
- Multi Platform Ready
- Customizable Hud
- Dynamic Weather system
- Dynamic Weather Profiles
- Multiple FPS Targets Planed 30 - 120
- Dynamic Configurable Post FX Settings
- Multi-core engine scalable from 4 - 36+ logical CPU cores
- Responsive None Restarting Game Options
- Command Console
A newly added feature from last years development allows any 2D Sprite to be converted into a fully destructible object at a code level. The implementation of this real-time 2D destruction has no pre-baked broken sprite textures pre-made / baked before hand. All destruction is done in real-time as the designated game object(s) collide and does X damage per pixel's initialized life(each pixel actual has an internal health bar). The organic destruction system combined with my other engine technologies in 2DEvolved provides a very detailed plus complete real-time destruction solution. The look of the destruction etc is all flexible, extendable and configurable per artistic and gameplay requirements.
As you can see in the GDC 2018 tech demo video and this GIF the destruction chunks act similar to Voxel destruction in 3D engines. All the destruction bits are persistent on impact and can be further interacted by the player's movement and interaction, like wise the same for any other designated game objects.
The GIF below shows the Harvest Bot for the first time, the Bot is used for harvesting certain object and clearing paths in the game world. The player simply summons the Harvest Bot from a portal and then possesses it to take full control of it. Once in control the player can harvest game objects, clear paths or allow the Harvest Bot to automatically follow the player around the game world until it is needed.
This form of destruction has pre-configured destruction fragments that are set to pre-configured types of fragments and bits that describe the destruction and their specific fragment amounts using MAX ranges during the impact(the set ranges regulates the amount of spawned fragments per unique fragment during the destruction). This configuration provides a specific artistic flexibility on the look of the destruction effect. The programmatic code portion of the solution makes sure that the actually destruction / shattering of the object is always unique and never provides the same effect.
Here we see in the GIF below that the player's equipped Axe type weapon is being hurled in a arc and the projectile is shattered and destroyed on impact. We can also see the fragments from the destruction end up in a rest state on the ground. In this case the different chunks have been pre-made in a texture pool and on impact the bits are procedural generated as well have their MAX amount programmed per unique fragments and bits. So for instance if we only want two handle fragments in the destruction blast this can be set for that specific texture in the destruction pool. No Axe impact will ever generate the same destruction effect since it is always random with constraints / procedurally generated by some properties set for it's specific type of behavior bounds and appearance. The bits from the impact / destruction are fully interactive and can be moved and interacted with after they have stopped in a rest state when the player moves through them etc.
Here we can see demonstrated an Axe being hurled and it is shattered as it hits the ground.
The vegetation in Corpses 'N Souls is fully interactive and reacts to your movement as you walk, land on the ground from a drop or jump, harvesting vegetation by cutting it, firing a projectile near the vegetation and some other cases. The added detail provides a great feedback mechanic for the player and also provides an indication where the player is in the different layers of the game world as the player traverse the areas.
Not only does the vegetation react to different objects movement you can also destroy it with your weapon spinning ability and actually cut the vegetation. Vegetation has two different destruction categories: permanent or re-spawnable. If the vegetation is a type re-spawnable after a certain amount of time you can watch the vegetation slowly grow back to its original full size in a time lapse type effect. Different situations will dictate which type the vegetation is according to certain gameplay needs. When vegetation chunks are flung in the air when being cut they will also stay on the ground during impact for a set period of time. The vegetation pieces are fully interactive if the player or other objects interact with them. This feature provides cool gameplay opportunities, player feedback and makes the environment dynamic and feel alive.
Here you can see the player executing the weapon spin ability to cut the vegetation and also move the vegetation chunks when they land on the ground in a stop/rest state.
Here is an example how a projectile is flung at enemies causing a residual wind force that reacts to the vegetation behind the projectile path as it moves across the screen or till it impacts into an enemy.
Built into the 2DEvolved game engine is a System Spec and real-time computer resource monitor and check list. Each game will provide feedback to the user if their current hardware meets the current requirements of the game. With details plus stats in real-time of the current RAM, CPU core usage, required CPU cores, current GPU memory, etc will all allow for the best user experience and feedback. There is a lot planed with this feature to ensure that the user will have the best feedback and experience while playing Corpses 'N Souls and other titles that use the 2DEvolved game engine.
Here you can see in the options tab of Corpses 'N Souls the System Specs tab and the real-time monitoring at work. The green check marks tell the user, in this case my workstation that it meets all of the requirements for the current game settings.
Here you can see that the game knows 100% what hardware you are running, the Operating System, GPU driver version, graphics API, max resolution and anything else that the game needs to know to make sure you don't run into any issues. No third party app etc is installed to gather this information, everything is exposed from the native code built into the game engine and is 100% none intrusive.
Here you can see all the logical CPU cores listed for the current workstation as well as their current usage. This functionality is helpful for some advanced features in the game engine in order to set features accordingly in respect to current core counts etc.
Many gamers are familiar with an FPS(frames per second) counter/HUD display provided by third party game recording software or even built into a game by default. For this feature I have taken that concept one step further and allow the user to view the logical CPU core usage, RAM usage, total CPU usage and System RAM usage all while playing the game. The logical CPU cores update in real-time like Task manager in Windows when you select performance and then CPU(and make sure you have selected - change graph to logical processors).
The CPU logical core overlay HUD can be modified to your preference in terms of look and style. This feature has to be turned on in the games option menu, it is not on by default.
Here we can see a close up of the Task manager like HUD that displays real-time logical CPU core usage graphs. This HUD also works great as an aid for tweaking your game settings in regards to your personal hardware setup. I also personally use it for a performance check and aid during my development of the game and game engine.
More system monitor HUDs include: current FPS, games current RAM usage, games total current CPU usage and the computers current total systems CPU usage. Each one of these stats can be turned [on] or [off] and are controlled in the games options.
During last years development I was finally able to complete and optimize my interactive physics particle system. All the hard work equated to a massive increase in the particle and hybrid decal budgets, stability, decrease in memory usage, decrease in CPU core usage, etc. After last years work I am no longer constrained by using small amounts of the feature and plagued by the high CPU usage issues and artistic and gameplay constraints. The goal with this feature has always been that it should be enjoyed on all platforms regardless of the hardware specs. I am happy to say this goal has been achieved.
In the GIF below I have turned on the debugging boxes in order to give readers an idea of the amount of interactive physic particles and hybrid decals that are on screen at one time. Every particle is interacting with the player, game objects and environment. The turquoise boxes are the newly added hybrid interactive decal technology, the hybrid interactive decal tech is used for the collision rest states of the interactive physic particles and other cases. Also note that the GPU acceleration works on any GPU brand it is not brand gated like Nvidia PhysX to a specific brand.
Another large task from last year was to take all of the high volume draw areas in the game and convert them to GPU acceleration. While working on the update I came up with a solid hybrid solution by adding multi-core CPU parallelism to work together with GPU acceleration. By adapting this practice of combining both patterns and development technologies has proven to be the best solution in terms of performance, load distribution and flexibility.
Here you can see the particles dripping from the Axe and the interactive physics particles and hybrid decals that are spawned from the Axes impact. As you can see the player moves through the fragments and interacts with the particles and hybrid decals that are in a rest state.
Another cool optimization I worked on last year was the concept to evenly distribute the load of the hybrid decal system to a Load Balanced Node system. Specific hybrid decal groups that are GPU accelerated can be assigned to X amount of load balanced nodes for the hybrid decals that are created. This data can be processed efficiently in a distributed load across your current CPU logical cores for pre processing before they hit the GPU for the final processing and drawing. During my development I found that breaking up the work load on the CPU cores and not overwhelming the GPU and CPU pre-processing worked extremely well rather than brute forcing one massive batch per cycle.
In this GIF you can see the different colors of the debug boxes that represent the different load balanced nodes that each hybrid decal is placed in as it continues to alternate the node group pool.
A key component to the gameplay of Corpses 'N Souls is blood. Last year I worked on a robust blood system that would be visceral during combat and also very detailed and malleable during other gameplay that involves blood that has been spilled on the environment. Blood in Corpses 'N Souls does not just hit the ground and fade out. Each blood drop can have multiple states in it's life time and can also be interacted recursively during it's life span. Some of the possible states are: in the air initial spray, hit platform, rest state, starting to drip off parent, in falling sate from rest, impact and rebound off game object and many more. The blood system was always intended to look awesome since I am fellow mega fan of the Mortal Kombat series and since the blood ties into the unique gameplay in Corpses 'N Souls.
Here you can see the blood starting to drip of it's parent impact platform and then fall and rebound off the player and then start the cycle all over again on the next platform.
All of the blood systems are calculated at a blood drop level as a single unit on a case to case basis, nothing is pre-backed or faked. I don't us any shortcuts like some solutions that turn on a large decal chunk that look like a bunch of blood impacts after X time or after first impact that then exits the code check. All the blood drops are individually calculating through their life span and can also be re programmed or dynamically changed and used for other gameplay scenarios during their life. Basically the blood drops are alive like an enemy or the player and are not just cosmetic and are used during gameplay other than nice visuals.
Here I am throwing a freshly harvested Meat Chunk which can be chucked and then re picked up for certain gameplay mechanics. The Meat Chunk is also an excellent source of fresh blood. As the blood sprays the environment each blood drop is calculated separately as it falls to the ground.
During last years development I removed all bottle necks from my interactive liquid simulation. In the past I was only able to have one water run off feature per game screen and even then it still spiked certain CPU cores and consumed a decent amount of memory and was unstable if you did not move and stayed in the same screen/place for hours. After many hours of re engineering all bottle necks and issues have been resolved and I can now have as many water run off features as needed and they are also all interactive.
Here you can see that when it rains each platform will gain three water run offs per platform and are all interactive with thousands of interactive physic particles. This was a artistic goal I had for years and it is very satisfying to have it finally be a reality with no performance issues.
Here the player is using his weapon matter bending ability and is actually displacing the water particles in a half circle like arc from the spinning force. There are many gameplay opportunities planed with this system and effect, the feature has not been developed for just a nice visual effect.
Within the game engine you can toggle between normal mapping [ on ] or [ off ] in real-time with out any restarting of your game session. A lot of work has gone into the games graphical options and scalability for a wide array of hardware configurations.
Normal mapping provides a really nice detail boost to the sprites and the final render. Another nice effect it provides a really nice 3D like hybrid look and advanced lighting model to your sprites and scene. I have been a massive fan of the earlier version of the tech called Bump Mapping which I first saw in BloodRayne on the PC, it looked amazing! Also I remember modding Elder Scrolls IV: Oblivion with a Ultra Normal Mapping mod and it looked so good, this is why it had to be included in my engine and game.
Each platform has been given an extra layer of detail in the form of procedural detail. By using GPU acceleration and a mask of the features seed zone an object can get specific detail added to it programmatically for extra detail. In the GIF below an extra layer of vegetation has been layered in front of the platform. Not only does it add a nice visual detail and depth each individual plant can be interacted with when the player or other game object brushes against it or by movement. This system is very flexible and allows for some nice artistic options and also a fast turn around in it's construction.
Procedurally Generated Detail: * leaf plants in the front of the platforms *
Procedurally Generated Detail:
During your adventuring you will be exposed to a robust Day and Night cycle system. Each cycle will provide a dynamic look/feel in the form of global lighting, particles, effects, sprites and even the environment it self. The different cycles can also trigger special events and enemies only during those certain times in the cycle.
Cycle: [ Day - Sun out - Clear Sky ]
Cycle: [ Night - Moon out - Cloudy - Medium ]
Cycle: [ Night - Moon out - Dark - Late Night ]
During the Day and Night cycles the vegetation and environment it self can change for those specific times of day. Some plants and inhabitants thrive better in the day time or the night time. The Procedurally Generated Detail is also tied to the Day and Night cycle and will dynamically change depending on the cycle in real-time. So for instance flower blooms only come out in the sun and day time cycles. During the late night cycle glow in the dark mushrooms emerge from the ground. These are just some of the examples and it can be extended to what ever is needed.
Cycle: Day - Sun: blooms emerge from the plants that belong to the Procedurally Generated Detail system
Cycle: Night- Moon: blooms retract from the plants that belong to the Procedurally Generated Detail system
Cycle: Late Night - Moon: mushrooms emerge from the ground and on the platforms that belong to the Procedurally Generated Detail system
A fully dynamic Global Illumination system controls the look and feel of the environment and scenes. Each day and night cycle can have many variation of the global lighting which can be changed in real time for certain events, effects or weather cycles. This feature is a very useful artistic tool to help provide the appropriate overall lighting feel and look for a specific level or area.
Setting: Strong Blue base
Setting: Strong Blue base with Purple
Setting: Strong Orange base with a hint of Red
Setting: Orange base with an over powering Pink Purple tone
A new addition to Corpses 'N Souls is the Harvest Bot. The Harvest Bot can be summoned at any time by the player from a portal. Once summoned the Harvest Bot can be fully controlled after possessing it and then can be used to scan objects in the game world. When scanning objects they can fall into two categories: unknown or already identified. If you find an unknown item you just scan the object with you laser scanners and wait for the scan to complete which is very similar to identifying a Legendary item in Diablo 3. Once the item is identified you can see it's name, rarity, level, description and if it is harvest-able.
If the object is harvest-able you can then use the Harvest Bot's equipped mining blade or other attachments to extract valuable material from the object for crafting and other uses. The real-time 2D destruction is tied directly to the Harvest Bot which performs the majority of mining for you.
Here you can see the lasers which reacts in real-time to the structures dimensions before and after destruction and as it scans the surface area of the targeted object. Once identified the object can be harvested if it is found to be of a type: harvest-able.
Here you can see the Soul Crystal has already been started to be harvested. As the structure changes it's shape from the real-time destruction so does the scanning overlay "rarity grade high light" according to the real-time damage done. Again nothing is pre-backed since we don't know the outcome of the shape from the real-time destruction so everything has to be done in real-time.
Added to the game and engine is a nice Screen Shake effect. The screen shake effect will be configurable in terms of strength and can also be turned off.
When attacking with a projectile a subtle screen shake effect will be triggered to give the player a further feedback. Special moves, leveling up and other key actions will all trigger the screen shake effect.
Here you can see demonstrated the scrolling of the background layers. Each of these layers all have horizontal Parallax scrolling effects applied to it. The Parallax scrolling provides a nice effect of depth and detail to the games environment. This effect has been a long time fav of mine since way back in the Arcade era when I first saw it. I will not be using this effect sparingly :)
Below we can see demonstrated the real-time dynamic lighting effects. Combined with the games normal mapping the dynamic lighting comes alive and further expands the detail and immersion of the game world. Projectiles, the player, enemies, game objects, etc all have lights attached to them that makes the world come alive as you traverse the game world.
Here you can see a yellow light hue cast from the Axe projectile. The light is nicely being dynamically cast onto the sprites around it which further amplifies the depth and detail. The dynamic light from the projectiles also provides a nice player feedback and is also meant to be visually impressive.
Each projectile has a different light property, here we can see the equipped shield's projectile attack which uses a light blue / turquoise hue.
Here we can see the sword attack which produces a nice reddish purple hue. During the snow cycle the dynamic lighting looks especially nice in contrast against the snow.
During my development of Corpses 'N Souls I have always wanted a real night time effect and darkness that would also high light the dynamic lighting systems. By combining the global illumination and the dynamic lighting systems the final effect has created the ultimate real-like night time effect that I was aiming for. No mask or other baked tricks are necessary, true darkness can be achieved and as well the environment and objects can be lit with the dynamic lighting system.
Here you can see the soul glob being activated that is one of your main sources of light during the Night Darkness cycle. With other light sources scattered around the environment the Night time cycles looks especially lavish.
When fighting enemies you can collect their souls after death which then can be used to fuel your Soul Globe which acts as a typical torch so you can better see your soundings while you venture at night in the darkness.
During the Snow Weather cycle and Night Darkness cycle the dynamic lighting is especially impressive and pops on screen.
A Soul Globe gently floats in the air while producing dynamic lighting around the player in a certain radius. The player will be able to upgrade his Soul Glob for different effects and uses.