Coder Social home page Coder Social logo

azusa's People

Contributors

hattoriheizou avatar ytcs avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

azusa's Issues

.

..

AZUSA架構

azusa1

如果沒有甚麼問題的話我就按這個來了... ...

進展報告

  1. MUTAN 解釋器除了函式回傳還沒有決定具體實施方法外, 已基本完成。本週會繼續進行各種測試除錯。函式回傳的功能暫時擱置。
  2. IOServer 原型大體完成, 套用了以前 IOChannel 和 ProcessServer的源碼, 分別改成 IOPortedPrc 和 ProcessManager, 並作出了調整。所有 IOPortedPrc 應經由 ProcessManager 創建, 而不是像以前那樣直接創建。
  3. 進程之間的溝通模式已有大體規劃, 本週會開始嘗試結合 MUTAN 原型和 IOServer 原型作成 AZUSA 原型, 並作成各種 dummy (dummyLive2D, dummyAI, dummySpchRecg) 以驗證可行性。

protoMUTAN 進展報告

protoMUTAN 已完成超過一半, 暫時還差 bug tracking 和區塊嵌套的部分, 預計下個週末可以完成。

protoMUTAN 語法:

表達式:
基本與其他常用語言大同小異
支持整數和字串, 可能會將整數改為 double
括號 : ( , )
邏輯運算 : & , | , = , != , >= ,<= ,> , < , ~ (not)
算術運算 : + , - , * , /
字串連接 : +
字串 : Nyan , "Nyan" (無雙引號的話, 在有同名變量的情況下會優先當成變量處理)

例: 1+1 ( := 2 ), MUTAN="MUTAN" ( := true ,如無名為 MUTAN 的變量 ) ,
~(3>2)&true|false ( := false)

宣稱:
宣稱變量或改變變量的值
例: i=0 , i=i+1

函式:
調用外部或內部函式
例: CLOSEFRM(), SAY(greeting,happy)

組合句:
宣稱和函式可用 ';' 組合
例: SAY(understood);START(bili)

條件式:
組合句可加上條件
例: STATUS=NORMAL?SAY(understood);START(bili)

循環:
條件式/組合句可加上 '@' , 該句會被循環執行
例: @i=i+1;i>3?BREAK();PRINT(i);WAIT(1000)

區塊

命名區塊:
.(名稱){
(內容)
}
例:
.greet{
SAY(hi);
EMOTION(smile);
}

條件區塊:
.(條件){
(內容)
}
例:
STATUS=NORMAL{
SAY(hi);
EMOTION(smile);
}

循環區塊:
@{
(內容)
}
例:
@{
i=i+1
i>3?BREAK()
PRINT(i)

WAIT(1000)
}

內存泄漏

protoAZUSA 經測試有嚴重內存泄漏問題... 懷疑是 IOPortedPrc 釋放得不好, 另外執行指令時也有泄漏, 原因不明

protoMUTAN 進展報告

protoMUTAN 已完成超過一半, 暫時還差 bug tracking 和區塊嵌套的部分, 預計下個週末可以完成。

protoMUTAN 語法:

表達式:
基本與其他常用語言大同小異
支持整數和字串, 以後預乎需要可能將整數改為 double
括號 : ( , )
邏輯運算 : & , | , = , != , >= ,<= ,> , < , ~ (not)
算術運算 : + , - , * , /
字串連接 : +
字串 : Nyan , "Nyan" (無雙引號的話, 在有同名變量的情況下會優先當成變量處理)

例: 1+1 ( := 2 ), MUTAN="MUTAN" ( := true ,如無名為 MUTAN 的變量 ) ,
~(3>2)&true|false ( := false)

宣稱:
宣稱變量或改變變量的值
例: i=0 , i=i+1

函式:
調用外部或內部函式
例: CLOSEFRM(), SAY(greeting,happy)

組合句:
宣稱和函式可用 ';' 組合
例: SAY(understood);START(bili)

條件式:
組合句可加上條件
例: STATUS=NORMAL?SAY(understood);START(bili)

循環:
條件式/組合句可加上 '@' , 該句會被循環執行
例: @i=i+1;i>3?BREAK();PRINT(i);WAIT(1000)

區塊

命名區塊:
.(名稱){
(內容)
}
例:
.greet{
SAY(hi);
EMOTION(smile);
}

條件區塊:
(條件){
(內容)
}
例:
STATUS=NORMAL{
SAY(hi);
EMOTION(smile);
}

循環區塊:
@{
(內容)
}
例:
@{
i=i+1
i>3?BREAK()
PRINT(i)

WAIT(1000)
}

AZUSA的工作流程,開發目標

一些初步想法 @zhx79513

流程:

  1. 載入各輸入引擎, 同時開始監控*
  2. 載入處理引擎 (AI), 同時開始監控*
  3. 載入輸出介面, 同時開始監控*
  4. 執行啟動腳本
  5. 接駁輸入引擎和處理引擎, 各引擎開始運作, AZUSA 主要根據處理引擎的要求進行操作
    6 i. 如指令需調用到函式, 則要創建與函式對應的進程並對接、監控, 在進程卡死時介入
    ii. 如指令需創建線程, 則實行監控, 並在線程卡死時介入

*如果初始化失敗可以向 AZUSA 發報錯指令, AZUSA 會發出提示並退出

AZUSA 的開發目標:

  1. 能解析腳本檔 (MUTAN 語法)
  2. 能與外部進程(引擎或函式)進行對接, 解析外部進程發出的指令, 並對詢問作出回應
  3. 能對外部進程的運行狀態進行監控和控制
  4. 能管理並維持一個足夠安全的變量環境, 供各進程存取
  5. 能創建和管理線程 (用以實現循環執行的腳本)

Azusa 工作提案 #1

為推動開發進度, 我向開發組提出以下工作提案:

  1. 決定架構, 基於 sleepwalking 君提出的架構, 由 Cronus 君進行審定, 提出修改並最終定案。
    主要考慮為兩點, 可擴充性 和 便利性, 不能比現有的架構更低。
  2. 決定外部引擎或函式跟 AZUSA 的具體對接方式。現有方式是為 exe 建立隱藏 shell 利用標準輸入輸出口進行對接。交流內容為 Mutan 語。
    我提議開發組儘快決定新架構下的對接方式, 並細化到技術層面, 以便開展這方面的開發工作。
  3. 就開發所使用的語言達成共識。主要考慮點為 AZUSA 的可移植性現階段是否重要,以及開發難度和開發周期的問題。考慮到現有源碼大部分為 C# , 而且開發群對 C 語言熟悉的人不佔大多數這兩點, 是否會造成過多不利因素。我提議開發組就這一點重新搜集各組員的意見並達成結論。

開發組各組員以後可以類似格式發工作提案,協助全組整理方向並推動開發進程。希望這種協作模式能行吧... 既然大家都加入了, 我想肯定是對這個項目的理念有所認同並願意為之付出的,恐怕大家都不想看到它就此一直荒廢...

p.s.
現在我在嘗試為對整個計劃進行組織化, 把各方面的人才進行分類集中, 以後如果需要各方面的支援, 比如畫師, 網頁, 伺服器, 調音師, 建模師等等, 可以提出, 參與計劃的基本甚麼方面的高手都有, 只是現在沒有組織, 很是混亂, 我會嘗試儘快改善這一問題...

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.