Check out this great video
In 2020, when I just switched to the Computer Game Science major, I take my first game development course and worked with my classmates to develop a visual novel game called "Shanghai1920". As the main artist and plot designer, I spent a lot of time and effort on the game. With the idea of wanting more people to see the story I wrote, I uploaded "Shanghai1920" to Steam. Shortly after, I received some reviews, mostly positive, but there were also some negative ones. Some people commented that they wanted to see a sequel. Even if it was just one or two people, it was a great encouragement to me. So, I decided to make a sequel, which is called "Shanghai1920-XZ". XZ stands for the initials of the main character Liu Xingzhe, which means that the game is from his perspective. Not only Liu Xingzhe, but I also designed independent stories for all the important characters in the game. If there is a chance, I hope to make games with other characters as the main protagonist, so that players can experience this fantastic Republic of China fantasy tale from different perspectives
Unlike traditional 2.5D games like Dungeon Fighter Online or Icy, where the Z-axis is calculated in a 2D game, we use 2D art placed directly in a 3D scene. This approach has the advantage of simplifying our calculations, as we can directly position our GameObjects in 3D space with three-dimensional coordinates (x, y, z). This greatly reduces our development difficulties, especially in implementing collision detection or combat interactions.
In addition, we can even use 3D lighting and shadows to render these 2D artworks, giving players a novel gaming experience. However, this approach also brings many challenges, such as the fact that many 2D art pieces have a perspective effect (such as when a character is standing still, the front and back feet are not on the same horizontal line), which often causes problems with rendering shadows, making characters look like they are floating on the ground.
Moreover, since we don't have meshes, we can only use cube or capsule-shaped colliders as collision bodies for characters or scene objects, which makes the placement of scene objects a constant process of testing. But overall, I believe that this is a novel attempt, and the benefits outweigh the drawbacks. Stay tuned for the final product!
The narrative style of the game is similar to Resident Evil. The game will always give players a clear objective through CG or mission guidance, telling players what to do next. However, players can also choose to stay in a certain place longer, solve puzzles, and explore more scenes to collect more items. There are also many hidden elements and side storylines designed in the game, which players can explore on their own to unlock rare storylines and items. Additionally, player choices made during the game (occasional dialogue options) and whether they collect certain items or clues will affect the game's ending.
As a story-driven game, the dialogue system is essential. During the planning phase, I discussed with another game developer the possible scenarios where dialogue could occur to ensure that it could be triggered in various situations, whether in-game or in cutscenes. In addition, effective management of these dialogues is also crucial, and we adopted a method of reading Excel CSV to store the dialogue in Excel and set five different headings: Image ID corresponding to the character's portrait in the conversation, Background ID corresponding to the dialogue box style, SE corresponding to the sound effect triggered by each sentence, CN corresponding to the Chinese version of the dialogue, and EN corresponding to the English version of the dialogue. Yes, we can assign different sound effects to each sentence of dialogue, which allows us to play sound effects without splitting the dialogue and improves development efficiency. Additionally, we have an option system. Some conversations trigger option boxes, and this feature is also encapsulated in the code. Programmers can set whether an option exists and define each option and the result of the selection when calling the dialogue. This feature is also essential as a game with multiple endings.
As a game based on Chinese mythology, we naturally incorporate some traditional and fantastical elements into the game, and the Buddha statue is a good example of this. Similar to the bonfires in Dark Souls, players can rest at Buddha statues to fully restore their health and spirit points, but defeated monsters will also be revived. Players can also allocate upgrade points at Buddha statues (see the player attribute system for details), save the game, replay battles (currently under development), and offer incense.
Yes, similar to Resident Evil, we only allow players to save at Buddha statues. Although our save system has an automatic temporary backup function, we do not allow players to save anytime, anywhere for the sake of the game's hardcore nature and plot arrangements (players are not allowed to load temporary saves after death).
The battle replay is a very interesting feature. When players defeat a boss, the boss will be added to the battle replay list, which is divided into five levels with corresponding rewards that can only be claimed once. Players can challenge these bosses again at Buddha statues to improve their skills and increase the chance of obtaining boss equipment drops. The inspiration for this design actually comes from Dark Souls. In Dark Souls, what I enjoyed the most was not clearing stages but the sense of achievement after defeating a boss. After playing through the game multiple times, I even chose to skip the monsters and go straight to the boss area to fight them. Therefore, when designing this game, I created an option for players to repeat boss battles, allowing players to freely mix and match different equipment and skills to enjoy battles with bosses.
Offering incense is a Chinese tradition with a long history. People offer incense to establish a connection with the deceased or deities and seek their blessings. In the game, as the plot progresses, players can choose to establish a connection with different objects to obtain different blessings. Offering incense requires a key item, incense. Incense comes in normal and advanced versions. Normal incense has a certain chance (10%) to trigger "thought transmission," while advanced incense always triggers it. When thought transmission is triggered, players can briefly converse with the object they offered incense to, and obtain higher blessings. For example, normal incense only grants 1 skill point, while thought transmission grants 3 skill points. Players can choose to offer incense to a sword master to obtain sword skill points, or to deceased police colleagues to learn their firearm skills, etc. Incorporating this fantastical tradition into the game design undoubtedly adds more charm to the game. (In addition, after players offer incense, the chosen incense will appear in the incense burner, which is also a detail design.)
As an action RPG game, we must control the difficulty of combat by setting the player's attributes. Players can gain experience points by defeating enemies. When the experience points are full, the player will level up and receive one attribute point that can be allocated at a Buddha statue. There are six ability values for players:
Players have five attributes, and improving these attributes can improve different ability values:
Each player attribute defaults to 0, with a maximum value of 30. It is essential to set a reasonable growth curve to ensure the best player experience. Inspired by Dark Souls, we hope that players can gain more attribute benefits at lower levels and gradually reduce the benefits of leveling up a single attribute as the level increases. My approach is to design the player's attributes at level 0 and full level, find several key nodes, set the attributes, and then find a suitable upgrade curve. For example, for health, the player's basic health is 100, and I want the player's health to be 500 at full level. Therefore, the health gained by upgrading stamina is 400. At level 10, I want the player to gain about 230 health, 340 at level 20, and 400 at level 30. After setting these nodes, we can calculate a formula based on the player's attributes:
MAX HP = Initial HP + (int)(-0.49f * Vitality^2 + 28.56 * Vitality - 21.67)
where Initial HP is the basic health, which is 100. We will design monster spawning and level based on the player's attributes. For example, we hope that players can have a relatively easy combat experience in which areas at what level, etc. These will be detailed in the level design.
The skill system is a very interesting design in games. In the game, players have two attack modes, guns and swords, and I designed three basic skills for each attack mode. Each basic skill can be expanded into three different branches, each branch having two skills. Players need to learn the previous skill before they can continue to learn the next one. Learning higher-level skills requires more skill points. The inspiration for this system comes from the TP skills in Dungeon and Fighter. Skill branches not only improve the damage of the skill, but completely transform the form of the skill or add additional special effects. For example, sword skill 2, "Draw Sword": after charging, perform a high-damage slash attack forward that can knock back enemies. Its three branches respectively allow the player to launch sword energy, teleport behind enemies, and stun enemies. By combining different skills, players can have completely different combat experiences. For example, players who like to consume enemies from a distance can learn various consumption-type skills, while players who like stylish melee combos can choose to match various abnormal status and displacement skills. For different skills, we also need to design their damage multiplier, cooldown time, and skill point cost to ensure that there are no overly powerful skills. This allows the combination of skills to be more strategic rather than blindly learning the strongest skills, allowing players to enjoy the fun of thinking about how to combine skills and gain a sense of achievement.
As a combat exploration game, I want to add some hardcore elements to the game, so I thought of the Defend and Evade system in Dark Souls. In the game, players can also roll and defend, which will consume Energy. Unlike Dark Souls, the Energy in this game is not a trainable attribute, but a fixed value of 100, as the character's attacks and running do not consume Energy. Energy will recover over time, and when players deplete/overdraft Energy, the character will enter an exhausted state and will not recover Energy for two seconds. Each roll will consume 50 Energy, which means that players can roll three times in a row (because Energy will automatically recover during the rolling process), which will lead to Energy overdraft and enter a period of exhaustion. Assuming the player has enough Energy. When players are in a Defending state and receive an attack, Energy will be reduced based on the ratio of the received damage to the maximum health, and the received damage will be reduced to 10%. If Energy is not enough to withstand the damage, the player will enter a broken shield and exhausted state, and the damage will be increased by 1.2 times. What's even cooler and more hardcore is that we have designed a perfect Defend/Evade system. When players roll or defend at the moment they are hit (within 0.1 seconds), a perfect roll/Defend will be triggered, and all Energy will be restored. In the Defend state, players will not take damage and the time will slow down for 1 second. If the player presses the attack button immediately, a perfect counterattack will be triggered, dealing high damage and stunning the enemy. This undoubtedly adds more operational space for hardcore players, and in dealing with Boss-level battles, this will be a very important and useful skill.
In the game, players can collect various types of items in the scene, which will be stored in their backpack. Items are divided into: props - used to restore health or mana, remove abnormal status, and help in combat; crystals - can be equipped on weapons or worn as accessories, adding attributes to players; materials - some quest items; and important items - some quest items or precious items, such as joss stick for offering. These items are also divided into different grades: common, good, rare, epic, and legendary. Items of different grades will have different item frames to make it easier for players to identify them. At the same time, the first time an item is added to the backpack, it will have a "new" tag, so that players can know which items are picked up for the first time. In addition, players can place consumables in the consumable shortcut bar at the lower left corner and use them quickly in combat.
In the game, the equipment is a type of thing called "crystal". Crystals can be worn as accessories or embedded in guns/swords. Players have two accessory equipment slots and one crystal inlay slot for each gun and sword. Inlay-type crystals generally only work for the corresponding weapon, for example, they have a chance to trigger xxx when using a sword attack.
In addition to rarity, crystals also have a grade and level system. The grade system affects the crystal's special effect properties, such as increasing the probability of triggering special effects. There are five grades of crystals: D/C/B/A/S, and players can improve the equipment's grade through fusion:
D+:
D: 70%
other: 100%
C+:
D: 30%
C: 60%
B: 80%
other: 100%
B+:
D: 10%
C: 20%
B: 50%
A: 70%
S: 100%
A+:
D: 5%
C: 10%
B: 30%
A: 50%
S: 70%
When the synthesis fails, the equipment's grade will be lowered by one.
The level system affects the basic attributes of the equipment, such as adding the player's physical attack power. Increasing the level can increase the added value. There are 10 levels of crystals from 1 to 10, and players can improve the level of other crystals by synthesizing unwanted crystals.
There are a total of 14 attributes for enemies, some of which are tied to the enemy's level:
We used a visual behavior tree editing plugin in Unity to design the AI for the enemies. Although different enemies may have different criteria for selecting their attack methods, their logic for decision-making is similar.
For regular enemies, they patrol along a pre-set route if the player is not detected. When the player appears within their field of view, they will roar and enter a state of detecting the player. The roar will attract nearby enemies and turn them into a state of detecting the player as well.
Once the enemy detects the player, they will prioritize attacking. After each attack, based on their aggressiveness index, they will decide whether to idle or continue attacking. The higher the aggressiveness index, the more likely they will choose to attack. When idle, the enemy will randomly move facing the player for a duration of 1 second (which can be adjusted). To prevent the enemy from being idle for too long, we set a variable: maximum idle times. When the enemy reaches the maximum number of consecutive idle times, they will definitely choose to attack next time.
Regular enemies usually have at least three attack methods: close-range attack, long-range attack, and skill. When the enemy chooses to attack, they will first determine whether to use their skill. Whether they use their skill is also related to their aggressiveness index, the higher the index, the more likely they will use their skill. Meanwhile, powerful skills have a built-in cooldown time, and if the skill is in cooldown, they will not use it. If the enemy chooses not to use their skill, they will determine whether to use a close-range attack or a long-range attack based on the distance to the player. They will then pursue the player until they are within attacking range and then launch their attack.
The monsters in the game are not placed directly in the scene, but are generated individually by various spawning points in the scene. At these spawning points, we can set the level of the summoned monsters, the types of monsters that can be summoned, and the probability of each type of monster being summoned. This means that the spawning points will randomly generate monsters based on these settings, which undoubtedly adds more randomness and replayability to the game. When the player rests at a statue, these spawning points will destroy the generated monsters and generate a new monster the next time the player enters the scene.
We can set up the possible items that each monster may drop, as well as the probability of each item dropping. When a monster is defeated, the game will randomly generate drops based on the preset values.
The story of Chapter 0 takes place in a hospital. The protagonist wakes up in the hospital and realizes that the world outside is overrun by monsters. The player's objective is to explore the hospital, become familiar with the game's mechanics, and try to leave the hospital. The main purpose of Chapter 0 is to introduce the player to the game's mechanics and world view, and as such, a series of mandatory tutorial segments have been set up (1, 2, 3, 5).
Based on the player's route, the monster levels will be adjusted. Normal players will reach level 10 and learn two starting skills with 2 skill points to spend when they reach the boss battle, with medium difficulty. If the player chooses to skip most of the battles and just pick up the key, the boss battle's difficulty will be greatly increased. If the player chooses to do the side quest in section 4, the player's level will be around 13 and they will receive additional skill points and equipment, significantly lowering the boss's difficulty.
There's much to see here. So, take your time, look around, and learn all there is to know about us. We hope you enjoy our site and take a moment to drop us a line.
Copyright © 2024 Jiacheng Sun - All Rights Reserved.
We use cookies to analyze website traffic and optimize your website experience. By accepting our use of cookies, your data will be aggregated with all other user data.