docs: update Readme.md with English version link and licensing information

Added a link to the English version of the documentation and included a detailed licensing section outlining the dual licensing model for EVEngine, specifying conditions for open-source and commercial use.
This commit is contained in:
西风逍遥游 committed 2026-08-10 22:50:06 +08:00
1 parent a940088b70
commit cdd5e78efe
5 files changed
+970

No files matched your search

+86
View File
@@ -0,0 +1,86 @@
EVEngine Dual License
=====================
Copyright (c) 2024-2026 西风逍遥游 <sunxfancy@gmail.com>
Copyright (c) 2024-2026 EVEngine Contributors
EVEngine(Evolutionary Vision Engine)采用**双许可(Dual Licensing)**模式发布。
你必须根据用途选择下列之一:
1. **免费许可** — 见 [LICENSE-OPENSOURCE](LICENSE-OPENSOURCE)
2. **商业许可** — 见 [LICENSE-COMMERCIAL](LICENSE-COMMERCIAL)
选择规则(简要)
----------------
| 你的用途 | 应使用的许可 | 费用 |
|----------|--------------|------|
| 开源项目引用 / 集成;**或**使用本软件的项目**年营收不超过人民币 10 万元** | LICENSE-OPENSOURCE | **免费** |
| 项目年营收**超过人民币 10 万元**;或其他需闭源商业授权的情形 | LICENSE-COMMERCIAL | **需付费并取得书面授权** |
| 不确定 | 请联系版权方确认 | — |
营收门槛
--------
- 「年营收」指使用本软件的产品 / 项目在一个自然年内的总营业收入(含销售收入、订阅、内购、广告、授权、众筹到账等与该产品相关的全部收入,未扣除成本)。
- 年营收 **≤ 人民币 100,000 元** 的,可继续适用免费许可。
- 年营收 **一旦超过** 人民币 100,000 元,你必须在该超标事实发生之日起 **1 个月内** 向版权方申请并完成商业许可;逾期未完成的,**不得再继续使用**本软件(包括继续开发、构建、运行时分发与商业发行)。
说明
----
- 第三方依赖库仍遵循其各自原有许可证;本双许可仅覆盖 EVEngine 自身原创代码与资源。
- 获得任一许可即表示你已阅读并同意该许可的全部条款。
联系商业授权
------------
邮箱:sunxfancy@gmail.com
项目:https://github.com/EVEngine/EVEngine
(中文文本为准;以下英文译文仅供参考。)
================================================================================
English translation (for reference only; the Chinese text above prevails)
================================================================================
EVEngine Dual License
=====================
Copyright (c) 2024-2026 西风逍遥游 <sunxfancy@gmail.com>
Copyright (c) 2024-2026 EVEngine Contributors
EVEngine (Evolutionary Vision Engine) is released under a **dual licensing** model.
You must choose one of the following according to your use:
1. **Free License** — see [LICENSE-OPENSOURCE](LICENSE-OPENSOURCE)
2. **Commercial License** — see [LICENSE-COMMERCIAL](LICENSE-COMMERCIAL)
Selection rules (summary)
-------------------------
| Your use | Applicable license | Cost |
|----------|--------------------|------|
| Open-source project use / integration; **or** a project using this Software with **annual revenue not exceeding RMB 100,000** | LICENSE-OPENSOURCE | **Free** |
| Project annual revenue **exceeding RMB 100,000**; or other cases requiring a commercial license | LICENSE-COMMERCIAL | **Paid; written authorization required** |
| Unsure | Contact the copyright holder | — |
Revenue threshold
-----------------
- “Annual Revenue” means the total operating revenue of the product / project that uses this Software in a calendar year (including sales, subscriptions, in-app purchases, advertising, licensing fees, crowdfunding proceeds, and all other revenue related to that product, without deducting costs).
- If Annual Revenue is **≤ RMB 100,000**, the Free License may continue to apply.
- Once Annual Revenue **exceeds** RMB 100,000, you must apply for and complete a Commercial License with the copyright holder within **one (1) month** from the date that threshold is exceeded; if you fail to do so in time, you **may not continue to use** this Software (including continued development, builds, runtime redistribution, and commercial distribution).
Notes
-----
- Third-party dependencies remain under their own licenses; this dual license covers only EVEngine’s original code and assets.
- Acceptance of either license means you have read and agree to all of its terms.
Commercial licensing contact
----------------------------
Email: sunxfancy@gmail.com
Project: https://github.com/EVEngine/EVEngine
+238
View File
@@ -0,0 +1,238 @@
EVEngine Commercial License
===========================
Copyright (c) 2024-2026 西风逍遥游 <sunxfancy@gmail.com>
Copyright (c) 2024-2026 EVEngine Contributors
版本:1.1
适用于:年营收超过人民币 10 万元的项目,及其他需付费商业授权的情形
重要提示
--------
本文件描述商业许可的标准条款框架。在下列情形下,你必须取得本商业许可后方可**继续**使用 EVEngine:
1. 使用本软件的项目**年营收超过人民币 100,000 元**;或
2. 书面协议约定必须使用商业许可的其他情形。
年营收定义与「超过门槛后 **1 个月内** 必须申请商业许可,否则不得继续使用」的规则,见 [LICENSE-OPENSOURCE](LICENSE-OPENSOURCE) 第 1.3、1.4 条及第 4 条。免费适用条件(开源且未超标,或年营收 ≤ 10 万元)见该文件。
取得商业许可须:
1. 与版权方签署书面(含电子邮件确认的)商业授权协议;并且
2. 按约定支付许可费用。
**超标后未在一个月内完成上述步骤的,你无权继续使用本软件。**
1. 定义
-------
1.1 「本软件」含义同免费许可中的定义。
1.2 「被授权方」指已与版权方达成有效商业授权并完成付款(或按协议约定的付款安排)的自然人或法人。
1.3 「授权产品」指商业授权协议中列明的、被授权方开发或发行的特定游戏或软件产品。
1.4 「年营收」「营收门槛」含义同 [LICENSE-OPENSOURCE](LICENSE-OPENSOURCE)。
1.5 「商业用途」包括但不限于:付费销售、订阅、内购、广告变现、众筹发行、为客户交付的定制游戏/应用等。
2. 授权授予
-----------
在被授权方遵守商业授权协议及本许可的前提下,版权方授予被授权方:
(a) 非独占、不可转让(除非协议另有约定)、有期限或无期限(以协议为准)的权利;
(b) 将本软件嵌入、链接或捆绑进授权产品;
(c) 以闭源形式复制、发行、销售授权产品;
(d) 为本软件制作仅用于授权产品的内部修改,该等修改的所有权归属以协议约定为准(默认:对引擎核心的修改不改变版权方对本软件原有部分的权利)。
具体席位数、产品数量、平台范围、是否含源码、是否可再分发运行时等,以书面商业授权协议为准;协议与本文件冲突时,**以书面协议为准**。
3. 费用与申请时限
-----------------
3.1 年营收超过营收门槛后,须支付许可费并取得本商业许可。价格、付款方式、税费、续费与升级条件由双方书面约定。
3.2 **申请时限**:自年营收超过人民币 100,000 元之日起 **一个月内** 必须向版权方提出申请并完成授权;逾期则不得继续使用本软件(详见免费许可第 4 条)。
3.3 参考询价(非要约,最终以签约报价为准)可联系:
邮箱:sunxfancy@gmail.com
项目:https://github.com/EVEngine/EVEngine
3.4 常见授权形态(可协商):
- 单款游戏授权(按标题)
- 工作室年费授权(多款产品)
- 运行时再分发授权
- 源码级商业授权(如需要)
- 由免费许可因营收超标而升级的过渡授权
4. 限制
-------
除非书面协议明确允许,被授权方不得:
(a) 将本软件作为独立产品转售、出租或再许可给第三方;
(b) 移除、篡改版权声明或归属信息;
(c) 将本软件用于协议未覆盖的其他产品;
(d) 声称拥有本软件的版权。
5. 归属与声明
-------------
发行授权产品时,建议(若协议要求则为必须)在鸣谢、关于页面或文档中注明使用了 EVEngine。是否必须展示引擎标识以书面协议为准。
6. 支持与更新
-------------
商业许可是否包含技术支持、安全修复与版本升级,以书面协议约定为准。本文件本身不构成支持承诺。
7. 无担保与责任限制
------------------
除书面协议另有强制性约定外,本软件按「现状」提供。在法律允许范围内,版权方的累计赔偿责任不超过被授权方就该授权实际支付的许可费总额。
8. 期限与终止
-------------
8.1 授权期限以书面协议为准。
8.2 被授权方严重违约(包括未付款、超范围使用)时,版权方可终止授权。终止后,被授权方应停止将本软件用于新的复制与发行;协议可另行约定已售出拷贝的处理方式。
9. 与免费许可的关系
-------------------
商业许可与免费许可相互独立。取得商业许可后,被授权方在协议范围内可不受免费许可中营收门槛与开源义务的限制;但第三方依赖库仍须遵守其各自许可证。年营收未超过门槛时,可选择仅适用免费许可而无需取得本商业许可。
10. 适用法律
------------
除双方另有约定外,本许可及商业授权争议适用中华人民共和国法律。协商不成的,提交版权方所在地有管辖权的人民法院诉讼解决。
11. 文本
--------
本许可中文文本为准。英文翻译(如有)仅供参考。
================================================================================
English translation (for reference only; the Chinese text above prevails)
================================================================================
EVEngine Commercial License
===========================
Copyright (c) 2024-2026 西风逍遥游 <sunxfancy@gmail.com>
Copyright (c) 2024-2026 EVEngine Contributors
Version: 1.1
Applies to: projects with Annual Revenue exceeding RMB 100,000, and other cases requiring a paid commercial license
Important notice
----------------
This document describes the standard framework for the Commercial License. You must obtain this Commercial License before you may **continue** to use EVEngine if:
1. the project using the Software has **Annual Revenue exceeding RMB 100,000**; or
2. a written agreement requires use of the Commercial License in other circumstances.
Definitions of Annual Revenue and the rule that you must apply for a Commercial License within **one (1) month** after exceeding the threshold—or else you may not continue use—are set out in [LICENSE-OPENSOURCE](LICENSE-OPENSOURCE) Sections 1.3, 1.4, and 4. Free-use eligibility (open source and under the threshold, or Annual Revenue ≤ RMB 100,000) is also described there.
To obtain a Commercial License you must:
1. enter into a written commercial authorization agreement with the copyright holder (email confirmation counts); and
2. pay the license fees as agreed.
**If you do not complete the above within one month after exceeding the threshold, you have no right to continue using the Software.**
1. Definitions
--------------
1.1 “Software” has the same meaning as in the Free License.
1.2 “Licensee” means a natural or legal person that has entered into a valid commercial authorization with the copyright holder and completed payment (or is performing under a payment arrangement agreed in the contract).
1.3 “Licensed Product” means the specific game or software product developed or distributed by the Licensee as listed in the commercial authorization agreement.
1.4 “Annual Revenue” and “Revenue Threshold” have the same meanings as in [LICENSE-OPENSOURCE](LICENSE-OPENSOURCE).
1.5 “Commercial Use” includes without limitation: paid sales, subscriptions, in-app purchases, advertising monetization, crowdfunding releases, and closed-source custom games/apps delivered to clients.
2. Grant
--------
Subject to the Licensee’s compliance with the commercial authorization agreement and this license, the copyright holder grants the Licensee:
(a) a non-exclusive, non-transferable (unless otherwise agreed), term or perpetual (as agreed) right;
(b) to embed, link, or bundle the Software into the Licensed Product;
(c) to copy, distribute, and sell the Licensed Product in closed-source form;
(d) to make internal modifications to the Software solely for the Licensed Product; ownership of such modifications is as agreed in writing (by default, modifications to the engine core do not affect the copyright holder’s rights in the original Software).
Seat counts, number of products, platforms, whether source is included, whether the runtime may be redistributed, and similar terms are governed by the written commercial authorization agreement; if that agreement conflicts with this document, **the written agreement prevails**.
3. Fees and application deadline
--------------------------------
3.1 After Annual Revenue exceeds the Revenue Threshold, you must pay license fees and obtain this Commercial License. Price, payment method, taxes, renewal, and upgrade terms are agreed in writing.
3.2 **Application deadline**: Within **one (1) month** from the date Annual Revenue exceeds RMB 100,000, you must apply to the copyright holder and complete authorization; after that deadline you may not continue using the Software (see Free License Section 4).
3.3 For pricing inquiries (not an offer; final terms are as quoted in the signed agreement), contact:
Email: sunxfancy@gmail.com
Project: https://github.com/EVEngine/EVEngine
3.4 Common licensing forms (negotiable):
- Per-title game license
- Studio annual license (multiple products)
- Runtime redistribution license
- Source-level commercial license (if needed)
- Transition license upgrading from the Free License after exceeding the revenue threshold
4. Restrictions
---------------
Unless expressly allowed in writing, the Licensee may not:
(a) resell, lease, or sublicense the Software as a standalone product to third parties;
(b) remove or alter copyright notices or attribution;
(c) use the Software in products not covered by the agreement;
(d) claim copyright ownership of the Software.
5. Attribution
--------------
When distributing the Licensed Product, it is recommended (and mandatory if required by the agreement) to credit EVEngine in acknowledgements, an about page, or documentation. Whether engine branding must be displayed is governed by the written agreement.
6. Support and updates
----------------------
Whether the Commercial License includes technical support, security fixes, and version upgrades is determined by the written agreement. This document alone is not a support commitment.
7. Disclaimer and limitation of liability
-----------------------------------------
Except as mandatorily agreed in writing, the Software is provided “AS IS”. To the extent permitted by law, the copyright holder’s aggregate liability shall not exceed the total license fees actually paid by the Licensee for that authorization.
8. Term and termination
-----------------------
8.1 The license term is as stated in the written agreement.
8.2 Upon material breach by the Licensee (including non-payment or use beyond scope), the copyright holder may terminate the authorization. After termination, the Licensee must stop using the Software for new copies and distribution; handling of copies already sold may be agreed separately.
9. Relationship to the Free License
-----------------------------------
The Commercial License and the Free License are independent. After obtaining a Commercial License, within the scope of the agreement the Licensee is not bound by the Free License’s revenue threshold or open-source obligations; third-party dependencies remain under their own licenses. While Annual Revenue does not exceed the threshold, you may choose to rely solely on the Free License without obtaining this Commercial License.
10. Governing law
-----------------
Unless otherwise agreed, this license and commercial authorization disputes are governed by the laws of the People’s Republic of China. If negotiation fails, the dispute shall be submitted to a people’s court with jurisdiction at the copyright holder’s location.
11. Language
------------
The Chinese text of this license prevails. Any English translation is for reference only.
+190
View File
@@ -0,0 +1,190 @@
EVEngine Free License
=====================
Copyright (c) 2024-2026 西风逍遥游 <sunxfancy@gmail.com>
Copyright (c) 2024-2026 EVEngine Contributors
版本:1.1
文件名:LICENSE-OPENSOURCE
适用于:开源项目,以及年营收不超过人民币 10 万元的项目(免费)
1. 定义
-------
1.1 「本软件」指 EVEngine 及其随本许可分发的源代码、二进制、文档与示例(不含第三方库自身受其他许可证约束的部分)。
1.2 「开源项目」指同时满足以下条件的软件项目:
(a) 以 OSI 认可的开源许可证(例如 MIT、Apache-2.0、BSD、GPL、LGPL、MPL 等)公开发布;
(b) 向公众提供完整、可对应的源代码;
(c) 不以闭源形式作为主要发行方式。
1.3 「年营收」指使用本软件的产品 / 项目在一个自然年(公历 1 月 1 日至 12 月 31 日)内的总营业收入,包括但不限于:销售收入、订阅费、内购、广告分成、授权费、众筹到账、定制开发款等与该产品直接相关的全部收入(按权责发生或实际到账口径,以较高、更能反映真实经营规模者为准),**不扣除**成本、税费、渠道分成前的平台扣款以外你仍应计入的部分;外币收入按发生当日或月度合理汇率折算为人民币。
1.4 「营收门槛」指人民币 **100,000 元(拾万元)** 整。
2. 谁可以免费使用
----------------
在遵守本许可全部条款的前提下,下列情形可免费使用本软件:
(a) **开源项目**引用、集成或再分发本软件,且该项目当年年营收未超过营收门槛;或
(b) **非开源项目**(含商业 / 闭源游戏或软件)使用本软件,且该项目当年年营收未超过营收门槛。
一旦年营收超过营收门槛,本免费许可下的继续使用权受第 4 条约束,你应改用 [LICENSE-COMMERCIAL](LICENSE-COMMERCIAL)。
3. 授权范围(免费)
------------------
在适用第 2 条且遵守本许可的前提下,版权方特此免费授予你全球范围内的、非独占的、不可转让的权利:
(a) 使用、复制、修改、合并本软件;
(b) 将本软件或其修改版本作为你的项目的一部分进行分发(开源项目须保持开源;低营收闭源项目可闭源分发);
(c) 发布基于本软件的衍生作品(在仍符合第 2 条的前提下)。
4. 营收超标与强制商业许可
------------------------
4.1 若使用本软件的项目年营收**超过**营收门槛(人民币 100,000 元),你必须在该超标事实发生之日起 **一个月(30 个自然日)内**:
(a) 书面联系版权方申请商业许可;并且
(b) 按约定完成签约与付费(或按版权方书面同意的付款安排开始履行)。
4.2 在第 4.1 款规定的一个月期限内,你可继续使用本软件,但仅限于为完成商业许可过渡所合理需要的范围,且不得故意拖延申请。
4.3 **逾期后果**:若未在上述一个月内完成商业许可申请并达成有效授权(因版权方无合理理由拒绝签约的除外,此时双方应善意协商),则你在本许可下使用本软件的权利**自动终止**,你必须立即停止继续使用本软件,包括但不限于:继续开发、编译构建、将运行时随产品分发、以及任何形式的商业发行与运营。
4.4 下一自然年若年营收回落至营收门槛及以下,并不自动恢复已因逾期终止的权利;是否可重新适用本免费许可,以版权方书面确认为准。正在有效商业许可期内的,依商业许可执行。
5. 其他条件
-----------
5.1 **开源项目额外义务**:若你以开源项目身份主张第 2(a) 条,则包含或依赖本软件的项目必须以开源许可证公开其源代码。
5.2 **保留声明**:你必须在源代码及发行说明中保留本版权声明与本许可文本(或指向本文件的明确链接),并注明使用了 EVEngine。
5.3 **修改标记**:若你修改了本软件,须在修改文件中注明修改事实与日期。
5.4 **诚实义务**:你不得通过拆分主体、关联公司转移收入、虚报或隐瞒营收等方式规避营收门槛。版权方有权要求你提供合理范围内的营收说明以核实是否仍适用本许可。
5.5 **商标**:本许可不授予对「EVEngine」名称、标识或其他商标的使用权,合理指明出处除外。
6. 专利
-------
若你对本软件主张专利侵权,则你在本许可下获得的权利自动终止。
7. 无担保与责任限制
------------------
本软件按「现状(AS IS)」提供,不附带任何明示或默示担保,包括但不限于适销性、特定用途适用性及非侵权。在法律允许的最大范围内,版权方不对因使用本软件产生的任何直接、间接、附带或后果性损害承担责任。
8. 终止
-------
除第 4.3 条外,若你违反本许可,授权自动终止。终止后你必须停止使用与分发本软件。此前已合法获得本软件副本的下游接受者,在仍遵守适用许可时可继续使用其副本。
9. 其他
-------
9.1 本许可不构成对商业许可条款的放弃。
9.2 若某条款被认定无效,其余条款继续有效。
9.3 本许可以中文文本为准;以下英文译文仅供参考。
================================================================================
English translation (for reference only; the Chinese text above prevails)
================================================================================
EVEngine Free License
=====================
Copyright (c) 2024-2026 西风逍遥游 <sunxfancy@gmail.com>
Copyright (c) 2024-2026 EVEngine Contributors
Version: 1.1
Filename: LICENSE-OPENSOURCE
Applies to: open-source projects, and projects with Annual Revenue not exceeding RMB 100,000 (free of charge)
1. Definitions
--------------
1.1 “Software” means EVEngine and the source code, binaries, documentation, and examples distributed under this license (excluding portions of third-party libraries governed by other licenses).
1.2 “Open-Source Project” means a software project that simultaneously:
(a) is publicly released under an OSI-approved open-source license (e.g., MIT, Apache-2.0, BSD, GPL, LGPL, MPL);
(b) makes complete, corresponding source code available to the public; and
(c) is not primarily distributed in closed-source form.
1.3 “Annual Revenue” means the total operating revenue of the product / project that uses the Software during a calendar year (1 January through 31 December), including without limitation: sales revenue, subscription fees, in-app purchases, advertising share, licensing fees, crowdfunding proceeds, custom-development fees, and all other revenue directly related to that product (measured on an accrual or cash basis, whichever is higher and better reflects actual commercial scale), **without deducting** costs or taxes; amounts you remain obliged to count after platform channel deductions shall still be included. Foreign-currency revenue shall be converted to RMB at the exchange rate on the date of occurrence or a reasonable monthly rate.
1.4 “Revenue Threshold” means **RMB 100,000 (one hundred thousand yuan)** exactly.
2. Who may use the Software for free
------------------------------------
Subject to full compliance with this license, you may use the Software free of charge if:
(a) an **Open-Source Project** uses, integrates, or redistributes the Software, and that project’s Annual Revenue for the year does not exceed the Revenue Threshold; or
(b) a **non-open-source project** (including commercial / closed-source games or software) uses the Software, and that project’s Annual Revenue for the year does not exceed the Revenue Threshold.
Once Annual Revenue exceeds the Revenue Threshold, continued use under this Free License is subject to Section 4, and you must switch to [LICENSE-COMMERCIAL](LICENSE-COMMERCIAL).
3. Grant (free)
---------------
Provided Section 2 applies and you comply with this license, the copyright holder hereby grants you a worldwide, non-exclusive, non-transferable, royalty-free right to:
(a) use, copy, modify, and merge the Software;
(b) distribute the Software or modified versions as part of your project (Open-Source Projects must remain open source; low-revenue closed-source projects may distribute closed source);
(c) publish derivative works based on the Software (while still satisfying Section 2).
4. Exceeding the threshold and mandatory commercial license
-----------------------------------------------------------
4.1 If the project using the Software has Annual Revenue **exceeding** the Revenue Threshold (RMB 100,000), you must, within **one (1) month (30 calendar days)** from the date that fact occurs:
(a) contact the copyright holder in writing to apply for a Commercial License; and
(b) complete signing and payment as agreed (or begin performance under a payment arrangement approved in writing by the copyright holder).
4.2 During the one-month period in Section 4.1, you may continue to use the Software only to the extent reasonably necessary to complete the transition to a Commercial License, and you must not deliberately delay the application.
4.3 **Consequences of delay**: If you fail within the one-month period to apply for and obtain a valid Commercial License (except where the copyright holder unreasonably refuses to contract, in which case the parties shall negotiate in good faith), your rights to use the Software under this license **terminate automatically**, and you must immediately stop continued use of the Software, including without limitation: continued development, compilation/builds, redistributing the runtime with a product, and any form of commercial distribution or operation.
4.4 If Annual Revenue falls back to the Revenue Threshold or below in a later calendar year, rights already terminated for delay are not automatically restored; whether this Free License may apply again requires written confirmation from the copyright holder. If a Commercial License is already in force, that Commercial License governs.
5. Additional conditions
------------------------
5.1 **Extra duties for Open-Source Projects**: If you claim Section 2(a) as an Open-Source Project, any project that includes or depends on the Software must publish its source code under an open-source license.
5.2 **Notices**: You must retain this copyright notice and this license text (or a clear link to this file) in source code and distribution notices, and state that EVEngine is used.
5.3 **Modification marks**: If you modify the Software, you must note the fact and date of modification in the modified files.
5.4 **Good faith**: You must not evade the Revenue Threshold by splitting entities, shifting revenue among affiliates, misreporting, or concealing revenue. The copyright holder may require reasonably scoped revenue explanations to verify that this license still applies.
5.5 **Trademarks**: This license does not grant rights to use the name “EVEngine”, logos, or other trademarks, except for reasonable attribution.
6. Patents
----------
If you assert a patent infringement claim against the Software, your rights under this license terminate automatically.
7. Disclaimer and limitation of liability
-----------------------------------------
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE COPYRIGHT HOLDER SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING FROM USE OF THE SOFTWARE.
8. Termination
--------------
In addition to Section 4.3, your rights terminate automatically if you breach this license. After termination you must stop using and distributing the Software. Downstream recipients who previously obtained copies lawfully may continue to use their copies while they remain in compliance with the applicable license.
9. Miscellaneous
----------------
9.1 This license does not waive any terms of the Commercial License.
9.2 If any provision is held invalid, the remaining provisions remain in effect.
9.3 The Chinese text of this license prevails. The English translation is for reference only.
+443
View File
@@ -0,0 +1,443 @@
EVEngine
=======================
Evolutionary Vision Engine
[中文版](Readme.md)
## Documentation
- [Game developer docs](docs/usr/README.md): install, run, and project layout; [module handbook](docs/usr/MODULES.md) covers script APIs and examples one by one.
- [Engine developer docs](docs/dev/README.md): architecture, module design, testing strategy, and implementation notes.
Many game engines are slow to iterate, hard to debug, and awkward for rapid prototyping. EVEngine aims to be a simple, practical engine focused on 2D and third-person 3D gameplay components—not a full-featured 3D scene-management suite.
Design goals:
1. A Love2D-style interpretive engine that loads scripts and data directly
2. Many high-performance C++ modules; you can compile other C++ libraries as shared libs and interact with them directly
3. A full development stack: your logic can be edited with GUI tools; the editor runtime is the game runtime—only the shipping runtime strips DevTools (or you can keep them for player modding)
4. Built-in asset management and hot reload—no separate pipeline required
5. Class scanning with auto-generated editing GUIs
6. GUIs that create and sync live from scripts
7. Pause the game loop for debugging
8. Independent state-machine models for partial hot updates
9. Mixed 3D and 2D rendering
Built-in systems:
1. 2D tilemap — with an extensible map editor
2. 2D camera
3. Simple database
4. Box2D physics
5. RPG framework
6. Extensible combat model components
7. Dialogs and scripting
8. Layered avatar rendering
9. 2D fluid engine
10. Particle system
11. Sprite-stacking pseudo-3D
12. Real 3D model rendering
Build an RPG with minimal ceremony, with fast edit/debug for events, logic, and cutscene scripts—for example, hot-patch a function in a script and re-run it to preview the effect.
## Requirements
### Common dependencies
| Dependency | Version | Notes |
|------------|---------|-------|
| Git | Any recent version | Clone the repo; first configure may download `third-party` |
| CMake | **≥ 3.21** | Primary build system |
| C++ compiler | **C++20** | MSVC / GCC / Clang |
| Vulkan SDK | **≥ 1.2** | Graphics backend; environment variables must be set correctly |
Third-party libraries (SDL2, Box2D, Squirrel, Poco, ImGui, OpenAL Soft, FreeType, GLM, VKBuilder, etc.) are fetched and built automatically via CMake `ExternalProject` from [EVEngine/third-party](https://github.com/EVEngine/third-party). Manual installs are usually unnecessary.
### Windows
| Component | Recommended |
|-----------|-------------|
| OS | Windows 10 / 11 (x64) |
| IDE / toolchain | **Visual Studio 2026** (with the “Desktop development with C++” workload) |
| CMake generator | `Visual Studio 18 2026` (matches the root `Makefile`) |
| Vulkan SDK | Install from [LunarG](https://vulkan.lunarg.com/). Confirm user env `VULKAN_SDK` (e.g. `C:\VulkanSDK\1.4.357.0`) and add `%VULKAN_SDK%\Bin` to `PATH` (includes `glslc`). **Open a new terminal / restart Cursor** before running cmake |
| Optional | Git for Windows; add CMake / Ninja to `PATH` |
> If you use Visual Studio 2022, change the generator in `Makefile` to `"Visual Studio 17 2022"`.
### Linux
| Component | Recommended |
|-----------|-------------|
| Distro | Ubuntu 20.04+ or equivalent (including WSL2) |
| Compiler | GCC 10+ or Clang 12+ |
| Base packages | `build-essential`, `cmake`, `git`, `ninja-build`, `pkg-config` |
| System libs | X11 / SDL2: `libx11-dev`, `libxext-dev`, `libxxf86vm-dev`, `libxrandr-dev`, `libxcursor-dev`, `libxi-dev`, `libxinerama-dev`, `libxss-dev`; optional Wayland: `libxkbcommon-dev`, `libwayland-dev`; OpenAL/audio: `libasound2-dev`, `libpulse-dev`; image compression: `zlib1g-dev`, `libpng-dev`, `libbz2-dev` |
| Vulkan | `libvulkan-dev` + `glslang-tools` (provides `glslc`), or install the full Vulkan SDK from LunarG |
Ubuntu / WSL example:
```sh
sudo apt update
sudo apt install -y \
build-essential cmake git ninja-build pkg-config \
libx11-dev libxext-dev libxxf86vm-dev libxrandr-dev \
libxcursor-dev libxi-dev libxinerama-dev libxss-dev \
libxkbcommon-dev libwayland-dev \
libgl1-mesa-dev libegl1-mesa-dev \
libasound2-dev libpulse-dev \
zlib1g-dev libpng-dev libbz2-dev libbrotli-dev \
libvulkan-dev vulkan-tools glslang-tools \
python3
# Or install the full Vulkan SDK per LunarG docs (includes validation layers)
```
### macOS
| Component | Recommended |
|-----------|-------------|
| OS | macOS 12+ (Apple Silicon / Intel) |
| Toolchain | **Xcode Command Line Tools** (`xcode-select --install`) |
| CMake | Homebrew: `brew install cmake` (≥ 3.21) |
| Vulkan | Install the **macOS Vulkan SDK** from [LunarG](https://vulkan.lunarg.com/) (includes **MoltenVK**) |
Set up the environment (run in each new terminal, or add to `~/.zshrc`):
```sh
# Replace <version> with your local SDK folder name, e.g. 1.4.357.0
source ~/VulkanSDK/<version>/setup-env.sh
# Verify:
echo "$VULKAN_SDK"
ls "$VULKAN_SDK/lib/libvulkan.dylib" "$VULKAN_SDK/lib/libMoltenVK.dylib"
```
`setup-env.sh` sets `VULKAN_SDK`, `VK_ICD_FILENAMES` (MoltenVK ICD), and related vars. On Apple hosts, CMake **requires** a successful `find_package(Vulkan)` and will not fall back to Windows `vulkan-1.lib`.
### Android (arm64-v8a Debug APK)
| Component | Recommended |
|-----------|-------------|
| Host | macOS / Linux (Makefile paths default to macOS Homebrew) |
| JDK | **OpenJDK 17** (`brew install openjdk@17`) |
| Android SDK | command-line tools + `platform-tools` + `platforms;android-34` + `build-tools;34.0.0` |
| NDK | **26.1.10909125** (`sdkmanager "ndk;26.1.10909125"`) |
| CMake (SDK) | `cmake;3.22.1` (for Gradle; the engine itself cross-compiles with host CMake/Ninja) |
| ABI / minSdk | **arm64-v8a** / **24** |
| Device | Physical device with **Vulkan** (emulator is not a v1 acceptance target) |
Environment variables (add to `~/.zshrc` or export before building):
```sh
export JAVA_HOME="$(brew --prefix openjdk@17)/libexec/openjdk.jdk/Contents/Home"
export ANDROID_HOME="$HOME/Library/Android/sdk"
export ANDROID_NDK="$ANDROID_HOME/ndk/26.1.10909125"
export PATH="$JAVA_HOME/bin:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$PATH"
```
Write `platform/android/apk/local.properties` (**do not commit**):
```
sdk.dir=/Users/<you>/Library/Android/sdk
```
One-shot Debug APK build:
```sh
make build/android-debug
# Output: platform/android/apk/app/build/outputs/apk/debug/app-debug.apk
```
Pipeline: NDK CMake cross-builds third-party + `libmain.so` → `sync/android-libs` → `sync/android-assets` → Gradle `assembleDebug`.
Default `ANDROID_GAME=demo`: syncs `platform/android/game-shell/` (no `main.nut`) into the APK and starts with the embedded `eve.demoScript`. To package an example directory:
```sh
make build/android-debug ANDROID_GAME=example
# Or refresh assets only:
make sync/android-assets ANDROID_GAME=example
```
On launch, the APK copies `assets/game` into the app’s internal storage and enters the existing CLI via `run <internal path>`.
Install / run / logs on device:
```sh
adb devices
make install/android-debug
make run/android-debug
make log/android
```
### iOS / iPadOS (arm64 device, min 13.0)
| Component | Recommended |
|-----------|-------------|
| Host | macOS + **full Xcode** (Command Line Tools alone are not enough; need `iphoneos` SDK) |
| Deployment target | **iOS / iPadOS 13.0+** |
| Arch / device family | **arm64**; `TARGETED_DEVICE_FAMILY=1,2` (iPhone + iPad) |
| Vulkan | LunarG SDK’s `iOS/lib/MoltenVK.xcframework` |
| Signing | Apple Development; set `IOS_DEVELOPMENT_TEAM=<TeamID>` |
| Acceptance device | Physical **iPad** (iPhone compatible); simulator is not a v1 target |
One-shot Debug `.app` build:
```sh
# Team ID is auto-detected when signed into an Apple ID; or set manually:
# security find-certificate -a -c "Apple Development" -p | openssl x509 -noout -subject
# Use OU=<TeamID> (the ID in parentheses in the certificate name is not the Team ID)
export IOS_DEVELOPMENT_TEAM=XXXXXXXXXX
make build/ios-debug
```
Pipeline: Xcode generator configures the iOS toolchain → cross-builds third-party (SDL UIKit static libs, etc.) → links/embeds MoltenVK → packs `example/` into `Resources/game` → produces `eve.app`. If launched with no CLI args, injects `run <Resources/game>`.
Install / run / logs on device:
```sh
# Connect iPad over USB; enable Developer Mode and trust this computer
make install/ios-debug
make run/ios-debug
make log/ios
```
Optional vars: `IOS_DEPLOYMENT_TARGET` (default 13.0), `IOS_BUNDLE_ID` (default `com.evengine.example`), `VULKAN_SDK`.
Troubleshooting:
1. **Signing**: Sign in via Xcode → Settings → Accounts with an Apple ID that has an Apple Development certificate; `security find-identity -v -p codesigning` should list it. Without `IOS_DEVELOPMENT_TEAM`, `make build/ios-debug` can still produce an unsigned `.app`, but it will not install on device. `No Account for Team "XXXX"` usually means you used a certificate ID instead of the Team ID (`OU` in the certificate subject).
2. **Device**: USB-connect the iPad, enable Developer Mode, trust the computer; `xcrun devicectl list devices` should show `connected`. If you see `no DDI`, open the device once in Xcode to install the Developer Disk Image.
3. **Dependencies**: Third-party builds use Ninja + `cmake/ios.toolchain.cmake` (SDL UIKit). On failure, clear `build/third-party/ios-debug` and `build/third-party-binary/ios-debug` and retry.
4. **MoltenVK**: Current LunarG xcframeworks may require iOS 14+; the device OS must meet that requirement (e.g. iPadOS 26 is fine).
5. v1 does not cover simulator, App Store distribution, or multi-arch fat binaries.
### WSL (develop Windows and Linux together)
Prefer **WSL2 (Ubuntu)** for Linux targets and Visual Studio on the Windows host for Win32. Keep the source on the Windows filesystem (e.g. `C:\Users\...\EVEngine`) and access it from WSL via `/mnt/c/...`.
Notes:
1. Install VS 2026 + Vulkan SDK on Windows; install the Linux toolchain and Vulkan inside WSL as above.
2. Run `make` from the repo root: Windows targets use `cmake.exe`, Linux targets use WSL `cmake`.
3. Third-party outputs are per-platform (`build/third-party/win32`, `build/third-party/linux-debug`, etc.) and do not overwrite each other.
4. Building under `/mnt/c` can be slow; for speed, clone into the WSL native filesystem (e.g. `~/src/EVEngine`) and keep a separate Windows clone if needed.
## Get the source
```sh
git clone --recurse-submodules https://github.com/EVEngine/EVEngine
cd EVEngine
# If you already cloned without submodules:
# git submodule update --init --recursive
```
The first CMake configure pulls `third-party` automatically; if the directory already exists with a `CMakeLists.txt`, the local copy is used. ECS uses submodule [`external/ECS.hpp`](https://github.com/sunxfancy/ECS.hpp); IK uses [`external/ik.hpp`](https://github.com/sunxfancy/ik.hpp).
## Quick start (recommended: root Makefile)
The root `Makefile` wraps Debug / Release configure and build for Windows / Linux / macOS. With `make` available (Git Bash, WSL, Linux, macOS), from the repo root:
```sh
# Host-platform Debug / Release (Darwin → macosx, Linux → linux, Windows → win32)
make debug
make release
# Windows only
make build/win32
make build/win32-debug
# Linux only
make build/linux
make build/linux-debug
# macOS only (source Vulkan SDK setup-env.sh first)
make build/macosx
make build/macosx-debug
# Android arm64 Debug APK (needs ANDROID_HOME / ANDROID_NDK / JAVA_HOME)
make build/android-debug
make install/android-debug
make run/android-debug
make log/android
```
Output layout:
| Target | Build dir | Notes |
|--------|-----------|-------|
| Win32 Release | `build/win32` | VS project + Release binaries |
| Win32 Debug | `build/win32-debug` | Ninja + MSVC Debug binaries |
| Linux Release | `build/linux` | Unix Makefiles |
| Linux Debug | `build/linux-debug` | Unix Makefiles |
| macOS Release | `build/macosx` | Unix Makefiles + MoltenVK |
| macOS Debug | `build/macosx-debug` | Unix Makefiles + MoltenVK |
| Android Debug | `build/android-debug` + Gradle APK | NDK `libmain.so` → `app-debug.apk` |
| iOS Debug | `build/ios-debug` (Xcode) | `eve.app` + embedded MoltenVK for iPad/iPhone |
The main executable is usually `eve` (`eve.exe` on Windows; path depends on VS `Release` / `Debug` config subdirs). On Android, SDLActivity loads `libmain.so` (package `com.evengine.example`).
## Step-by-step build
### 1. Configure
Equivalent to the Makefile configure steps; you can also run manually.
**Windows (Visual Studio 2026, x64):**
```sh
cmake.exe -G "Visual Studio 18 2026" -A x64 -DCMAKE_BUILD_TYPE=Release -B build/win32 -S .
# Debug:
cmake.exe -G "Visual Studio 18 2026" -A x64 -DCMAKE_BUILD_TYPE=Debug -B build/win32-debug -S .
```
**Linux:**
```sh
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -B build/linux -S .
# Debug:
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -B build/linux-debug -S .
```
**macOS:**
```sh
source ~/VulkanSDK/<version>/setup-env.sh
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_PLATFORM=macosx -B build/macosx -S .
# Debug:
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DBUILD_PLATFORM=macosx -B build/macosx-debug -S .
```
Optional CMake variables:
| Variable | Default | Notes |
|----------|---------|-------|
| `CMAKE_BUILD_TYPE` | `Debug` (if unset) | `Debug` or `Release`; affects third-party install path suffixes (e.g. `win32-debug`) |
| `BUILD_PLATFORM` | Auto from host | `win32` / `linux` / `macosx`, etc. |
| `BUILD_TESTING` | `ON` | Build unit tests |
### 2. Build third-party (deps)
Third-party code builds via custom targets `deps` / `third-party`. After configure:
```sh
# Windows Debug example
cmake.exe --build build/win32-debug --target deps -j 32
# Linux
cmake --build build/linux-debug --target deps -j 32
# macOS
cmake --build build/macosx-debug --target deps -j 32
```
The first third-party build takes a while. Outputs land in `build/third-party/<platform>[-debug]/` and `build/third-party-binary/<platform>[-debug]/`. Later incremental builds reuse installed results.
### 3. Build the engine
```sh
# Windows (multi-config: pass --config)
cmake.exe --build build/win32 --config Release -j 32
cmake.exe --build build/win32-debug --config Debug -j 32
# Linux
cmake --build build/linux -j 32
cmake --build build/linux-debug -j 32
# macOS
cmake --build build/macosx -j 32
cmake --build build/macosx-debug -j 32
```
Or use `make build/win32` / `make build/macosx-debug` etc. to configure and build in one step.
## Unit tests
`BUILD_TESTING` is on by default. After building:
```sh
make test/win32-debug # runs build/win32-debug/test/Debug/unit_test.exe
make test/win32 # Release tests
make test/linux-debug
make test/linux
make test/macosx-debug
make test/macosx
```
Or run `unit_test` / `unit_test.exe` from the corresponding path directly.
## Docker (optional)
The repo includes an Ubuntu 20.04 `Dockerfile` (`build-essential`, `cmake`, `clang-12`, etc.) for an isolated Linux build:
```sh
docker build . --tag evengine
docker run -it --rm --volume="$(pwd):/home/evengine/src" evengine /bin/bash
```
Inside the container, configure and build with the Linux flow. You still need to supply Vulkan runtime/SDK yourself (the image does not ship a full Vulkan SDK).
## FAQ
1. **CMake cannot find Vulkan**
Confirm the Vulkan SDK is installed and `VULKAN_SDK` points at the right path; on macOS, `source ~/VulkanSDK/<version>/setup-env.sh` before configure. Open a new terminal, then re-run cmake.
2. **Windows generator name mismatch**
The `Makefile` uses `Visual Studio 18 2026`. For VS 2022, change the generator string or upgrade the IDE.
3. **First `deps` is slow or network fails**
`third-party` is fetched from GitHub. You can manually `git clone https://github.com/EVEngine/third-party` into the repo-root `third-party/`, then reconfigure.
4. **`CMAKE_BUILD_TYPE` and third-party paths**
Debug / Release use different install dirs (with a `-debug` suffix). After switching build type, re-run `deps` in the matching directory.
5. **Parallelism**
The Makefile defaults to `-j 32`. On machines with fewer cores, use `-j$(nproc)` (Linux) / `-j$(sysctl -n hw.ncpu)` (macOS) or a smaller number to avoid OOM.
6. **macOS window / rendering fails**
Confirm `VK_ICD_FILENAMES` points at the MoltenVK ICD (`setup-env.sh` sets this) and the SDK `lib` is on `DYLD_LIBRARY_PATH`. The engine uses SDL2 Vulkan surface + MoltenVK; no separate Metal backend is required.
7. **Android APK / device**
Match the NDK version to the Makefile; ensure `local.properties` `sdk.dir` is correct; enable USB debugging and check `adb devices`. v1 expects a Vulkan device; without one, at least verify `make build/android-debug` produces an APK.
8. **iOS / iPadOS device**
Full Xcode is required (`xcode-select -p` should point at `Xcode.app/Contents/Developer`, and `xcrun --sdk iphoneos --show-sdk-path` must work). Set `IOS_DEVELOPMENT_TEAM`, connect a trusted iPad/iPhone over USB. MoltenVK comes from the LunarG SDK’s `iOS/lib/MoltenVK.xcframework`.
## Project layout (brief)
```
EVEngine/
├── CMakeLists.txt # Root CMake: platform detect, third-party, subdirs
├── Makefile # Windows / Linux / macOS / Android / iOS shortcuts
├── platform/ # Platform code and packaging (android/apk, ios Info.plist)
├── src/
│ ├── engine/ # Core, DevTools, CLI (Android libmain / iOS eve.app)
│ ├── modules/ # Feature modules
│ └── scripts/ # Script-side integration
├── test/ # Unit tests
├── third-party/ # Auto-downloaded third-party sources (can be pre-placed)
├── cmake/ # Helpers such as source scanning
└── docs/ # User docs (usr) and developer docs (dev)
```
Usage docs: `docs/usr/`. Design notes: `docs/dev/`.
## License
EVEngine uses a **dual license**:
| Use | License file | Cost |
|-----|--------------|------|
| Open-source projects; or project Annual Revenue ≤ RMB 100,000 | [LICENSE-OPENSOURCE](LICENSE-OPENSOURCE) | Free |
| Annual Revenue exceeding RMB 100,000 | [LICENSE-COMMERCIAL](LICENSE-COMMERCIAL) | Paid; apply within **1 month** after exceeding the threshold, or you may not continue use |
See [LICENSE](LICENSE) for the overview. Commercial licensing: `sunxfancy@gmail.com`.
+13
View File
@@ -2,6 +2,8 @@ EVEngine
=======================
Evolutionary Vision Engine
[English](Readme.en.md)
## 文档导航
- [游戏开发者文档](docs/usr/README.md):安装、运行与项目结构;[模块使用手册](docs/usr/MODULES.md)逐个说明脚本 API 和示例。
@@ -428,3 +430,14 @@ EVEngine/
```
使用说明见 `docs/usr/`,引擎设计说明见 `docs/dev/`。
## 许可证
EVEngine 采用**双许可**:
| 用途 | 许可文件 | 费用 |
|------|----------|------|
| 开源项目;或项目年营收 ≤ 人民币 10 万元 | [LICENSE-OPENSOURCE](LICENSE-OPENSOURCE) | 免费 |
| 年营收超过人民币 10 万元 | [LICENSE-COMMERCIAL](LICENSE-COMMERCIAL) | 收费;超标后 **1 个月内** 须申请,否则不得继续使用 |
总说明见 [LICENSE](LICENSE)。商业授权咨询:`sunxfancy@gmail.com`。