plugin & note
parent
3ef14f7ded
commit
39b2503568
|
@ -1,4 +1,6 @@
|
||||||
{
|
{
|
||||||
"accentColor": "",
|
"accentColor": "",
|
||||||
"baseFontSize": 15
|
"baseFontSize": 15,
|
||||||
|
"theme": "obsidian",
|
||||||
|
"cssTheme": "Minimal"
|
||||||
}
|
}
|
|
@ -1,3 +1,5 @@
|
||||||
[
|
[
|
||||||
"obsidian-better-command-palette"
|
"obsidian-better-command-palette",
|
||||||
|
"colored-tags",
|
||||||
|
"html-server"
|
||||||
]
|
]
|
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"chroma": 128,
|
||||||
|
"lightness": 0,
|
||||||
|
"palette": 16,
|
||||||
|
"seed": 5,
|
||||||
|
"knownTags": {
|
||||||
|
"GODOT": 1,
|
||||||
|
"Linux": 2,
|
||||||
|
"worldtree": 3,
|
||||||
|
"tes": 4,
|
||||||
|
"todo": 5
|
||||||
|
},
|
||||||
|
"_version": 2
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"id": "colored-tags",
|
||||||
|
"name": "Colored Tags",
|
||||||
|
"version": "3.0.1",
|
||||||
|
"minAppVersion": "0.15.0",
|
||||||
|
"description": "Colorizes tags in different colors. Colors of nested tags are mixed with parent tags. Text color contrast is automatically matched to comply with AA level of WCAG 2.1.",
|
||||||
|
"author": "Pavel Frankov",
|
||||||
|
"authorUrl": "https://github.com/pfrankov",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
"port": 8080,
|
||||||
|
"hostname": "0.0.0.0",
|
||||||
|
"defaultFile": "",
|
||||||
|
"startOnLoad": true,
|
||||||
|
"useRibbonButons": true,
|
||||||
|
"indexHtml": "<html>\n<head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\"\n content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover\">\n <title>#VAR{HTML_TITLE}</title>\n <link rel=\"shortcut icon\" href=\"#VAR{FAVICON_URL}\">\n <link href=\"#VAR{CSS_FILE_URL}\" type=\"text/css\" rel=\"stylesheet\">\n <base href=\"/\">\n</head>\n<body\n class=\"#VAR{THEME_MODE} mod-windows is-frameless is-maximized is-hidden-frameless obsidian-app show-inline-title show-view-header\"\n style=\"--zoom-factor:1; --font-text-size:16px;\">\n <div class=\"app-container\">\n <div class=\"horizontal-main-container\">\n <div class=\"workspace\">\n <div class=\"workspace-split mod-vertical mod-root\">\n <div class=\"workspace-tabs mod-top mod-top-left-space mod-top-right-space\">\n <div class=\"workspace-tab-container\">\n <div class=\"workspace-leaf\">\n <div class=\"workspace-leaf-content\" data-type=\"markdown\" data-mode=\"preview\">\n <div class=\"view-content\">\n <div class=\"markdown-reading-view\" style=\"width: 100%; height: 100%;\">\n <div\n class=\"markdown-preview-view markdown-rendered node-insert-event is-readable-line-width allow-fold-headings show-indentation-guide allow-fold-lists\"\n tabindex=\"-1\" style=\"tab-size: 4;\">\n <div class=\"markdown-preview-sizer markdown-preview-section\" style=\"padding-bottom: 369px; min-height: 1158px;\">\n <div class=\"markdown-preview-pusher\" style=\"width: 1px; height: 0.1px; margin-bottom: 0px;\"></div>\n <div class=\"mod-header\">\n <div class=\"inline-title\" contenteditable=\"true\" spellcheck=\"false\" tabindex=\"-1\" enterkeyhint=\"done\">#VAR{RENDERED_CONTENT_FILE_NAME}\n </div>\n #VAR{RENDERED_CONTENT}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</body>\n</html>",
|
||||||
|
"htmlReplaceableVariables": [
|
||||||
|
{
|
||||||
|
"varName": "HTML_TITLE",
|
||||||
|
"varValue": "Obsidian Html Server"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"varName": "FAVICON_URL",
|
||||||
|
"varValue": "//obsidian.md/favicon.ico"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"varName": "CSS_FILE_URL",
|
||||||
|
"varValue": "/.obsidian/plugins/obsidian-http-server/app.css"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"showAdvancedOptions": false,
|
||||||
|
"useSimpleAuth": false,
|
||||||
|
"simpleAuthUsername": "obsidian",
|
||||||
|
"simpleAuthPassword": "0b2cd1ba70b8b332"
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"id": "html-server",
|
||||||
|
"name": "Html Server",
|
||||||
|
"version": "1.0.7",
|
||||||
|
"minAppVersion": "0.15.0",
|
||||||
|
"description": "This plugin lets you spin up a local http server to access your vault via a web browser from any device in your network.",
|
||||||
|
"author": "Pr0dt0s",
|
||||||
|
"authorUrl": "https://github.com/Pr0dt0s",
|
||||||
|
"fundingUrl": {
|
||||||
|
"Buy Me a Coffee": "https://www.buymeacoffee.com/pr0dt0s",
|
||||||
|
"Paypal": "https://www.paypal.com/donate/?business=JGQK6YQBWZJ4A¤cy_code=USD"
|
||||||
|
},
|
||||||
|
"isDesktopOnly": true
|
||||||
|
}
|
|
@ -0,0 +1,67 @@
|
||||||
|
.settings-error-element {
|
||||||
|
font-weight: bold;
|
||||||
|
color: var(--background-modifier-error);
|
||||||
|
}
|
||||||
|
|
||||||
|
.with-error {
|
||||||
|
border-color: var(--text-error) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.with-success {
|
||||||
|
border-color: var(--text-success) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.w100p {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.h350 {
|
||||||
|
height: 350px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-align-center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.justify-content-center {
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.html-form-container {
|
||||||
|
width: 100%;
|
||||||
|
display: grid;
|
||||||
|
justify-content: center;
|
||||||
|
padding-bottom: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.html-login-form {
|
||||||
|
width: 20%;
|
||||||
|
min-width: 300px;
|
||||||
|
max-width: 450px;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.html-login-form .html-login-form-label{
|
||||||
|
font-size: 1.1em;
|
||||||
|
justify-content: center;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.html-login-form .setting-item-control input{
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.html-login-form .html-form-button{
|
||||||
|
width: 100%;
|
||||||
|
/* justify-content: center; */
|
||||||
|
}
|
||||||
|
|
||||||
|
.html-login-form .html-form-button button{
|
||||||
|
width: 100%;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.http-server-ribbon-stop-button {
|
||||||
|
color: var(--text-accent);
|
||||||
|
opacity: 0.95;
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"name": "Minimal",
|
||||||
|
"version": "7.3.4",
|
||||||
|
"minAppVersion": "1.1.9",
|
||||||
|
"author": "@kepano",
|
||||||
|
"authorUrl": "https://twitter.com/kepano",
|
||||||
|
"fundingUrl": "https://www.buymeacoffee.com/kepano"
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
|
@ -4,28 +4,28 @@
|
||||||
"type": "split",
|
"type": "split",
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"id": "71e57ba867937b57",
|
"id": "00c5403030b32171",
|
||||||
"type": "tabs",
|
"type": "tabs",
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"id": "5e6e04e0870d7cdb",
|
"id": "206697680cbd422c",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "markdown",
|
"type": "markdown",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "TODO模板.md",
|
"file": "Today Todo.md",
|
||||||
"mode": "source",
|
"mode": "source",
|
||||||
"source": false
|
"source": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "a2149cf1fbaf30db",
|
"id": "31175f6045aa6e9b",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "markdown",
|
"type": "markdown",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "目的达成流程PDCA.md",
|
"file": "TagSystem.md",
|
||||||
"mode": "source",
|
"mode": "source",
|
||||||
"source": false
|
"source": false
|
||||||
}
|
}
|
||||||
|
@ -82,7 +82,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"direction": "horizontal",
|
"direction": "horizontal",
|
||||||
"width": 200
|
"width": 296.5
|
||||||
},
|
},
|
||||||
"right": {
|
"right": {
|
||||||
"id": "94db76309491c04e",
|
"id": "94db76309491c04e",
|
||||||
|
@ -98,7 +98,7 @@
|
||||||
"state": {
|
"state": {
|
||||||
"type": "backlink",
|
"type": "backlink",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "目的达成流程PDCA.md",
|
"file": "TagSystem.md",
|
||||||
"collapseAll": false,
|
"collapseAll": false,
|
||||||
"extraContext": false,
|
"extraContext": false,
|
||||||
"sortOrder": "alphabetical",
|
"sortOrder": "alphabetical",
|
||||||
|
@ -115,7 +115,7 @@
|
||||||
"state": {
|
"state": {
|
||||||
"type": "outgoing-link",
|
"type": "outgoing-link",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "目的达成流程PDCA.md",
|
"file": "TagSystem.md",
|
||||||
"linksCollapsed": false,
|
"linksCollapsed": false,
|
||||||
"unlinkedCollapsed": true
|
"unlinkedCollapsed": true
|
||||||
}
|
}
|
||||||
|
@ -138,16 +138,15 @@
|
||||||
"state": {
|
"state": {
|
||||||
"type": "outline",
|
"type": "outline",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "目的达成流程PDCA.md"
|
"file": "TagSystem.md"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
"currentTab": 3
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"direction": "horizontal",
|
"direction": "horizontal",
|
||||||
"width": 300,
|
"width": 297.5,
|
||||||
"collapsed": true
|
"collapsed": true
|
||||||
},
|
},
|
||||||
"left-ribbon": {
|
"left-ribbon": {
|
||||||
|
@ -159,25 +158,38 @@
|
||||||
"templates:Insert template": false,
|
"templates:Insert template": false,
|
||||||
"command-palette:Open command palette": false,
|
"command-palette:Open command palette": false,
|
||||||
"random-note:Open random note": false,
|
"random-note:Open random note": false,
|
||||||
"workspaces:Manage workspace layouts": false
|
"workspaces:Manage workspace layouts": false,
|
||||||
|
"html-server:Turn Http Server On": false,
|
||||||
|
"html-server:Turn Http Server Off": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"active": "a2149cf1fbaf30db",
|
"active": "31175f6045aa6e9b",
|
||||||
"lastOpenFiles": [
|
"lastOpenFiles": [
|
||||||
|
"Today Todo.md",
|
||||||
|
"TagSystem.md",
|
||||||
|
"Aseets/TagSystem.drawio.png",
|
||||||
|
"TODO.md",
|
||||||
|
"Godot GDScript Trick.md",
|
||||||
|
"Untitled Kanban.md",
|
||||||
|
"2023-11-01.md",
|
||||||
|
"GDShader.md",
|
||||||
|
"foragerlike.md",
|
||||||
|
"TODO模板.md",
|
||||||
|
"vim.md",
|
||||||
|
"积极心理.md",
|
||||||
|
"Think in UML.canvas",
|
||||||
|
"linux安装与应用.md",
|
||||||
|
"README.md",
|
||||||
|
"目的达成流程PDCA.md",
|
||||||
|
"Git.md",
|
||||||
|
"Godot Shader.md",
|
||||||
|
"Godot 中文教程.md",
|
||||||
"Aseets/Pasted image 20231028133136.png",
|
"Aseets/Pasted image 20231028133136.png",
|
||||||
"Aseets/Pasted image 20231028133035.png",
|
"Aseets/Pasted image 20231028133035.png",
|
||||||
"TODO模板.md",
|
|
||||||
"目的达成流程PDCA.md",
|
|
||||||
"TMP.md",
|
"TMP.md",
|
||||||
"Godot 中文教程.md",
|
|
||||||
"lazygit.md",
|
"lazygit.md",
|
||||||
"Linux Setup.md",
|
"Linux Setup.md",
|
||||||
"linux安装与应用.md",
|
|
||||||
"Lunarvim.md",
|
"Lunarvim.md",
|
||||||
"README.md",
|
|
||||||
"Think in UML.canvas",
|
|
||||||
"TODO.md",
|
|
||||||
"积极心理.md",
|
|
||||||
"dwm桌面.md",
|
"dwm桌面.md",
|
||||||
"WorldTreeModule.md",
|
"WorldTreeModule.md",
|
||||||
"Watching List.md"
|
"Watching List.md"
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 49 KiB |
|
@ -0,0 +1 @@
|
||||||
|
[【转载】【Godot4】常见的视觉特效着色器技术 - Common VFX Shader Techniques ft. Godot_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1C84y1R7KD/?spm_id_from=333.1007.tianma.1-3-3.click&vd_source=ba468568caebc92479698e83c28be8b0)
|
20
TODO.md
20
TODO.md
|
@ -1,19 +1,7 @@
|
||||||
## 2013-10-27
|
## Wish List
|
||||||
|
- [ ] English(Every Day) this will be good
|
||||||
- [x] 做好 Signal up 的解决方案文档
|
- [ ] Youtube
|
||||||
- [x] 把游戏的UI流程进行一个梳理与绘图
|
|
||||||
- [x] 队伍面板
|
|
||||||
- [ ] 商店,钓鱼,采集,等面板
|
|
||||||
- [x] 战斗UI
|
|
||||||
- [x] 本地化功能模块
|
|
||||||
- [x] 探索
|
|
||||||
- [x] 拓展
|
|
||||||
- [ ] 存档模块分析
|
|
||||||
- [ ] 编辑器开发
|
|
||||||
- [ ] 类似实现标签模块
|
|
||||||
|
|
||||||
|
|
||||||
- [ ] Fog调优
|
|
||||||
|
|
||||||
|
[Today Todo](Today%20Todo.md)
|
||||||
## Reference
|
## Reference
|
||||||
[项目模块](./WorldTreeModule.md)
|
[项目模块](./WorldTreeModule.md)
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
![](TagSystem.drawio.png)
|
|
@ -2,10 +2,21 @@
|
||||||
"nodes":[
|
"nodes":[
|
||||||
{"id":"295515b74130b4c1","type":"group","x":60,"y":-360,"width":940,"height":1440,"label":"基于需求开发(面向对象开发)"},
|
{"id":"295515b74130b4c1","type":"group","x":60,"y":-360,"width":940,"height":1440,"label":"基于需求开发(面向对象开发)"},
|
||||||
{"id":"f7a5a05e3b3adbee","type":"group","x":-880,"y":-360,"width":907,"height":1440,"label":"基于顺序流程开发 (面向流程开发)"},
|
{"id":"f7a5a05e3b3adbee","type":"group","x":-880,"y":-360,"width":907,"height":1440,"label":"基于顺序流程开发 (面向流程开发)"},
|
||||||
{"id":"5598149665daee13","type":"group","x":-96,"y":-840,"width":246,"height":380,"label":"现实因果"},
|
|
||||||
{"id":"01381dfb0d849945","type":"group","x":177,"y":120,"width":707,"height":180,"label":"节点(对象)"},
|
{"id":"01381dfb0d849945","type":"group","x":177,"y":120,"width":707,"height":180,"label":"节点(对象)"},
|
||||||
|
{"id":"5598149665daee13","type":"group","x":-96,"y":-840,"width":246,"height":380,"label":"现实因果"},
|
||||||
{"id":"e55941a9e3bc5761","type":"text","text":"节点A","x":218,"y":-100,"width":111,"height":60},
|
{"id":"e55941a9e3bc5761","type":"text","text":"节点A","x":218,"y":-100,"width":111,"height":60},
|
||||||
{"id":"3dd7047c8798b5be","type":"text","text":"因","x":98,"y":-320,"width":67,"height":60},
|
{"id":"3dd7047c8798b5be","type":"text","text":"因","x":98,"y":-320,"width":67,"height":60},
|
||||||
|
{"id":"c33ab99b87004926","type":"text","text":"果","x":898,"y":-320,"width":67,"height":60},
|
||||||
|
{"id":"4ae0834068c8c432","type":"text","text":"封装/特性/继承/聚合/多态","x":584,"y":220,"width":280,"height":50},
|
||||||
|
{"id":"02979079622fc748","type":"text","text":"节点D","x":731,"y":-100,"width":111,"height":60},
|
||||||
|
{"id":"baeb4b1fe957ac3e","type":"text","text":"节点C","x":550,"y":-175,"width":111,"height":60},
|
||||||
|
{"id":"6e4257fdd05e9ae8","type":"text","text":"功能计算","x":444,"y":140,"width":160,"height":50},
|
||||||
|
{"id":"7aab729a19843255","type":"text","text":"节点B","x":358,"y":-175,"width":111,"height":60},
|
||||||
|
{"id":"301c14f628e0d44e","type":"text","text":"节点E","x":390,"y":15,"width":111,"height":60},
|
||||||
|
{"id":"6cd0aa5fd7e08b73","type":"text","text":"数据","x":197,"y":140,"width":131,"height":50},
|
||||||
|
{"id":"be3e0105f3877ef9","type":"text","text":"- 对象眼界狭窄, 只关心和自己相关的几个对象, 不关心和自己无关的\n- 没有特性的可以称之为类, 被赋予特性后, 可以被称之为实例\n- 需求发生改变时, 一般是直接新增类. 不会大幅度的影响其他对象.\n- 举例\n\t- 面向对象就像是把建造一辆车这个目标, 分解成建造每一个零部件后组装\n\t- 当车辆更新换代的时候, 用于组装的类会发生变更(可以重载或是继承), 也会新增一些新的对象类型(同样可以是继承和承载)","x":233,"y":660,"width":583,"height":260},
|
||||||
|
{"id":"b78f0a5a2d476e66","type":"text","text":"``` python\nfunc main(i)\n\ta = nodeA.do(i)\n\tb = nodeB.do(a)\n\te = nodeE.do(a)\n\tf = nodeF.do(b,a,e)\n\tc = nodeC.do(b)\n\to = nodeD.do(c,f)\n\treturn o\n```","x":233,"y":360,"width":583,"height":280},
|
||||||
|
{"id":"67cc784857841adc","type":"text","text":"特性","x":320,"y":220,"width":160,"height":50},
|
||||||
{"id":"e151bed3b296b893","type":"file","file":"WorldTreeModule.md","x":2080,"y":-352,"width":1120,"height":2132},
|
{"id":"e151bed3b296b893","type":"file","file":"WorldTreeModule.md","x":2080,"y":-352,"width":1120,"height":2132},
|
||||||
{"id":"43c25dad51fed755","type":"text","text":"## 流程划分\n- 进入游戏\n- 新建存档\n- 配置角色存档\n- 读取存档\n- 进入主场景\n- 打开战斗场景\n- 关闭战斗场景\n- 退出主场景\n- 写入存档\n- 游戏结束","x":1760,"y":-352,"width":192,"height":363},
|
{"id":"43c25dad51fed755","type":"text","text":"## 流程划分\n- 进入游戏\n- 新建存档\n- 配置角色存档\n- 读取存档\n- 进入主场景\n- 打开战斗场景\n- 关闭战斗场景\n- 退出主场景\n- 写入存档\n- 游戏结束","x":1760,"y":-352,"width":192,"height":363},
|
||||||
{"id":"c38d1a12d50745c6","type":"text","text":"## 大地图解决方案\n\n## 必做方案\n- 从美术那里获得`大地图`(比如一个种族的地图)\n- 程序切图变成`小地图`且批量命名\n\n### 普通 2D 方案\n- 详情参考`2DPathFindExample'\n- 配置流产\n\t- 一张`小地图` 可以作为一个 `场景` 使用\n\t- 每个场景中, 配置 `物理碰撞` `AI寻路` `城池` `副本` 等等\n- 此做法类似我们早期使用Unity实现的方法思路, 但是他有更方便的 2D 功能\n#### 优劣分析\n- 优: 自定义能力极强\n- 劣: 相比较其他方案, 批量修改处理不易\n- 劣: 相比较其他方案, 需要实现大地图编辑器, 从而实现游戏内配置, 方便进行直观的配置 (运行增删查改, 动态加载等等)\n\n### Tile Map方案\n- 详情参考 `TileMapExample`\n- 配置流程\n\t- (笔刷) 先配置 每个网格资源 本身的属性 (比如 可以AI导航区域, 碰撞区域, 颜色, 材质, 高度 等等)\n\t- (底色) 用`小地图`做背景\n\t- (画图) 再在把网格刷在地图上\n- 网格中的物体: 1. 可交互 2.可挡路 3.可以动态消失和增加\n\n### 优劣分析\n- 优: 性能不错, 我测试下来性能可以接受\n- 劣: Godot在编辑时, 有可能会闪退 具体原因不明\n- 劣: 因为是基于网格的, 所以具体的网格都是以格子为基准的, 比如 \"材质\" \"高度\" \"导航区域\" \"碰撞区域\". 没有其他方式的那种自定义的方式自由 (必须是格子图)\n","x":3280,"y":-352,"width":960,"height":1090},
|
{"id":"c38d1a12d50745c6","type":"text","text":"## 大地图解决方案\n\n## 必做方案\n- 从美术那里获得`大地图`(比如一个种族的地图)\n- 程序切图变成`小地图`且批量命名\n\n### 普通 2D 方案\n- 详情参考`2DPathFindExample'\n- 配置流产\n\t- 一张`小地图` 可以作为一个 `场景` 使用\n\t- 每个场景中, 配置 `物理碰撞` `AI寻路` `城池` `副本` 等等\n- 此做法类似我们早期使用Unity实现的方法思路, 但是他有更方便的 2D 功能\n#### 优劣分析\n- 优: 自定义能力极强\n- 劣: 相比较其他方案, 批量修改处理不易\n- 劣: 相比较其他方案, 需要实现大地图编辑器, 从而实现游戏内配置, 方便进行直观的配置 (运行增删查改, 动态加载等等)\n\n### Tile Map方案\n- 详情参考 `TileMapExample`\n- 配置流程\n\t- (笔刷) 先配置 每个网格资源 本身的属性 (比如 可以AI导航区域, 碰撞区域, 颜色, 材质, 高度 等等)\n\t- (底色) 用`小地图`做背景\n\t- (画图) 再在把网格刷在地图上\n- 网格中的物体: 1. 可交互 2.可挡路 3.可以动态消失和增加\n\n### 优劣分析\n- 优: 性能不错, 我测试下来性能可以接受\n- 劣: Godot在编辑时, 有可能会闪退 具体原因不明\n- 劣: 因为是基于网格的, 所以具体的网格都是以格子为基准的, 比如 \"材质\" \"高度\" \"导航区域\" \"碰撞区域\". 没有其他方式的那种自定义的方式自由 (必须是格子图)\n","x":3280,"y":-352,"width":960,"height":1090},
|
||||||
|
@ -15,19 +26,8 @@
|
||||||
{"id":"20e8d9b9baff4d3d","type":"text","text":"因","x":-76,"y":-540,"width":67,"height":60},
|
{"id":"20e8d9b9baff4d3d","type":"text","text":"因","x":-76,"y":-540,"width":67,"height":60},
|
||||||
{"id":"a1a7be26d20eaca1","type":"text","text":"抽象","x":-19,"y":-660,"width":96,"height":29},
|
{"id":"a1a7be26d20eaca1","type":"text","text":"抽象","x":-19,"y":-660,"width":96,"height":29},
|
||||||
{"id":"3749392e088d5fa1","type":"text","text":"现实","x":-19,"y":-820,"width":96,"height":29},
|
{"id":"3749392e088d5fa1","type":"text","text":"现实","x":-19,"y":-820,"width":96,"height":29},
|
||||||
{"id":"c33ab99b87004926","type":"text","text":"果","x":898,"y":-320,"width":67,"height":60},
|
|
||||||
{"id":"4ae0834068c8c432","type":"text","text":"封装/特性/继承/聚合/多态","x":584,"y":220,"width":280,"height":50},
|
|
||||||
{"id":"6ecc964c9042cafe","type":"text","text":"结果","x":744,"y":140,"width":120,"height":50},
|
{"id":"6ecc964c9042cafe","type":"text","text":"结果","x":744,"y":140,"width":120,"height":50},
|
||||||
{"id":"02979079622fc748","type":"text","text":"节点D","x":731,"y":-100,"width":111,"height":60},
|
|
||||||
{"id":"ccc50c45875e8121","type":"text","text":"节点F","x":550,"y":-45,"width":111,"height":60},
|
{"id":"ccc50c45875e8121","type":"text","text":"节点F","x":550,"y":-45,"width":111,"height":60},
|
||||||
{"id":"baeb4b1fe957ac3e","type":"text","text":"节点C","x":550,"y":-175,"width":111,"height":60},
|
|
||||||
{"id":"6e4257fdd05e9ae8","type":"text","text":"功能计算","x":444,"y":140,"width":160,"height":50},
|
|
||||||
{"id":"7aab729a19843255","type":"text","text":"节点B","x":358,"y":-175,"width":111,"height":60},
|
|
||||||
{"id":"301c14f628e0d44e","type":"text","text":"节点E","x":390,"y":15,"width":111,"height":60},
|
|
||||||
{"id":"6cd0aa5fd7e08b73","type":"text","text":"数据","x":197,"y":140,"width":131,"height":50},
|
|
||||||
{"id":"be3e0105f3877ef9","type":"text","text":"- 对象眼界狭窄, 只关心和自己相关的几个对象, 不关心和自己无关的\n- 没有特性的可以称之为类, 被赋予特性后, 可以被称之为实例\n- 需求发生改变时, 一般是直接新增类. 不会大幅度的影响其他对象.\n- 举例\n\t- 面向对象就像是把建造一辆车这个目标, 分解成建造每一个零部件后组装\n\t- 当车辆更新换代的时候, 用于组装的类会发生变更(可以重载或是继承), 也会新增一些新的对象类型(同样可以是继承和承载)","x":233,"y":660,"width":583,"height":260},
|
|
||||||
{"id":"b78f0a5a2d476e66","type":"text","text":"``` python\nfunc main(i)\n\ta = nodeA.do(i)\n\tb = nodeB.do(a)\n\te = nodeE.do(a)\n\tf = nodeF.do(b,a,e)\n\tc = nodeC.do(b)\n\to = nodeD.do(c,f)\n\treturn o\n```","x":233,"y":360,"width":583,"height":280},
|
|
||||||
{"id":"67cc784857841adc","type":"text","text":"特性","x":320,"y":220,"width":160,"height":50},
|
|
||||||
{"id":"150aa8c33533e9d6","type":"text","text":"果","x":-215,"y":-335,"width":67,"height":60},
|
{"id":"150aa8c33533e9d6","type":"text","text":"果","x":-215,"y":-335,"width":67,"height":60},
|
||||||
{"id":"a86a7ac36ae3f4f0","type":"text","text":"``` python\nfunc main(i)\n\ta = get(i)\n\tb = ClacA(a)\n\te = ClacE(a)\n\tf = CalcF(b,a,e)\n\tc = CalcC(b)\n\to = CalcO(c,f)\n\treturn o\n\n# 需求变更时, 新写方法, 插入/删除流程\n```","x":-728,"y":-245,"width":583,"height":285},
|
{"id":"a86a7ac36ae3f4f0","type":"text","text":"``` python\nfunc main(i)\n\ta = get(i)\n\tb = ClacA(a)\n\te = ClacE(a)\n\tf = CalcF(b,a,e)\n\tc = CalcC(b)\n\to = CalcO(c,f)\n\treturn o\n\n# 需求变更时, 新写方法, 插入/删除流程\n```","x":-728,"y":-245,"width":583,"height":285},
|
||||||
{"id":"a5b1c2cce5f1efbb","type":"text","text":"功能计算","x":-519,"y":-333,"width":160,"height":50},
|
{"id":"a5b1c2cce5f1efbb","type":"text","text":"功能计算","x":-519,"y":-333,"width":160,"height":50},
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
- [ ] 对UE的TagSystem进行分析
|
||||||
|
- [ ] 实现对应代码功能 (抄脚本)
|
||||||
|
- [ ] 实现配置编辑器功能
|
|
@ -0,0 +1,23 @@
|
||||||
|
|
||||||
|
## Reference
|
||||||
|
|
||||||
|
### Steam Game
|
||||||
|
- Forager
|
||||||
|
- Dwarf Fortress
|
||||||
|
- Vexlands
|
||||||
|
- Cookie Clicker
|
||||||
|
- Satisfactory
|
||||||
|
- Factorio
|
||||||
|
- RTS: Red Alert
|
||||||
|
- Running with Rifles
|
||||||
|
- RTT: Door Kickers 2, Shadow Tactics(三部曲)
|
||||||
|
|
||||||
|
### Art Style Game
|
||||||
|
- [【极简塔防 | 开发第三集】demo完成!欢迎下载试玩!_哔哩哔哩bilibili](https://www.bilibili.com/video/BV1pj411e7Vk/?spm_id_from=333.1007.tianma.1-1-1.click&vd_source=ba468568caebc92479698e83c28be8b0)
|
||||||
|
- Geometry Arena 几何竞技场
|
||||||
|
|
||||||
|
### Game Video
|
||||||
|
[【风笑试玩】一款赚钱扩地经营冒险游戏丨Vexlands (Demo) 试玩_单机游戏热门视频 (bilibili.com)](https://www.bilibili.com/video/BV1D84y1X78b/?vd_source=ba468568caebc92479698e83c28be8b0)
|
||||||
|
### Novel
|
||||||
|
- 人在火影,我是蓝染 (好事做尽的坏人和幕后黑手)
|
||||||
|
- 箱子里的大明, 这游戏也太真实了, 玩家超正义, 我的玩家好凶猛 (游戏策划流, 种田, DND)
|
Loading…
Reference in New Issue