2D GAME ENGINE & RUNTIME

用 FCC 脚本构建 2D 世界

FancyBox2D 是面向 2D 游戏与交互式应用的运行时框架:以 Go 实现核心,以 Ebiten 负责图形呈现,并提供类 C 语法的 FCC 脚本开发体验。

CAPABILITIES

为脚本驱动的 2D 应用准备

从对象、脚本到绘制命令,FancyBox2D 将运行时的核心环节组合在一起。

FCC 脚本语言

支持类、继承、函数、宏、条件和循环,让游戏逻辑以熟悉的类 C 语法表达。

对象与方法系统

以 Root 对象树组织窗口、文本、图像、地图与人物,并通过参数和方法组合交互行为。

命令流渲染

对象系统生成设备无关的 DrawCmd 绘制命令,由 Ebiten 后端执行 GPU 呈现。

独立启动器

使用 launcher.exe 直接运行 FCC 脚本,适合快速预览、演示与 Windows 开发流程。

嵌入式运行时

objsys.dll 以 c-shared 产物提供宿主集成入口,与独立启动器共享同一引擎核心。

编辑器扩展

VS Code / Qoder 插件提供 FCC 语法高亮与补全、F5 一键运行、运行时追踪面板,以及 ALE 动画资源预览与编辑(偏移十字线、播放速度、帧内脚本、帧序调整)。

完整学习手册

浏览 FCC 语法、内置函数、对象属性、系统方法与事件参考。

进入手册

WORKFLOW

从脚本到画面

FCC 源文件经过扫描、宏处理和语法解析后由解释器执行;对象树生成绘制命令,Ebiten 在屏幕上完成渲染。

  1. 编写使用 FCC 定义对象、事件和游戏逻辑。
  2. 运行由 launcher.exe 加载脚本并启动运行时。
  3. 呈现对象系统生成命令流,Ebiten 绘制最终画面。

DOCUMENTATION

从 FCC 学习手册开始

现有手册收录 900 余条语法、对象、方法、函数与事件参考,覆盖脚本开发的常用入口。

打开学习手册

RELEASE NOTES

最新更新

按日期罗列各次更新的内容,新的在上、历史的在下。

2026-10-08 · 脚本支持小数(float)与 Esc 键行为修复

  1. 脚本支持小数FCC 脚本语言新增 float(浮点数)基本类型:现在代码中可直接书写小数字面量,如 3.75、0.5(最多 6 位小数);此前出现小数点会报错,导致含小数参数的调用(如 MixLine(5.5, 8.5))无法运行。
  2. float 变量与成员可声明 float 变量、在类中声明 float 成员变量(约定以 m_f 开头,如 m_fv);与其它基本类型一致,可用 .str 属性取得小数的十进制文本。
  3. Esc 键行为修复版权信息面板打开时按 Esc 现在只关闭面板、不再连带退出程序;脚本注册的 Esc 热键处理按键后事件不再继续传播,不再意外触发程序退出。
  4. 学习手册更新手册「基本类型」章节由七种类型扩为八种,新增 float 浮点数:声明写法、小数字面量规则、成员变量前缀约定(m_f)与可用属性均有说明与示例。
  5. 在线体验页更新体验页引擎升级至 0.5.6,同步支持小数等最新特性;「能力边界」清单补充说明:触摸屏环境下的点击仅被解释为鼠标左键按下。

2026-10-07 · 在线体验页上线(浏览器里跑 FCC)

  1. 浏览器直接运行新增「在线体验」页面:无需安装任何程序,浏览器里直接运行 FCC 脚本。左侧是引擎模拟屏幕、右侧是代码编辑器,内置多个示例可一键切换,点「运行」即刻看到效果,随时「停止」。
  2. 虚拟工作目录与控制台页面自带运行控制台与虚拟工作目录:可上传本机文件供脚本读取、把脚本生成的文件(如 F7 截图)下载回本机;内容只存在浏览器内存中,刷新即清空,代码不会上传服务器。
  3. 能力边界说明页面附「能力边界」清单:浏览器版为软件渲染,没有真实窗口、系统托盘、声音、网络与 DLL 扩展,也不能读写本机文件;要开发完整产品请在桌面使用发布版引擎。
  4. 网站入口调整网站导航改为「学习」(在线体验)与「手册」(脚本参考)双入口,主页按钮同步提供「开始学习 FCC」,从首页一步进入体验页。

