From Chinese New Year Holiday Idea to a Playable Fighter: The Making of CreateCombat



1. A Bit About Myself: How This Game Started

Hello everyone, I am the author of this game.
This article is meant to document the journey of creating CreateCombat in a more comprehensive way, and to share my genuine feelings during the development process.

The starting point of this project was actually quite everyday.
During the Lunar New Year in 2026, while I was playing with my family and kids, the thought suddenly popped into my head: "I want to make a fighting game."

I have always loved fighting games, so my first thought was:
Rather than making another game where you can only select fixed characters, why not make a fighting game where players can create their own characters?

Because in many fighting games on the market, the characters are often fixed, or require purchasing additional DLC.
If you really want to collect all the content, the cost and barrier to entry for players are not low.
I wanted to go in a freer and more accessible direction.

With this idea in mind, I first organized the prototype of the gameplay in my head into text, and then handed it over to the Gemini web version to help me draft a requirements design document.
What I input at the time was very direct: the goal is a simple pure front-end web fighting game, two characters, playable against AI and local multiplayer, grouped keyboard controls, no networking for now, and details to be added later.

Next, I started choosing the technology stack.
Although I am most familiar with the .NET ecosystem (like ASP.NET, WPF, Blazor), I clearly knew that what I wanted to make this time was a "pure front-end, playable simply by opening a URL" gaming experience, and those frameworks were not the most fitting choices.
On the other hand, although Unity and Unreal are very powerful, the development cost is relatively high for this kind of small 2D fighting project.

Therefore, I finally chose native Canvas.
The reason is very simple: I wanted to make a minimalist indie game, and I also wanted to use this opportunity to deeply practice my core JavaScript skills.
Among options like Phaser.js, Pixi.js, and Vanilla Canvas, I decided to go directly with the Canvas API.

After deciding the technical direction, it was time for the development tools.
At that time, I had Google's Antigravity (the official modified version of VS Code), which built-in a lot of AI assistance features; at the same time, I also subscribed to GitHub Copilot to make the entire development workflow smoother.
I was already quite familiar with Copilot, and this time I could also string together my experience using these tools.

The actual development pace was very noticeable.
Under the Vibe Coding approach, the project quickly reached a playable state. In the early stages, a large amount of time was actually spent tweaking the requirements document and prompt expressions, rather than manually coding the details.
In other words, the actual implementation speed was much faster than I originally expected.

But after finishing the first version, I actually felt a bit empty for a while.
Because if it's just about the graphics or existing popularity, there are already many mature classic fighting games on the market.
Even though I added the "allowing players to import their own character assets" feature, I still felt it could go a step further.

Later, while watching the kids interact at home, I started to redefine the value of this project:
If it's not just a fighting game, but can let adults and children play together, learn together, and cooperate together, wouldn't it be more meaningful?

So I brought a "quiz mechanism" into the combat flow.
The design concept is: encourage answering questions, there is a cost for answering incorrectly, and an even higher cost for not answering, making players willing to participate in the quiz interaction, rather than just relying on button mashing.
This direction also turned the game from simple combat into an experience with more interactive layers.

Then I observed another thing:
Traditional fighting games usually must have a winner and a loser. For adults, it's competitive, but for children, it can sometimes be the start of a dispute.
So I added a "two-player co-op to fight the Boss and rescue hostages" mode, giving players a common goal instead of just defeating each other.

In this mode, I deliberately made the Boss feel pressuring.
If players only rely on general offense and defense, it's hard to pass easily. They must make good use of the integrated effect of the quiz and combat system to break through.
Because of this, answering questions is no longer like an accessory feature, but one of the core strategies.

Finally, I also kept the question bank flexible, allowing players to use the built-in question bank or customize their own to adjust the difficulty according to their family situation.
Adults can bring difficult questions, while kids can use relatively friendly ones, so both sides can feel involved.
This is a point I care a lot about: making the same game accommodate different age groups while still being fun.



2. What is CreateCombat: A Customizable, Competitive, and Cooperative 2D Fighting Game

Returning to the product itself, CreateCombat is a 2D fighting game made with TypeScript + HTML5 Canvas.
Its core is not pursuing complex 3D scale, but integrating "character customization, combat rhythm, quiz interaction, and multiplayer modes" into the same easy-to-learn portal.


1. Main Features

  • Customizable Characters: You can upload a sprite sheet to create a character and adjust HP, damage, speed, size, and ranged attack parameters.
  • Complete Modes: Supports local PvP, CPU combat, PvE (single-player and two-player co-op), tournaments, and online battles.
  • Quiz System Integrated with Combat: Built-in question bank and reward/punishment logic, so that "learning" is not disconnected from the game's rhythm.
  • Cross-Platform Experience: Play directly in the browser, or package as a WindowsEXE.
  • Multiplayer Connectivity: Supports LAN and Internet battles via BattleServer (SignalR).

2. Gameplay Overview

The basic controls of CreateCombat are very intuitive: move, jump, crouch, light/heavy attacks, and ranged attacks.
During a match, players must not only judge distance and attack/defense timing, but also switch strategies according to the mode.

For PvP or CPU combat, the focus is on round control, advance/retreat rhythm, and character distribution.
For PvE, especially the two-player co-op mode, the focus shifts to division of labor and coordination: who draws the Boss's attention, who handles the quiz window, and when to push the attack rhythm.
And in scenarios involving questions, the answers themselves also affect health and the direction of the battle.


3. Technical Highlights (In terms players can understand)

Even though this is a front-end project, there are still many underlying design points worth mentioning:

  • Fixed 60 FPS Update Loop: Keeps the combat rhythm stable and consistent.
  • Character State Machine: Character behaviors have clear state transitions, making attack and defense judgments more controllable.
  • AABB Collision and Projectile System: Handles melee judgments, ranged flights, mutual cancellations, and other interactions.
  • Lockstep Synchronization (Online Battles): Uses input synchronization and checksum verification to reduce state drift between the two sides.
  • Asset and Data Flexibility: Characters, backgrounds, and question banks can all be expanded via import and export.

These designs are not just "achievable" in engineering terms, but are meant to keep the feeling of the game in a state that is continuously adjustable and expandable.


4. How to Experience

If you want to quickly try it out, the most direct way is to enter the game through your browser, starting with the default characters.
Once you are familiar with the feel, further trying out custom characters, tweaking stats, or switching question banks will allow you to better experience the core fun of this project.
When playing with partners, the two-player mode and co-op mode will be the best entry points to reflect the original design intentions.

Currently, I also position it as a "continuously growing" project:
First, let players easily start playing with the lowest barrier, and then gradually add more advanced content.
For example, more complete character balancing, more co-op levels, and an easier-to-share question bank mechanism.
This way, whether you want to casually play a few rounds or invest long-term in tweaking the gameplay, everyone can find their own fun.


Conclusion

For me, CreateCombat is not just about "making a game," but a development journey that integrates ideas, family scenarios, technical experiments, and AI collaboration.
If you are interested in fighting games, customizable characters, or this kind of mixed "play and learn" gameplay, you are welcome to try it out and give me feedback.
A single piece of advice from you might be the starting point for the next version's evolution.

--




👉 Try it Now