Coder Social home page Coder Social logo

yukimiscript's Introduction

Yukimi Script

为描述视觉小说而设计的领域专用语言。

参见Github Wiki页面

适用于

  • 视觉小说
  • 文字类游戏
  • 需要对话演出的游戏

特点

  • 类似krkr的键值对传参和flags传参语法。
  • 按行Parse,便于分析。
  • 以可用性为优先。
  • 可选的静态强类型系统。
  • 可编译到多个目标。

谁在使用?

弦语蝶梦游戏工作室 - 《空梦》

设计原则

  • 按行Parse
  • 易于实现实时可视化编辑器
  • 可以实时检查任意点状态
  • 引入的特性需要切实解决实际开发中遇到的问题

安装

你可以在这里安装用于Visual Studio Code的YukimiScript代码高亮工具。

在.NET中通过NuGet安装YukimiScript命令行工具

dotnet tool install -g YukimiScript.CommandLineTool

手动安装不依赖.NET运行时的YukimiScript命令行工具

Release页面下载对应平台的可执行文件并将其拷贝到可被命令行环境访问的目录中。

在.NET项目中引用YukimiScript Parser

dotnet add package YukimiScript.Parser

概览

- extern systemAPI_sleep_begin force  # 在这里定义宿主命令
- extern systemAPI_sleep_end
- extern systemAPI_sleep time=1 
- extern systemAPI_jumpToSection target
- extern name

- macro jumpToSection target
@__diagram_link_to target
@systemAPI_jumpToSection target

- scene "entrypoint"
@jumpToSection "场景 第一个场景"

- macro wait time=1 force=false
@systemAPI_sleep_begin force    # 这里的内容将会被展开
@systemAPI_sleep time
@systemAPI_sleep_end

- scene "场景 第一个场景"
y:你好~我叫[name],[wait --time 1 --force]<ani 很高兴认识你!> \
欢迎你来我家里玩~
@wait 3
y:感谢您使用由纪美脚本语言!
@wait

# 以上文字内容编译为
# @__text_begin --character "y"
# @__text_type --text "你好~我叫"
# @name
# @__text_type --text ","
# @wait --time 1 --force true
# @__text_pushMark --mark ani
# @__text_type --text "很高兴认识你!"
# @__text_popMark --mark ani
# @__text_end --hasMore true
# @__text_begin
# @__text_type "欢迎你来我家里玩~"
# @__text_end --hasMore false

# @__text_begin --character "y"
# @__text_type --text "感谢您使用由纪美脚本语言!"
# @__text_end


- scene "场景 第一个场景 的子场景" inherit "场景 第一个场景"
# 这个场景的状态机将会继承于"场景 第一个场景".

yukimiscript's People

Contributors

seng-jik avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

turbotu zerxz hzqd

yukimiscript's Issues

宏内字符串格式化语法

允许实现类似以下语法:

- extern e x
- macro f x
@__type x string
@__type x symbol
@e $"abc{x}def"

- scene "main"
@f true

消除宏后得到:

- extern e x
- scene "main"
@e "abctruedef"

ykmc命令行变更

ykmc [-l<libName>] [-L<libdir>] [-o[target] <outputFile>] <inputFiles...>

Targets:

  • (default YukimiScript Binary File)
  • lua
  • pymo
  • charset
  • dgml
  • mermaid

状态追踪器

增加以下系统外部定义

# 定义状态变量
- extern __state_define variable defaultValue

# 设置状态变量为某类型
- extern __state_type variable type

# 设置状态变量为某symbol类型
- extern __state_type_symbol variable symbol

# 重设状态变量为默认值
- extern __state_reset variable

# 设置状态变量
- extern __state_set variable value

# 将状态变量加到已有的变量上
- extern __state_add variable value

# 在这里拍摄一次状态快照
- extern __state_checkpoint

# 移除一个状态
- extern __state_remove variable

# push一个状态
- extern __state_push variable

# pop一个状态
- extern __state_pop variable

# push全部状态
- extern __state_push_all

# pop全部状态
- extern __state_pop_all

调试信息改进

  • 输出“打开宏、关闭宏、宏参数”信息,以打印宏调用栈
    • Lua
    • ykmbin

文本语法潜在问题

  • 宏内的文本语法(包括代码块和标记块)可否正常处理
  • 文本语法换行后严禁使用角色标记,并使用专门的换行extern。

Unity支持

  • YukimiScript Importer
  • YukimiScript Runtime
    • RIFF Reader
  • Compiling Pipeline Module
  • Unity Package

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.