2026-10-07 · 扫雷示例完善与页面导航

  1. 扫雷示例升级示例中的扫雷更换为更完整的版本:支持右键标雷并实时显示剩余雷数,右击「新游戏」可设置限时、棋盘格数与雷数。
  2. 显示区域加大扫雷的显示区域扩大到与其它示例一致,棋盘自动居中显示在画面中央。
  3. 设置对话框输入修复右击「新游戏」弹出的设置对话框中,四个输入框不再同时闪烁光标——此前每个输入框都获得了输入焦点、导致没法修改内容;现在点击哪个输入框,哪个才获得光标,可直接键入数值。
  4. 页面导航按钮学习手册首页与手册正文页新增「返回首页」「FancyBox2D 主页」按钮,正文页另有「返回手册」按钮,手册与网站之间往返更顺手。

2026-10-06 · GPU 外部渲染器(render.dll)

  1. GPU 外部渲染器新增 render.dll:程序启动时若发现该文件,自动启用 OpenGL 外部渲染通道,整帧画面经 GPU 纹理上传直接上屏;未放置该文件时照常使用内置渲染,行为完全不变。
  2. 渲染一致性校验运行中自动抽样回读画面、逐位比对 GPU 与内置渲染结果,两者位精确一致(RGB 零差异);图片背景等画面内容在 GPU 通道下正确上屏。

2026-10-06 · 小项修复与下载器补全

  1. view 背景色与背景动画模式view 对象的 bkcolor(背景色)与 anibkmode(动画背景模式)现在真正生效,此前设置被静默丢弃;未连接地图的 view 也会按背景色填满空区域。
  2. new img(x,y,src) 构造参数以坐标与图片路径三个参数创建图像对象时参数正确应用,此前构造实参全部丢失(对象落在原点且无图)。
  3. 键盘消息完整路由宿主键盘消息带真实键码进入完整按键管线:内置快捷键、脚本注册热键与焦点对象的按键事件均正常响应,此前数字键码在入口处被丢弃。
  4. 系统错误状态上报长时间画面卡顿与网络断线现在会真实写入系统错误状态,脚本经 GetSysErr 系列可查询到、恢复后自动清除;此前该状态恒为 0。
  5. 下载器补全新增 DownLoadFile / DownLoadPath / DefFileSwap 三个脚本函数:按远程清单把文件下载并换算为本地目标文件,本地已有匹配文件时直接复用;下载更新链路的消费端由此补齐。

2026-10-06 · 版权信息对话框修正与版本规范

  1. 平台页版式重排开发平台页的 banner 按面板宽度等比缩放、不再出界;各行文本自动选用适配字号并水平居中,行距舒展、不再相互粘连。
  2. 布局与描边访问网址页脚在产品版权页与开发平台页都常驻显示;面板加高 20 像素获得更大呼吸空间;分页标签左右居中;面板四周增加 1px 黑线外框。
  3. 版本号规范版本行改为「版本号 + 8 位构建日期」形式(如「版本: 0.5.2 (20261006)」),不再显示旧的「2.0.0-golang」字样。
  4. 面板外点击不再关闭对话框打开时点击面板之外的区域不再将它关闭,且面板外的画面照常响应鼠标;关闭请用 F1 或 Enter。

2026-10-06 · 插件 0.5.22:编辑器内光标文件预览

  1. 光标文件预览VS Code / Qoder 扩展 0.5.22 新增 .cur 光标文件预览:打开文件即解码并放大显示光标图形(默认 8 倍),右下角实时标注热点坐标,十字线与外框辅助对齐观察。
  2. 预览工具工具条支持缩放(1:1 / ×2 / ÷2 / 适配窗口)、背景切换(棋盘格 / 白 / 黑 / 灰 / 深蓝)与十字线开关;多条目光标文件可用方向键切换显示。

2026-10-06 · 学习手册新增「快捷键」章节

  1. 快捷键章节脚本参考手册新增独立的「快捷键」章节,与 FCC 语法、辅助工具、系统开发、扩展动态库并列:收录 Esc、F1、F2、F3、F5、F7、· 键调试拾取、Ctrl 拾取、右下角版权热区等全部内置快捷键的用途与行为细节。
  2. 脚本热键注册同章节整理脚本自定义热键的注册方法:RegHotKeyDown / Up 等 7 个接口的用法、可用键名全表与 ctrl_ / shift_ 组合键前缀规则。
  3. 手册首页入口学习手册首页新增「快捷键」入口卡片,一键直达新章节。

