https://github.com/soonfx-engine/core
๐ฎ TypeScript game numeric engine for RPG & strategy games. Zero dependencies, type-safe formula parsing, battle system simulation, and expression evaluation. ๅบไบ TypeScript ็ๆธธๆๆฐๅผๅผๆ๏ผไธไธบ RPG ๅ็ญ็ฅๆธธๆ่ฎพ่ฎกใ้ถไพ่ตใ็ฑปๅๅฎๅ
จ็ๅ
ฌๅผ่งฃๆใๆๆ็ณป็ปๆจกๆๅ่กจ่พพๅผ่ฎก็ฎใ
https://github.com/soonfx-engine/core
battle-system card-game character-attributes damage-calculation expression-parser formula-engine game-development game-engine game-formula game-logic game-math javascript numeric-calculation rpg simulation strategy-game turn-based typescript visual-programming zero-dependencies
Last synced: 6 days ago
JSON representation
๐ฎ TypeScript game numeric engine for RPG & strategy games. Zero dependencies, type-safe formula parsing, battle system simulation, and expression evaluation. ๅบไบ TypeScript ็ๆธธๆๆฐๅผๅผๆ๏ผไธไธบ RPG ๅ็ญ็ฅๆธธๆ่ฎพ่ฎกใ้ถไพ่ตใ็ฑปๅๅฎๅ จ็ๅ ฌๅผ่งฃๆใๆๆ็ณป็ปๆจกๆๅ่กจ่พพๅผ่ฎก็ฎใ
- Host: GitHub
- URL: https://github.com/soonfx-engine/core
- Owner: soonfx-engine
- License: apache-2.0
- Created: 2025-11-07T08:54:27.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2025-12-30T02:15:53.000Z (19 days ago)
- Last Synced: 2026-01-01T04:43:31.644Z (17 days ago)
- Topics: battle-system, card-game, character-attributes, damage-calculation, expression-parser, formula-engine, game-development, game-engine, game-formula, game-logic, game-math, javascript, numeric-calculation, rpg, simulation, strategy-game, turn-based, typescript, visual-programming, zero-dependencies
- Language: TypeScript
- Homepage: https://soonfx.dev
- Size: 7.9 MB
- Stars: 741
- Watchers: 49
- Forks: 106
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
- Roadmap: ROADMAP.md
Awesome Lists containing this project
README
# SoonFx Runtime
> **The TypeScript-first numeric engine for games.**
> Decouple logic from code, manage complex formulas with ease, and build robust RPG/SLG/Card systems.
[](https://www.npmjs.com/package/@soonfx/engine)
[](https://www.npmjs.com/package/@soonfx/engine)
[](https://github.com/soonfx-engine/core/actions/workflows/ci.yml)
[](https://opensource.org/licenses/Apache-2.0)
[](https://www.typescriptlang.org/)
[Installation](#-installation) ยท [Quick Start](#-quick-start) ยท [Documentation](#-core-api) ยท [Examples](examples) ยท [Roadmap](ROADMAP.md) ยท [Online Demo](https://soonfx.dev)
[English](README.md) | [็ฎไฝไธญๆ](README.zh-CN.md)
---
## โ What is SoonFx?

SoonFx is a **TypeScript-first numeric engine** designed specifically for games. It addresses the common challenge of managing complex game logic, formulas, and numeric relationships that often become hardcoded "spaghetti code."
### ๐ซ The Problem
In many game projects, damage calculations, resource production rates, and other numeric logic are hardcoded directly into the source code.
* **Hard to maintain**: Formulas are buried in nested if-else statements.
* **Slow iteration**: Designers need engineers to change a simple constant or formula structure.
* **Bug prone**: Copy-pasting logic leads to subtle errors.
### โ
The Solution
SoonFx decouples **logic** from **code**.
1. **Logic as Data**: Formulas and relationships are defined as data (JSON).
2. **Runtime Execution**: The engine parses and executes this data safely at runtime.
3. **Visual Tooling**: Designers use the [SoonFx Editor](https://github.com/soonfx-engine/editor) to visually build these relationships.
---
## ๐จ Visual Editor Driven
Stop hardcoding formulas. Build them visually.
**SoonFx Runtime** is the engine that powers the **[SoonFx Editor](https://github.com/soonfx-engine/editor)**. It allows game designers to configure complex logic without writing a single line of code, while developers can safely execute it at runtime.
### The Workflow
1. **Design**: Designers create formulas, skill effects, and attribute relationships in the **Visual Editor**.
2. **Export**: The editor generates a JSON configuration file.
3. **Run**: The **SoonFx Runtime** loads this JSON and executes the logic in your game.
> **Note**: While SoonFx Runtime can be used standalone for math and expressions, its true power is unlocked when paired with the Editor.

## ๐ก Use Cases
SoonFx is designed for numeric-heavy game genres:
* โ๏ธ **RPG Systems**: Skill damage, character stats growth, equipment bonuses, combat power (CP) calculations.
* ๐ฐ **SLG / Strategy**: Resource production rates, building upgrade timers, marching times, tech tree requirements.
* ๐ **Card Games**: Dynamic card values, synergy effects, deck balancing simulation.
* ๐ **Simulation**: Complex economy models, probability calculations.
---
## ๐ธ Demo
### [Runtime Demo](https://soonfx.dev/)


## โจ Features
- โก **Zero Dependencies** - Lightweight and fast, less than 50KB minified
- ๐ก๏ธ **Type-Safe** - Full TypeScript support with strict typing and intelligent code completion
- ๐ **Expression Engine** - Parse and evaluate complex mathematical expressions with RPN conversion
- ๐ฎ **Battle System** - Built-in RPG battle simulation with character attributes and damage calculation
- ๐ง **Extensible** - Flexible operator system supporting complex game logic and formula combinations
- ๐ฆ **Tree-shakable** - Modern ESM support with CommonJS fallback
## ๐ For Users
To use this library in your project:
```bash
npm install @soonfx/engine
```
## ๐ฆ Development Setup
Clone and setup the development environment:
```bash
# Clone the repository
git clone https://github.com/soonfx-engine/core.git
cd core
# Install dependencies
npm install
# Build the project
npm run build
# Run examples
cd examples
npm install
npm run dev
```
## ๐ฏ Quick Start
### Basic Usage
```typescript
import { fx } from '@soonfx/engine';
// 1. Mathematical utilities
const distance = fx.distance(0, 0, 10, 10);
console.log('Distance between points:', distance); // 14.142135623730951
// 2. Expression evaluation
const result = fx.evaluateExpression('(2 + 3) * 4');
console.log('Expression result:', result); // 20
// 3. Numeric processing
const fixed = fx.fixedDecimal(3.14159, 2);
console.log('Fixed to 2 decimals:', fixed); // 3.14
```
### Event System
```typescript
import { Eve, Call, CallCenter } from '@soonfx/engine';
// Create event call center
const callCenter = new CallCenter();
// Listen to events
callCenter.addEventListener(Eve.SHIFT_ADD_BOARD, (data) => {
console.log('Board added event triggered:', data);
});
// Send events
Call.send(Eve.ADD_DATABASE_DATA, [data, body, index]);
```
## ๐ Core API
### Mathematical Utilities (fx)
#### Vector and Geometry Operations
```typescript
// Calculate distance between two points
const distance = fx.distance(x1, y1, x2, y2);
// Vector dot product
const dotProduct = fx.dot(p1x, p1y, p2x, p2y);
// Vector cross product
const crossProduct = fx.cross(p1x, p1y, p2x, p2y);
// Calculate vector length
const length = fx.length(a, b);
// Coordinate transformation
const coord = fx.coordinate(x, y, angle, distance);
```
### Game Characters (Player)
The `Player` class provides character attributes, battle calculations, and combat simulation. See the [Examples](#-examples) section below for complete battle system demonstrations.
## ๐๏ธ System Architecture
```
@soonfx/fx
โโโ Core Systems (core/)
โ โโโ EventManager Event management
โ โโโ System System base class
โ โโโ Types Type definitions
โ
โโโ Mathematical Modules
โ โโโ Vector Vector operations (dot, cross, distance)
โ โโโ Numeric Numeric processing (fixedDecimal, currencyConversion)
โ โโโ Geometry Geometric calculations (coordinate, length)
โ
โโโ Expression System
โ โโโ Parser Expression parser
โ โโโ RPN Converter Reverse Polish Notation converter
โ โโโ Evaluator Evaluation engine
โ
โโโ Data Management (data/)
โ โโโ Layers Layer system
โ โโโ Metadata Metadata management
โ โโโ Models Data models
โ โโโ Storage Storage system
โ
โโโ Game Systems (game/)
โ โโโ FXCentre Game engine core
โ โโโ Player Player character system
โ โโโ Formulas Formula calculation system
โ
โโโ Communication (communication/)
โ โโโ Events Event system
โ โโโ Call Event calling
โ โโโ Message Message passing
โ
โโโ Utilities (utils/)
โโโ ExtendsUtil Extension utilities
```
## ๐ Examples
Check out the [example project](https://github.com/soonfx-engine/core/tree/main/examples) for complete development examples.
### Example Contents:
- โ๏ธ Battle system simulation
- ๐ Character attribute calculations
- ๐ฏ PVE data generation
- ๐ Multi-battle comparison analysis
- ๐ฎ Complete game numeric system demonstration
### Run Examples Locally:
See the [Getting Started](#getting-started) section in Contributing for setup instructions.
## ๐ ๏ธ TypeScript Support
SoonFx provides complete TypeScript type definitions:
```typescript
// Automatic type inference
const distance: number = fx.distance(0, 0, 10, 10);
// Full IntelliSense support
fx. // IDE will show all available methods
```
### Type Definition Features:
- โ
Complete TypeScript type definitions (.d.ts)
- โ
Intelligent code completion
- โ
Type checking and error hints
- โ
Parameter type inference
- โ
Return type inference
## ๐ง Browser and Environment Support
### Supported Environments
- โ
**Node.js** >= 14.0.0
- โ
**Modern Browsers** (ES2015+)
- Chrome, Firefox, Safari, Edge (latest versions)
- โ
**Build Tools**
- esbuild (recommended, used in this project)
- Webpack, Vite, Rollup, and other modern bundlers
### Module Systems
- โ
**ESM** (ES Modules) - Recommended
- โ
**CommonJS** - Node.js environment
## ๐ค Contributing
We welcome all forms of contributions!
### Getting Started
First, clone the repository:
```bash
git clone https://github.com/soonfx-engine/core.git
cd core
```
#### To Run Examples:
```bash
# Navigate to examples directory
cd examples
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
```
#### To Contribute Code:
```bash
# Install dependencies
npm install
# Build the project
npm run build
# Run tests (if available)
npm test
```
## ๐บ๏ธ Roadmap
See our [Roadmap](ROADMAP.md) for planned features and improvements.
## ๐ Changelog
View the [complete changelog](https://github.com/soonfx-engine/core/releases)
## ๐ License
This project is licensed under the [Apache 2.0 License](LICENSE). You are free to use, modify, and distribute this project.
## ๐ Links
- ๐ฆ [npm Package](https://www.npmjs.com/package/@soonfx/engine)
- ๐ป [GitHub Repository](https://github.com/soonfx-engine/core)
- ๐ [Online Demo](https://soonfx.dev)
- ๐ [Issue Tracker](https://github.com/soonfx-engine/core/issues)
- ๐ฌ [Discussions](https://github.com/soonfx-engine/core/discussions)
## ๐ Getting Help
If you encounter any issues:
- ๐ฌ [GitHub Discussions](https://github.com/soonfx-engine/core/discussions) - Ask questions and discuss
- ๐ [GitHub Issues](https://github.com/soonfx-engine/core/issues) - Bug reports and feature requests
- ๐ง [jiyisoon@163.com](mailto:jiyisoon@163.com) - Email contact
## โญ Star History
If this project helps you, please give us a Star! It means a lot to us.
[](https://star-history.com/#soonfx-engine/core&Date)
---
**[โฌ Back to Top](#soonfx)**
Made with โค๏ธ by [SoonFx Team](https://github.com/soonfx-engine)
Copyright ยฉ 2025 SoonFx Team. All rights reserved.