Our Pitch N' Play is coming up this Thursday, November 21st. I am really excited, and cannot wait to show STARSTRUCK to industry professionals and the world! Please visit starstruckgame.ca for more details on this project.
2 Comments
Beta is almost done! I have been bestowed with another technical piece of wisdom about Unity3D. The revelation came while trying to fix a bug and realizing that the best prevention to the problem would exploit the cause of a bug I described in a previous post.
The current problem had to do with the scaling of enemy characters being skewed because they were children of a scalable object. Essentially, the best prevention for this bug is to NEVER put enemy characters as children of anything with the exception of empty game objects that act as containers. I wanted to avoid using GameObject.Find() for triggering enemies with my trigger volumes so I had been relying on this.FindComponentsInChildren, but after a few scene saves the characters began to warp according to their rotation. The previous bug led to the discovery that even empty objects with children can participate in collisions if their children have components capable of collision. So the best way to prevent my current problem is to make an empty game object the parent for both the enemies and the trigger volume. The collision for the trigger volume would be applied to the parenting empty game object, but the enemies would be at no risk of being magically rescaled while I am not looking at them. In summary, I have made one step towards a best practice for anyone that uses a similar workflow to create trigger volumes in Unity3D. First create an empty game object for each trigger volume at the origin and name these containers for the specific encounters. Place any custom trigger scripts on these containers. Then create cubes or other shapes for your trigger volumes and make them children of the appropriately named container. Enemies can be placed in the scene in an idling state and be changed to their attacking state using the script on the container when the encounter is triggered. This is easy and cheaply accomplished by calling this.FindComponentsInChildren() and using a for loop to iterate through the array that is returned to activate each one in sequence. Space Marine is easy to pick up and play, leading to an engaging gameplay experience that gradually increases to an insanely high level of difficulty. I played on medium difficulty without much previous experience of action titles that combined tactics and timing challenges.The combat system is taught in manageable chunks and forces the player to progress past the basic mechanics in the early levels, allowing them to focus on each new element of combat one at a time. The level design creates a wide variety of encounter types while reusing the same combat elements. Sometimes the payoff is delayed further than most action games would dare - fore example, you get grenades and then immediately want to destroy the Ork drop ship, but they are invincible until you fight one in an extremely rewarding encounter more than 30 minutes later (one of my two favourite parts of the game is killing the first drop ship). Ultimately, this payoff is more rewarding because the player feels the limits of their character's abilities reduce dramatically throughout their progression through the game.
There are some issues with the game. The bomb squig enemy type suicide rushes the player, giving minimal warning with its roar and taking almost all of their life in an instant. The intensity of Part I is not matched in Part II and as a result it feels long and tedious. Critical mission objectives are accomplished by clicking one button, with no gameplay barriers; encounters can be avoided by simply running through and reaching the next save point in many circumstances. The choice of when to heal has diminished gravity because you can only do so by killing enemies and are vulnerable throughout the process. Furthermore, other choices, such as swapping weapons, are set up in a way that limits the player to choosing between two options and these choices cannot be revisited later to optimize your arsenal for new situations that arise. These faults detract from the experience, but overall I still found the game enjoyable and saw some great design features in it. This post focuses on what I found impressive about the design for Space Marine. The development of the combat system is what you would expect from developers who focus on systems heavy games, There is nothing confusing about the way the melee elements are presented, and the gameplay is solid even while you learn the basics. Attacks can be chained together with stuns, and executions can be completed on stunned opponents to regain health as you destroy they enemy. Despite this different approach to melee combat, the system is taught well. The first challenge involves using one button to kill orks, and subsequent challenges introduce one more button each. The third person shooting mechanics have a similar incremental increase in difficulty for each weapon that the player learns. Level design focuses first on what kind of encounter the player is expected to seek during each conflict. A capture the hill scenario is favoured when the player must singlehanded eliminate a horde of orks with a large hammer and a jetpack. Two parapets facing each other create a find cover and shoot experience (which is the other of my favourite parts). In addition, height variances and imbalances in tactical advantage are skewed in almost every conceivable way throughout the game. In particular, the run and gun sections with orcs coming from high, low, near, and far were extremely well planned to ensure swapping weapons on the fly is an important part of the tactics for these sections. Delaying the payoff is a risky choice in a genre that promises quick thrills and tons of stimulating feedback. One of Space Marine's mission design strengths is its use of foreshadowing, which is great because the player sees everything they will fight at least once before they fight it. Gamers often have simple desires (as well as complex ones not discussed here) and expect these desires to be met. Space Marine is not shy about telling the player they are not ready to do something yet. This only made me want it more. I want to kill drop ships. I want to use jetpacks again, [BEGIN SPOILER ALERT!] I want to do anything involving a Titan. [END SPOILER ALERT!] I felt much more gratified for having to earn these experiences instead of getting them immediately, but perhaps not everyone feels the same. For me, this is the kind of stimulation that keeps me up until 3am and there are plenty of titles targeted at people who do not feel this way. Overall, I had a great time playing Space Marine. At the end stages of the game, it punished me over and over again. Part IV is insanely difficult even for someone who beat the previous parts of the game in the same day. But I will beat it, when I learn the skills I need to earn the victory that I want. That is all one can ask from a challenging action game. Pietro just discovered a very unusual fact about Unity3D relating to colliders. This has too many consequences to cover fully here, so I will leave it to you to consider them.
Any collider that is attached to a child of a parent object is inextricably part of the collider for the parent object. This means you can have a collision with an empty object that children with colliders. It also can lead to erroneous assumptions about how damage is applied by melee weapons - which is what happened in our case. |
James Dodge
Level Designer Categories
All
Archives
October 2021
|