2026-10-05 · 脚本声明修复与示例修正

  1. 一行声明多个变量int a,b,c; 现在全部正确创建(此前只有第一个名字生效,其余被静默跳过)。
  2. 后缀自增自减真正生效i++ / i-- 不再被静默忽略,依赖计数递增的循环可以正常结束,不再死循环。
  3. 未初始化变量不再跳过构造声明后未赋初值的变量(如 int vol;)参与创建对象时构造函数正常执行、成员正常赋值,不再出现“对象像没创建一样”的情况。
  4. 类内方法互相调用更稳修复脚本中调用同类方法偶发报 “function not found” 的问题(扫雷示例点击空格后自动连锁翻开即受此影响)。
  5. 文字直接写数字正确显示文字对象的 src 直接赋数字(src=数量)现在正确显示为数字文本,不再空白。
  6. 默认文字色调整文字默认颜色调整为奶油色,在浅色背景上清晰可读(此前默认白色在浅青等浅色底上几乎不可见)。
  7. 扫雷示例修正格子数字改为在文字对象自身的方法里设置,数字正确居中显示,不再贴在格子左上角。

2026-10-05 · 宏系统与脚本扩展补全

  1. 宏系统补全补齐 #push/#pop 宏压栈出栈与 #system 系统指令;条件宏 #ifdef/#if 的边界行为与原引擎对齐,写错的宏指令会报出具体位置并继续执行后续脚本;几十层以上的条件宏嵌套不再导致引擎异常退出。
  2. 系统默认宏补齐全部系统默认宏(__FILE__、__PATH__、$、_MAIN、_OBJVER、_CHARSET、_LOC 等),在主文件与被包含文件中按规则自动展开。
  3. #import 引入外部扩展库支持 #import 的 system / userdll / perload 三种形态;引入后可直接以 new 创建 dll_ 开头的扩展类对象,PerUserDll 可按需预载扩展库。

2026-10-04 · 脚本函数大批量补全

  1. 真实点击事件 OnClick修复左键弹起不触发 OnClick 的问题;并补齐原引擎的按键捕获语义——按下时消息若被别的对象消费,弹起仍会送达按下时所在的对象。
  2. 鼠标钩子与滚轮事件hookmouse=1 现在真正生效:OnLBDownHook / OnLBUpHook / OnRBDownHook / OnRBUpHook 及对应 HookEnd 事件会先于普通消息送达,设 0 取消;补齐 OnMouseWheel 滚轮事件。
  3. wnd 函数与属性补全补齐 posex("x,y" 坐标串定位)、pcaller(方法调用者对象)、IsUserFunc、IsMouseOver、Exec(延迟执行,flag=1 时销毁本对象再运行脚本)。
  4. 绘制函数补全补齐 Line / MixLine / FlashLine / LightLine / AlphaLine / Bar / Circle / CircleLight / Sphere 等绘图函数与视区、原点控制共 15 项,绘制目标为 MakeImg / AddFrame 期间正在制作的图像表面。
  5. 异形窗口新增 SetWinMaskFun 与 8 个区域函数(椭圆、圆角矩形、矩形、多边形、图像掩模的加减组合),窗口可按回调中组合出的任意形状显示。
  6. 声音与命令通道新增 PlaySndPos 按屏幕位置自动平衡音量与左右声道播放;新增 SendCommand / GetWndHandle 命令通道与窗口句柄查询;pdesktop.updatedelay 现在真正生效(最小 10 毫秒)。
  7. 系统函数补全补齐 ShellExecute / PostWindowMessage / SimWndEvent / ShowDutyBar / GetHostPath / BinCreateFrom,昵称禁用词三件(DisableNickStr / LoadNickDisableTxt / SaveNickDisableTxt),下载器三件(DefLocMaping / CtrlFilesDir / RegDownLoadProgress)。
  8. 脚本报错更友好语法错误精确定位到行、列;宏指令错误带位置报告后继续执行;写错的语句只吞到行尾,不再连带跳过下一行正确代码;修复若干表达式报错与原引擎不一致的问题。

2026-10-04 · 窗口事件与激活状态

  1. 窗口激活状态实时查询pdesktop.active 读取时实时反映窗口是否处于激活状态:窗口在前台读 1,最小化或切到后台读 0(此前读取恒为 0);赋非零值激活本窗口,赋 0 不做任何操作,与原引擎语义一致。
  2. desktop 窗口事件补全新增 OnActive(窗口获得/失去焦点)、OnCommand(宿主命令消息)、OnUserMessage(用户自定义消息)、OnMiscWM(其他未处理窗口消息)四个事件,desktop 五类窗口事件全部可用。

2026-10-03 · 图标、字体与系统函数补全

  1. 窗口图标与系统托盘pdesktop.SetIcon 设置窗口标题栏/任务栏图标(支持 res: 内置资源与本地图片文件);pdesktop.SetTaskIcon 添加/修改/删除系统托盘图标并可带悬浮提示文字,托盘上的鼠标点击经 OnTaskLBDown / OnTaskLBUp / OnTaskRBDown / OnTaskRBUp / OnTaskDBClick 五个事件回调到脚本。
  2. 进程启动函数补齐 Shell / ShellMin(以普通/最小化方式重启宿主实例)、ShellOpen(用系统默认浏览器打开网址)、RunExe(启动外部程序)。
  3. 字体名真实生效font=名称,宽,高,粗细 中的字体名现在按系统已安装字体解析(如 隶书、Webdings),符号字体自动按符号编码映射;此前名称被静默忽略、一律用默认字体。
  4. 悬浮提示鼠标悬停在带 tooltips 文字的对象上时,自动触发 ToolTipsObj 的 OnShowTips / OnHide 事件,提示内容随悬浮对象自动切换。
  5. 背景图片平铺三模式补齐 himgtile 横向平铺、vimgtile 纵向平铺、imgscale 按原始尺寸贴图三个背景图片模式。
  6. OnEdit 事件修复修复编辑框 OnEdit 事件永不触发的问题,编辑回调现在正常进入脚本。

2026-10-03 · 系统控件修复批次

  1. SysBtn 按钮文字不显示修复 new SysBtn(...) 大尺寸按钮背景、边框正常但文字不显示的问题:按钮内部的尺寸变量被其他控件实例污染,文字被画到按钮表面之外;现已隔离修复,文字正常显示。
  2. SysBtn 字号与居中按钮文字字号固定为与 CmdBtn 一致,不再随按钮尺寸缩放(此前 160×20 的按钮会显示 19px 大字);文字改为水平、垂直双向居中,此前固定绘制在左上角。
  3. SysDlg 标题垂直居中对话框标题文字按对话框最终尺寸精确垂直居中,此前整体偏上 8px。
  4. _T 文字悬停异常修复鼠标划过 _T 文字时文字被加亮加粗的问题,悬停不再误触发其他控件的高亮样式。
  5. SysDlg 悬停背景消失修复鼠标划过 SysDlg 对话框时背景纹理消失、移开后不再恢复的问题,控件间的事件处理不再相互串扰。

2026-10-02 · 拾取操作面板与系统补全

  1. 拾取操作面板调试拾取模式新增画面内操作面板:选父、删除、显示/隐藏、子对象列表、对象树五个按钮,选中对象后可直接在运行画面上查看与操作。
  2. 面板自动退避按住 Ctrl 拾取时手势滑入面板区域,面板自动退避到左上角,不阻挡对右上角对象的拾取;松开 Ctrl 后面板留在原地,拾取位置离开默认区域时自动回位。
  3. 拾取信息自动刷新选中对象的信息每 500ms 自动刷新;脚本删除已选对象后描边与面板信息自动清除,不残留。
  4. 脚本报错可见化脚本运行错误以单行帧输出到插件运行时面板,包含文件、行、列与错误信息;此前被静默吞掉的错误现在可见,重复错误自动去重防刷屏。
  5. 绘制内建补全补齐 Clear / PutPixel / Rectangle / DrawObj 四个绘制内建函数,SysBtn 标题栏小按钮的自绘管线打通,按钮可以正常画出。
  6. 系统函数补全补齐 CenterWindow(对话框屏幕居中)、ptxt.anti 属性与 m_pSysPtText 机制,系统脚本启动不再报「函数/属性未找到」。

2026-10-02 · 对象调试拾取(新功能)

  1. · 键对象调试按 · 键开启/关闭对象调试模式;开启后按住 Ctrl 悬停对象,引擎以白框黑边描出选中对象,插件 RT 面板实时显示其类名、pid、位置、尺寸、显示状态等信息,悬停空白处显示 desktop 本身。
  2. 切换状态提示按 · 切换时 RT 面板显示「· 对象调试已开启 / 已关闭」,关闭时自动擦除描边并清空信息区。
  3. 中文输入法 · 键修复修复中文输入法下按 · 键无法切换调试模式的问题:输入法对 ANSI 窗口经 WM_IME_CHAR 以 GBK 内码提交字符,此前只处理了 WM_CHAR 通道;现在两条通道都会映射为切换键,并去重防双发。
  4. 插件 0.5.21RT 面板新增拾取信息区块与模式提示,trace 列表与拾取信息分区显示。

2026-10-01 · 功能键与 About 对话框

  1. F1 About 对话框F1 呼出关于对话框(此前按了无反应),再按 F1 或 Esc/Enter 关闭;支持 pdesktop.SetAbout / SetAboutImg 自定义文字与图片;caption 模式右下角热区也可呼出。
  2. F2 诊断面板补齐帧率、光标、显示/更新时间、错误数、对象数、方法数、绘制命令数、内存等信息面板;统一 12px 字号竖排「名称:值」,修复前几行文字错位重叠。
  3. F3 显示冻结F3 冻结/恢复画面:冻结时画面停在最后一帧,对象更新照常进行,鼠标消息暂停派发。
  4. F5 重启F5 或脚本 pdesktop.ReStart() 触发进程内重载:销毁全部对象并于下一帧重跑启动脚本,修复此前「按了没重启」的问题。
  5. F7 截图截图格式由 JPEG 改为 PNG,保存到启动脚本目录的 screenshots/ 文件夹;水印改为 FcBox 半透明文字,去掉背景圆角矩形。
  6. 其他修复补齐 pdesktop.SetWindowText() 函数(此前脚本调用静默失败);About 对话框横线左右留白对称。

2026-09-30 · 启动器与运行时修复批次

  1. CmdBtn 系统按钮修复补齐按钮依赖的 10 个绘制内建函数与 frame 三态贴图参数,脚本类成员变量改为每实例独立,new CmdBtn(...) 可正常绘制并响应点击。
  2. 按钮圆角四角透明修复 CmdBtn 圆角处被渐变方块填充的缺陷,圆弧外的区域恢复透明。
  3. 按钮文字垂直居中文本绘制基线对齐 Windows GDI 语义,修复按钮文字整体偏低、不居中的问题。
  4. launcher 窗口行为修复 caption=1 时窗口内容不显示;修复 fixed 属性双向缺陷:fixed=0 恢复可调尺寸,fixed=1 不再丢失边框。
  5. 背景绘制修复roundbar 支持真圆角与可选描边,underline 下划线位置归位,roundhalf 半圆配色修正。
  6. 颜色解析修复RGB() 返回类型与 11 处颜色参数站点重打包,btnup/btndown/dotcolor 颜色不再串色,bk:=color(RGB(..)) 正常绘制。
  7. 热键触发修复增加虚拟键码与键名翻译,脚本按名字注册的热键在 launcher 中可以正常触发。
  8. pdesktop.fps帧率属性统一为小写 fps,旧的大写写法 FPS 仍兼容。

2026-09-19 · 运行时 0.1.0

  1. round4_3 圆角矩形背景bk:=round4_3 按半径绘制圆角矩形:填充色 2/3 强度源覆盖、可选描边、内缩/外扩边距均正常;修复负内缩整体不显示与正内缩四角通透斜线(圆弧描边 alpha 溢出)两个缺陷,已经用户验收。
  2. imgtile 图像平铺bk:=imgtile 按帧尺寸在对象矩形内平铺,9 帧自动九宫格贴图;方法与对象透明度相乘,支持 BMP/PNG/GIF,加载失败用背景色兜底;图片背景已在 Windows 原生 CPU 启动器验证,GPU 图片背景尚未验收,himgtile/vimgtile/imgscale 仍为占位。
  3. _T 文本居中与动画恢复半透明加亮、向上飘出和淡出删除;以整段文本居中,中文缺字时回退到 TTF 字体。
  4. 窗口缩放与运行版本绘制前同步客户区尺寸与布局,缩放不再重建或叠加 _T,已有动画保持进度;launcher 与 objsys 统一使用 0.1.0 三段式版本号并输出启动日志。
  5. colorex 与 glowcolorex 正确使用对象透明度与 RGB 颜色;glow 修复颜色偏差并恢复持续闪烁,flashspeed 表示闪烁速度而非次数。
  6. ellipse 动态尾迹将“椭圆环绕”统一命名为 ellipse,恢复两段对称的渐隐尾迹;支持负边距向外扩展,并遵守父容器裁剪。
  7. rect 双颜色边框上边和左边使用第一色,下边和右边使用第二色;修复 RGB 转换、默认第二色及边距绘制。
  8. dlg 图片背景支持 res$dlgbk.gif 与 res$defbk.gif 内置资源、9/10 图块平铺和顶部居中装饰;方法与对象透明度相乘,透明区域、裁剪及缩放后显示正确,并释放不再使用的纹理。