This commit is contained in:
Torsten 2024-12-22 14:02:54 +01:00
parent 1e22d28754
commit 6b926d3afe
126 changed files with 128562 additions and 104297 deletions

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,929 @@
---
excalidraw-plugin: parsed
tags: [excalidraw]
---
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠==
# Text Elements
Player ^uTJg57Kv
AWA Online
Allows the player to create
RPG characters and move them
within the provided virtual world ^f9RvQDpZ
Create Account
Log In
Create Character
Select Character
Join World
Interact with world ^zCC0WyOj
Amazon AWS ^bNo2Rku7
provide on-demand server capacity ^DCQ54g1y
AWA C4 System Context ^wXLW3IRb
GM ^PrAhVR5w
Modify/Add Scenes
Modify/Add Creatures
Modify/Add Items
Modify/Add Behaviours(Scripts) ^CSzLYV6w
Admin ^YQNTjFGO
Backup/Restore System
Add Resources
(Server, Models, etc.) ^FWCXNrCG
# Embedded files
680e8de7f743f3bfc6895b5ef58059c4ab8481cb: [[User Icon.jpg]]
%%
# Drawing
```json
{
"type": "excalidraw",
"version": 2,
"source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.0.17",
"elements": [
{
"type": "image",
"version": 442,
"versionNonce": 1321332155,
"isDeleted": false,
"id": "Pk-waUjnDF5XLGkB-1j8u",
"fillStyle": "hachure",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"angle": 0,
"x": -531.276923076923,
"y": -187.8658653846154,
"strokeColor": "transparent",
"backgroundColor": "transparent",
"width": 176.75,
"height": 141.4,
"seed": 2093472192,
"groupIds": [
"vKpti2Vt9btqPNzPbiN1N"
],
"frameId": null,
"roundness": null,
"boundElements": [
{
"id": "5wS6cpuRM0D3vlKKb9VeI",
"type": "arrow"
}
],
"updated": 1707047075007,
"link": null,
"locked": false,
"status": "pending",
"fileId": "680e8de7f743f3bfc6895b5ef58059c4ab8481cb",
"scale": [
1,
1
]
},
{
"type": "text",
"version": 257,
"versionNonce": 415759099,
"isDeleted": false,
"id": "uTJg57Kv",
"fillStyle": "hachure",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"angle": 0,
"x": -477.44999999999993,
"y": -43.419711538461556,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"width": 60.73992919921875,
"height": 25,
"seed": 994851392,
"groupIds": [
"vKpti2Vt9btqPNzPbiN1N"
],
"frameId": null,
"roundness": null,
"boundElements": [],
"updated": 1707047075008,
"link": null,
"locked": false,
"fontSize": 20,
"fontFamily": 1,
"text": "Player",
"rawText": "Player",
"textAlign": "left",
"verticalAlign": "top",
"containerId": null,
"originalText": "Player",
"lineHeight": 1.25,
"baseline": 18
},
{
"type": "rectangle",
"version": 120,
"versionNonce": 991513024,
"isDeleted": false,
"id": "nnpBXkmw-C3Cpt6omDtzN",
"fillStyle": "hachure",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"angle": 0,
"x": -527.45,
"y": -649.28125,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"width": 410,
"height": 167.99999999999997,
"seed": 1994277312,
"groupIds": [
"GK8QIVhzqSH8obL9snROA"
],
"frameId": null,
"roundness": {
"type": 3
},
"boundElements": [
{
"id": "NU1Rimkd8fvxbgn1FVhZJ",
"type": "arrow"
},
{
"id": "xGSkaNTDACzkY2CkHc2pk",
"type": "arrow"
}
],
"updated": 1703070898634,
"link": null,
"locked": false
},
{
"type": "text",
"version": 213,
"versionNonce": 1903018432,
"isDeleted": false,
"id": "f9RvQDpZ",
"fillStyle": "hachure",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"angle": 0,
"x": -482.45000000000005,
"y": -621.28125,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"width": 314.859619140625,
"height": 125,
"seed": 1732057536,
"groupIds": [
"GK8QIVhzqSH8obL9snROA"
],
"frameId": null,
"roundness": null,
"boundElements": [
{
"id": "5wS6cpuRM0D3vlKKb9VeI",
"type": "arrow"
},
{
"id": "EwmgbSgfkAPCoUaO935Xp",
"type": "arrow"
}
],
"updated": 1703071003596,
"link": null,
"locked": false,
"fontSize": 20,
"fontFamily": 1,
"text": " AWA Online\n\nAllows the player to create\nRPG characters and move them\nwithin the provided virtual world",
"rawText": " AWA Online\n\nAllows the player to create\nRPG characters and move them\nwithin the provided virtual world",
"textAlign": "left",
"verticalAlign": "top",
"containerId": null,
"originalText": " AWA Online\n\nAllows the player to create\nRPG characters and move them\nwithin the provided virtual world",
"lineHeight": 1.25,
"baseline": 118
},
{
"type": "arrow",
"version": 531,
"versionNonce": 1297251931,
"isDeleted": false,
"id": "5wS6cpuRM0D3vlKKb9VeI",
"fillStyle": "hachure",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"angle": 0,
"x": -429.26610139252557,
"y": -209.6658653846154,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"width": 98.23689488147733,
"height": 261.61538461538464,
"seed": 1113334208,
"groupIds": [],
"frameId": null,
"roundness": {
"type": 2
},
"boundElements": [
{
"type": "text",
"id": "zCC0WyOj"
}
],
"updated": 1707047075007,
"link": null,
"locked": false,
"startBinding": {
"elementId": "Pk-waUjnDF5XLGkB-1j8u",
"focus": -0.20590762090824621,
"gap": 21.799999999999983
},
"endBinding": {
"elementId": "f9RvQDpZ",
"focus": -0.13846029392804926,
"gap": 25
},
"lastCommittedPoint": null,
"startArrowhead": null,
"endArrowhead": "arrow",
"points": [
[
0,
0
],
[
43.7589585353827,
-107.14306318681312
],
[
98.23689488147733,
-261.61538461538464
]
]
},
{
"type": "text",
"version": 121,
"versionNonce": 1314124352,
"isDeleted": false,
"id": "zCC0WyOj",
"fillStyle": "hachure",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"angle": 0,
"x": -379.7546979837124,
"y": -377.78125,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"width": 191.9998016357422,
"height": 150,
"seed": 200043072,
"groupIds": [],
"frameId": null,
"roundness": null,
"boundElements": [],
"updated": 1703070484568,
"link": null,
"locked": false,
"fontSize": 20,
"fontFamily": 1,
"text": "Create Account\nLog In\nCreate Character\nSelect Character\nJoin World\nInteract with world",
"rawText": "Create Account\nLog In\nCreate Character\nSelect Character\nJoin World\nInteract with world",
"textAlign": "center",
"verticalAlign": "middle",
"containerId": "5wS6cpuRM0D3vlKKb9VeI",
"originalText": "Create Account\nLog In\nCreate Character\nSelect Character\nJoin World\nInteract with world",
"lineHeight": 1.25,
"baseline": 143
},
{
"type": "rectangle",
"version": 438,
"versionNonce": 2106855872,
"isDeleted": false,
"id": "jB5xz4r3WYe69WG-gg5Yr",
"fillStyle": "hachure",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"angle": 0,
"x": 246.63571428571447,
"y": -648.8241071428572,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"width": 251,
"height": 175,
"seed": 486218176,
"groupIds": [
"z4KeiVyvDZMLarkkyphnI"
],
"frameId": null,
"roundness": {
"type": 3
},
"boundElements": [
{
"id": "NU1Rimkd8fvxbgn1FVhZJ",
"type": "arrow"
},
{
"id": "xGSkaNTDACzkY2CkHc2pk",
"type": "arrow"
}
],
"updated": 1703070843561,
"link": null,
"locked": false
},
{
"type": "text",
"version": 432,
"versionNonce": 595771840,
"isDeleted": false,
"id": "bNo2Rku7",
"fillStyle": "hachure",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"angle": 0,
"x": 280.63571428571447,
"y": -627.8241071428572,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"width": 121.17988586425781,
"height": 25,
"seed": 527845952,
"groupIds": [
"z4KeiVyvDZMLarkkyphnI"
],
"frameId": null,
"roundness": null,
"boundElements": [],
"updated": 1703070827924,
"link": null,
"locked": false,
"fontSize": 20,
"fontFamily": 1,
"text": "Amazon AWS",
"rawText": "Amazon AWS",
"textAlign": "left",
"verticalAlign": "top",
"containerId": null,
"originalText": "Amazon AWS",
"lineHeight": 1.25,
"baseline": 18
},
{
"type": "arrow",
"version": 936,
"versionNonce": 357118528,
"isDeleted": false,
"id": "NU1Rimkd8fvxbgn1FVhZJ",
"fillStyle": "hachure",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"angle": 0,
"x": 239.63571428571447,
"y": -557.7355478600864,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"width": 344.0857142857145,
"height": 15.873380711342179,
"seed": 1061585472,
"groupIds": [],
"frameId": null,
"roundness": {
"type": 2
},
"boundElements": [
{
"type": "text",
"id": "DCQ54g1y"
}
],
"updated": 1703070898634,
"link": null,
"locked": false,
"startBinding": {
"elementId": "jB5xz4r3WYe69WG-gg5Yr",
"focus": -0.17860449045819365,
"gap": 7
},
"endBinding": {
"elementId": "nnpBXkmw-C3Cpt6omDtzN",
"focus": 0.22948334029285425,
"gap": 13
},
"lastCommittedPoint": null,
"startArrowhead": null,
"endArrowhead": "arrow",
"points": [
[
0,
0
],
[
-145.14285714285734,
-15.873380711342179
],
[
-344.0857142857145,
-1.0269562982713296
]
]
},
{
"type": "text",
"version": 41,
"versionNonce": 269156800,
"isDeleted": false,
"id": "DCQ54g1y",
"fillStyle": "hachure",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"angle": 0,
"x": -78.81698295385198,
"y": -716.5415832749192,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"width": 174.3798065185547,
"height": 50,
"seed": 1740739008,
"groupIds": [],
"frameId": null,
"roundness": null,
"boundElements": [],
"updated": 1703070898028,
"link": null,
"locked": false,
"fontSize": 20,
"fontFamily": 1,
"text": "provide on-demand\nserver capacity",
"rawText": "provide on-demand server capacity",
"textAlign": "center",
"verticalAlign": "middle",
"containerId": "NU1Rimkd8fvxbgn1FVhZJ",
"originalText": "provide on-demand server capacity",
"lineHeight": 1.25,
"baseline": 43
},
{
"type": "text",
"version": 144,
"versionNonce": 1215501557,
"isDeleted": false,
"id": "wXLW3IRb",
"fillStyle": "hachure",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"angle": 0,
"x": -173.7253246753246,
"y": -751.4634740259737,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"width": 383.1476157448505,
"height": 39.5454545454545,
"seed": 429388352,
"groupIds": [],
"frameId": null,
"roundness": null,
"boundElements": [],
"updated": 1707047196737,
"link": null,
"locked": false,
"fontSize": 31.636363636363587,
"fontFamily": 1,
"text": "AWA C4 System Context",
"rawText": "AWA C4 System Context",
"textAlign": "left",
"verticalAlign": "top",
"containerId": null,
"originalText": "AWA C4 System Context",
"lineHeight": 1.25,
"baseline": 27.000000000000014
},
{
"type": "image",
"version": 484,
"versionNonce": 1123892123,
"isDeleted": false,
"id": "n7BdRlM8N1CvSOqx0149p",
"fillStyle": "hachure",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"angle": 0,
"x": 10.117857142857247,
"y": -191.13200549450545,
"strokeColor": "transparent",
"backgroundColor": "transparent",
"width": 176.75,
"height": 141.4,
"seed": 1155551808,
"groupIds": [
"qbjXhi6wi88Zeidvr3oPk"
],
"frameId": null,
"roundness": null,
"boundElements": [
{
"id": "EwmgbSgfkAPCoUaO935Xp",
"type": "arrow"
}
],
"updated": 1707047072605,
"link": null,
"locked": false,
"status": "pending",
"fileId": "680e8de7f743f3bfc6895b5ef58059c4ab8481cb",
"scale": [
1,
1
]
},
{
"type": "text",
"version": 323,
"versionNonce": 1194414299,
"isDeleted": false,
"id": "PrAhVR5w",
"fillStyle": "hachure",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"angle": 0,
"x": 87.14478021978027,
"y": -48.285851648351624,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"width": 31.0999755859375,
"height": 25,
"seed": 1637616192,
"groupIds": [
"qbjXhi6wi88Zeidvr3oPk"
],
"frameId": null,
"roundness": null,
"boundElements": [],
"updated": 1707047072606,
"link": null,
"locked": false,
"fontSize": 20,
"fontFamily": 1,
"text": "GM",
"rawText": "GM",
"textAlign": "left",
"verticalAlign": "top",
"containerId": null,
"originalText": "GM",
"lineHeight": 1.25,
"baseline": 18
},
{
"type": "arrow",
"version": 650,
"versionNonce": 480841787,
"isDeleted": false,
"id": "EwmgbSgfkAPCoUaO935Xp",
"fillStyle": "hachure",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"angle": 0,
"x": 96.38676944406481,
"y": -216.38848156707846,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"width": 257.8655684024722,
"height": 254.85421401032852,
"seed": 1752089152,
"groupIds": [],
"frameId": null,
"roundness": {
"type": 2
},
"boundElements": [
{
"type": "text",
"id": "CSzLYV6w"
}
],
"updated": 1707047072605,
"link": null,
"locked": false,
"startBinding": {
"elementId": "n7BdRlM8N1CvSOqx0149p",
"focus": 0.5939929629276283,
"gap": 25.256476072573008
},
"endBinding": {
"elementId": "f9RvQDpZ",
"focus": -0.33974632422657136,
"gap": 25.03855442259305
},
"lastCommittedPoint": null,
"startArrowhead": null,
"endArrowhead": "arrow",
"points": [
[
0,
0
],
[
-125.89391230120756,
-124.42044700435017
],
[
-257.8655684024722,
-254.85421401032852
]
]
},
{
"type": "text",
"version": 168,
"versionNonce": 1046071744,
"isDeleted": false,
"id": "CSzLYV6w",
"fillStyle": "hachure",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"angle": 0,
"x": -87.88702414376382,
"y": -416.90892857142853,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"width": 215.9597625732422,
"height": 125,
"seed": 896270912,
"groupIds": [],
"frameId": null,
"roundness": null,
"boundElements": [],
"updated": 1703071005578,
"link": null,
"locked": false,
"fontSize": 20,
"fontFamily": 1,
"text": "Modify/Add Scenes\nModify/Add Creatures\nModify/Add Items\nModify/Add\nBehaviours(Scripts)",
"rawText": "Modify/Add Scenes\nModify/Add Creatures\nModify/Add Items\nModify/Add Behaviours(Scripts)",
"textAlign": "center",
"verticalAlign": "middle",
"containerId": "EwmgbSgfkAPCoUaO935Xp",
"originalText": "Modify/Add Scenes\nModify/Add Creatures\nModify/Add Items\nModify/Add Behaviours(Scripts)",
"lineHeight": 1.25,
"baseline": 118
},
{
"type": "image",
"version": 716,
"versionNonce": 1116024149,
"isDeleted": false,
"id": "P56zX-FkeKTXydXiU3nB1",
"fillStyle": "hachure",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"angle": 0,
"x": 327.0409340659337,
"y": -186.4550824175824,
"strokeColor": "transparent",
"backgroundColor": "transparent",
"width": 176.75,
"height": 141.4,
"seed": 124598720,
"groupIds": [
"dk73K8x1Er0aYFsXJqY_T"
],
"frameId": null,
"roundness": null,
"boundElements": [
{
"id": "xGSkaNTDACzkY2CkHc2pk",
"type": "arrow"
}
],
"updated": 1707047070521,
"link": null,
"locked": false,
"status": "pending",
"fileId": "680e8de7f743f3bfc6895b5ef58059c4ab8481cb",
"scale": [
1,
1
]
},
{
"type": "text",
"version": 571,
"versionNonce": 2128958016,
"isDeleted": false,
"id": "YQNTjFGO",
"fillStyle": "hachure",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"angle": 0,
"x": 404.06785714285684,
"y": -43.60892857142858,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"width": 50.87995910644531,
"height": 25,
"seed": 555745728,
"groupIds": [
"dk73K8x1Er0aYFsXJqY_T"
],
"frameId": null,
"roundness": null,
"boundElements": [],
"updated": 1703071057222,
"link": null,
"locked": false,
"fontSize": 20,
"fontFamily": 1,
"text": "Admin",
"rawText": "Admin",
"textAlign": "left",
"verticalAlign": "top",
"containerId": null,
"originalText": "Admin",
"lineHeight": 1.25,
"baseline": 18
},
{
"type": "arrow",
"version": 656,
"versionNonce": 1784873115,
"isDeleted": false,
"id": "xGSkaNTDACzkY2CkHc2pk",
"fillStyle": "hachure",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"angle": 0,
"x": 409.79289765409914,
"y": -205.0550824175823,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"width": 35.99999999999966,
"height": 246.95384615384626,
"seed": 319611456,
"groupIds": [],
"frameId": null,
"roundness": {
"type": 2
},
"boundElements": [
{
"type": "text",
"id": "FWCXNrCG"
}
],
"updated": 1707047219861,
"link": null,
"locked": false,
"startBinding": {
"elementId": "P56zX-FkeKTXydXiU3nB1",
"focus": -0.12793448034606666,
"gap": 18.59999999999991
},
"endBinding": {
"elementId": "jB5xz4r3WYe69WG-gg5Yr",
"focus": 0.1546723012461127,
"gap": 21.81517857142859
},
"lastCommittedPoint": null,
"startArrowhead": null,
"endArrowhead": "arrow",
"points": [
[
0,
0
],
[
9.499959488757497,
-134.15384615384642
],
[
-26.50004051124216,
-246.95384615384626
]
]
},
{
"type": "text",
"version": 152,
"versionNonce": 38123515,
"isDeleted": false,
"id": "FWCXNrCG",
"fillStyle": "hachure",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"angle": 0,
"x": 314.47296425955585,
"y": -389.2089285714287,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"width": 209.63978576660156,
"height": 100,
"seed": 371067328,
"groupIds": [],
"frameId": null,
"roundness": null,
"boundElements": [],
"updated": 1707047216266,
"link": null,
"locked": false,
"fontSize": 20,
"fontFamily": 1,
"text": "Backup/Restore\nSystem\nAdd Resources \n(Server, Models, etc.)",
"rawText": "Backup/Restore System\nAdd Resources \n(Server, Models, etc.)",
"textAlign": "center",
"verticalAlign": "middle",
"containerId": "xGSkaNTDACzkY2CkHc2pk",
"originalText": "Backup/Restore System\nAdd Resources \n(Server, Models, etc.)",
"lineHeight": 1.25,
"baseline": 93
}
],
"appState": {
"theme": "light",
"viewBackgroundColor": "#ffffff",
"currentItemStrokeColor": "#1e1e1e",
"currentItemBackgroundColor": "transparent",
"currentItemFillStyle": "hachure",
"currentItemStrokeWidth": 1,
"currentItemStrokeStyle": "solid",
"currentItemRoughness": 1,
"currentItemOpacity": 100,
"currentItemFontFamily": 1,
"currentItemFontSize": 20,
"currentItemTextAlign": "left",
"currentItemStartArrowhead": null,
"currentItemEndArrowhead": "arrow",
"scrollX": 875.6570834736252,
"scrollY": 988.6276723276726,
"zoom": {
"value": 1.0999999999999996
},
"currentItemRoundness": "round",
"gridSize": null,
"gridColor": {
"Bold": "#C9C9C9FF",
"Regular": "#EDEDEDFF"
},
"currentStrokeOptions": null,
"previousGridSize": null,
"frameRendering": {
"enabled": true,
"clip": true,
"name": true,
"outline": true
}
},
"files": {}
}
```
%%

View file

@ -0,0 +1,30 @@
{
"nodes":[
{"id":"90607e58582e2efc","type":"text","text":"SCRIPTS","x":-1720,"y":-1040,"width":250,"height":60},
{"id":"efe7530a8f71c7bc","type":"text","text":"avatar.gd\nAttached to avatar object in 3D scene.\nmove_and_slides on _physics_process\n-> set_head","x":-1640,"y":-952,"width":500,"height":149},
{"id":"85be6eaed789a27b","type":"text","text":"AUTOLOAD","x":-1100,"y":-1036,"width":250,"height":56},
{"id":"85545de9a40d0e26","type":"text","text":"AWA_SHARED_SCENES","x":-480,"y":-1040,"width":250,"height":60},
{"id":"9a8ed4ef2103714c","type":"text","text":"avatar","x":-419,"y":-948,"width":599,"height":90},
{"id":"9f062df619681bb9","type":"text","text":"scene","x":-419,"y":-840,"width":599,"height":90},
{"id":"cb70a9fb11102317","type":"text","text":"AUTOLOAD: spawnables","x":-419,"y":-713,"width":599,"height":90},
{"id":"40e74d91fe5e3950","type":"text","text":"AUTOLOAD: scene_status","x":-419,"y":-593,"width":599,"height":93},
{"id":"6d6e13ee54a65146","type":"text","text":"SCENES (LOCAL)","x":1000,"y":-1040,"width":250,"height":60},
{"id":"f9340e9e93b186f0","type":"text","text":"AWA_SHARED_DATA","x":260,"y":-1040,"width":250,"height":60},
{"id":"83b7303159693206","type":"text","text":"AUTOLOAD: player_info","x":320,"y":-948,"width":360,"height":90},
{"id":"a2a9768704c0fd8c","type":"text","text":"AUTOLOAD: common","x":320,"y":-828,"width":360,"height":90},
{"id":"8334716466cdd0e7","type":"text","text":"AUTOLOAD: logger","x":320,"y":-715,"width":360,"height":90},
{"id":"b65b1224bc5ca6f7","type":"text","text":"login","x":1100,"y":-948,"width":250,"height":60},
{"id":"85ed45246dc64042","type":"text","text":"testscene (offline)","x":1100,"y":-700,"width":250,"height":60},
{"id":"62643e2db23e6181","type":"text","text":"character_vault","x":1100,"y":-783,"width":250,"height":60},
{"id":"59fe09446e6ac2ac","type":"text","text":"create_account","x":1100,"y":-870,"width":250,"height":60},
{"id":"6aeebc0b3d4cb5e8","type":"text","text":"COMPONENTS: gamewindow/CameraController/CameraController","x":-419,"y":-150,"width":599,"height":76},
{"id":"480a7f7efc3a57ed","type":"text","text":"COMPONENTS: gamewindow/Chat/chat","x":-419,"y":-453,"width":599,"height":76},
{"id":"33e1a53934aa2787","type":"text","text":"COMPONENTS: gamewindow/AvatarSpawner/AvatarSpawner","x":-419,"y":-353,"width":599,"height":76},
{"id":"a7a74f9c7d91fdcf","type":"text","text":"COMPONENTS: fps_status/fps_counter","x":-419,"y":-253,"width":599,"height":76},
{"id":"18f5895a1ccad5cf","type":"text","text":"**network_master_to_client**\n\n*Sends RPC*:\n\trpc_cm_create_account(username, password)\n\trpc_cm_select_char(char_id)\n\trpc_cm_create_character(charname)\n\trpc_cm_login(email, password)\t\n\n*Receives RPC:*\n\trpc_mc_create_account_response(success, message)\n\trpc_mc_character_created\n\trpc_mc_login_response(auth_token, character_shortlist)\n\trpc_mc_load_scene(scene_name, position, scene_port)\n\n*Signals:*\nCommon.master_ip_received => _on_master_ip_received\n\t\t","x":-1074,"y":-922,"width":534,"height":422},
{"id":"a90b15be01bc2fe3","type":"text","text":"client","x":-1060,"y":-325,"width":294,"height":90},
{"id":"22c3bb00e7e738a2","type":"text","text":"network_scene_to_client","x":-1060,"y":-445,"width":294,"height":90},
{"id":"7605f29c3f0f0136","type":"text","text":"audio_manager","x":-1060,"y":-202,"width":294,"height":90}
],
"edges":[]
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,149 @@
---
excalidraw-plugin: parsed
tags: [excalidraw]
---
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠==
# Text Elements
AWA Verwendete Tools
Godot (aktuelle Version 4.2)
Blender 3.6.4
Add-On AutoRig Pro
Add-On SimpleBake
Add-On Human Generator
Add-On Quad Remesher
Add-On Sanctus Lib
Add-On SimplyCloth Pro
Gimp
Krita
^feJFj2ek
%%
# Drawing
```json
{
"type": "excalidraw",
"version": 2,
"source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.9.12",
"elements": [
{
"id": "feJFj2ek",
"type": "text",
"x": -128.25,
"y": -498.4453125,
"width": 325.599609375,
"height": 325,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"roundness": null,
"seed": 9804352,
"version": 392,
"versionNonce": 415726144,
"isDeleted": false,
"boundElements": null,
"updated": 1703072229416,
"link": null,
"locked": false,
"text": "AWA Verwendete Tools\n Godot (aktuelle Version 4.2)\n Blender 3.6.4\n Add-On AutoRig Pro\n Add-On SimpleBake\n Add-On Human Generator\n Add-On Quad Remesher\n Add-On Sanctus Lib\n Add-On SimplyCloth Pro\n Gimp\n Krita\n \n ",
"rawText": "AWA Verwendete Tools\n Godot (aktuelle Version 4.2)\n Blender 3.6.4\n Add-On AutoRig Pro\n Add-On SimpleBake\n Add-On Human Generator\n Add-On Quad Remesher\n Add-On Sanctus Lib\n Add-On SimplyCloth Pro\n Gimp\n Krita\n \n ",
"fontSize": 20,
"fontFamily": 1,
"textAlign": "left",
"verticalAlign": "top",
"baseline": 318,
"containerId": null,
"originalText": "AWA Verwendete Tools\n Godot (aktuelle Version 4.2)\n Blender 3.6.4\n Add-On AutoRig Pro\n Add-On SimpleBake\n Add-On Human Generator\n Add-On Quad Remesher\n Add-On Sanctus Lib\n Add-On SimplyCloth Pro\n Gimp\n Krita\n \n ",
"lineHeight": 1.25
},
{
"id": "OyjLcS3Lz6WXQ8QA6f9va",
"type": "line",
"x": -129.25,
"y": -475.4453125,
"width": 226,
"height": 2,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "hachure",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"roundness": {
"type": 2
},
"seed": 551352896,
"version": 52,
"versionNonce": 1014911424,
"isDeleted": false,
"boundElements": null,
"updated": 1703072051030,
"link": null,
"locked": false,
"points": [
[
0,
0
],
[
226,
-2
]
],
"lastCommittedPoint": null,
"startBinding": null,
"endBinding": null,
"startArrowhead": null,
"endArrowhead": null
}
],
"appState": {
"theme": "light",
"viewBackgroundColor": "#ffffff",
"currentItemStrokeColor": "#1e1e1e",
"currentItemBackgroundColor": "transparent",
"currentItemFillStyle": "hachure",
"currentItemStrokeWidth": 1,
"currentItemStrokeStyle": "solid",
"currentItemRoughness": 1,
"currentItemOpacity": 100,
"currentItemFontFamily": 1,
"currentItemFontSize": 20,
"currentItemTextAlign": "left",
"currentItemStartArrowhead": null,
"currentItemEndArrowhead": "arrow",
"scrollX": 311.751285302639,
"scrollY": 624.01171875,
"zoom": {
"value": 2
},
"currentItemRoundness": "round",
"gridSize": null,
"currentStrokeOptions": null,
"previousGridSize": null,
"frameRendering": {
"enabled": true,
"clip": true,
"name": true,
"outline": true
}
},
"files": {}
}
```
%%

View file

@ -0,0 +1,51 @@
https://aws.amazon.com
awsuser@zauberturm.de => $Mehrwert!...
AccountID: 990489675026
Azimandius
IMPORTANT:
When creating the security group, UDP 8000-8100 should be added as allowed
```
ssh -i my_private_key.pem ec2-user@public-ipv4
```
Key Permissions must be set to 600
Create user:
```
sudo useradd -m -U awa-admin
sudo passwd awa-admin
sudo su
mkdir /opt/awa
cd /opt/awa
wget https://www.zauberturm.de/downloads/
sudo chown -R awa-admin:awa-admin /opt/awa
sudo yum install p7zip
```
GetAwaServerIp
```
GET https://7l7x7zpr7ybfjrugwg5hybrd7i0ptqmc.lambda-url.eu-central-1.on.aws/
```
GetAwaUptime
```
GET https://5f7rkcljorwmzo4mnsjpl5bdde0frkcb.lambda-url.eu-central-1.on.aws/
```
StartAwaServer
```
GET https://xqip7wowsd6shind4q3t6hqafa0axudp.lambda-url.eu-central-1.on.aws/
```
StopAWAServer
```
GET https://5ps72qu3uclwnawce5cziv7a6a0niulv.lambda-url.eu-central-1.on.aws/
```

View file

@ -0,0 +1,19 @@
````bash
$ crontab -e
@reboot /home/ec2-user/start_cloud_host.sh
````
Contents of start_cloud_host:
````bash
#!/bin/bash
kill -9 `ps -ef|grep master_server|grep headless|awk '{print $2}'`
kill -9 `ps -ef|grep scene_server|grep headless|awk '{print $2}'`
~/awa/master_server.x86_64 --headless > master_log.txt &
sleep 2
~/awa/scene_server.x86_64 --headless > scene_log.txt & # TODO: Set unique log name
`````
![[Pasted image 20240121135842.png]]

View file

@ -0,0 +1 @@
`sudo yum install cronie`

View file

@ -0,0 +1,43 @@
import boto3
import time
import datetime
#ec2 = boto3.resource('ec2')
ec2 = boto3.client('ec2')
awa_server_instance_id = "i-0de7cce6fcdf8c0e6"
def lambda_handler(event, context):
#return "1.2.3.4"
#filters = [
# {
# 'Name': 'instance-state-name',
# 'Values': ['running']
# }
#]
#
#instances = ec2.instances.filter(Filters=filters)
#
#for instance in instances:
# print(instance)
response = ec2.describe_instances()
for reservation in response['Reservations']:
for instance in reservation['Instances']:
instance_id = instance.get('InstanceId', 'NONE')
ip = instance.get('PublicIpAddress', '127.0.0.1')
if instance_id == awa_server_instance_id:
#return {
# 'statusCode': 200,
# 'ip': ip
#}
return ip
#return {
# 'statusCode': 200,
# 'ip': "127.0.0.1"
#}
return "127.0.0.1"

View file

@ -0,0 +1 @@
1.) https://www.youtube.com/watch?v=T7cny-uyCuA

View file

@ -0,0 +1,15 @@
```python
#StopServer
import boto3
region = 'eu-central-1'
#instances = ['i-0de7cce6fcdf8c0e6']
ec2 = boto3.client('ec2', region_name=region)
def lambda_handler(event, context):
ec2.stop_instances(InstanceIds=["i-0de7cce6fcdf8c0e6"])
return {
'message' : 'stopped'
}
```
`

View file

@ -0,0 +1,13 @@
```python
#StartServer
import boto3
region = 'eu-central-1'
#instances = ['i-0de7cce6fcdf8c0e6']
ec2 = boto3.client('ec2', region_name=region)
def lambda_handler(event, context):
ec2.start_instances(InstanceIds=["i-0de7cce6fcdf8c0e6"])
return {
'message' : 'server started'
}
```

View file

@ -0,0 +1,45 @@
```python
import boto3
import time
import datetime
#ec2 = boto3.resource('ec2')
ec2 = boto3.client('ec2')
awa_server_instance_id = "i-0de7cce6fcdf8c0e6"
def lambda_handler(event, context):
#return "1.2.3.4"
#filters = [
# {
# 'Name': 'instance-state-name',
# 'Values': ['running']
# }
#]
#
#instances = ec2.instances.filter(Filters=filters)
#
#for instance in instances:
# print(instance)
response = ec2.describe_instances()
for reservation in response['Reservations']:
for instance in reservation['Instances']:
instance_id = instance.get('InstanceId', 'NONE')
ip = instance.get('PublicIpAddress', 'DOWN')
if instance_id == awa_server_instance_id:
#return {
# 'statusCode': 200,
# 'ip': ip
#}
return ip+'\n'
#return {
# 'statusCode': 200,
# 'ip': "DOWN"
#}
return "DOWN\n"
```

View file

@ -0,0 +1,31 @@
```python
#Get Uptime
import boto3
import time
import datetime
region = 'eu-central-1'
instances = ['i-0de7cce6fcdf8c0e6']
ec2 = boto3.resource('ec2')
print("Executing script")
def lambda_handler(event, context):
for instance in ec2.instances.all():
if instance.id =="i-0de7cce6fcdf8c0e6":
state = instance.state["Name"]
if state != "running":
return {
'state' : state,
'uptime': '-'
}
else:
launch_time = (instance.launch_time).strftime("%Y-%m-%d %H:%M:%S")
launch_time = datetime.datetime.strptime(launch_time, "%Y-%m-%d %H:%M:%S")
current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
current_time = datetime.datetime.strptime(current_time, "%Y-%m-%d %H:%M:%S")
uptime = (current_time - launch_time)
threshold = datetime.timedelta(minutes = 2)
return {
'state' : state,
'uptime': str(uptime)
}
```

View file

@ -0,0 +1,37 @@
ssh -i /home/tschneider/.ssh/hetzner_id_rsa root@167.235.131.137
```bash
wget https://www.zauberturm.de/awa/downloads/master_server.x86_64
wget https://www.zauberturm.de/awa/downloads/scene_server.x86_64
chmod +x master_server.x86_64 scene_server.x86_64
./master_server.x86_64 --headless > master_log.txt &
./scene_server.x86_64 --headless > scene_log.txt & # TODO: Set unique log name
```
VServer self-discover IPV4 address:
```bash
root@ubuntu-2gb-nbg1-1:~# curl -s http://169.254.169.254/hetzner/v1/metadata|grep public-ipv4|awk -F ': ' '{print $2}'
167.235.131.137
```
```bash
curl -s http://169.254.169.254/hetzner/v1/metadata|grep public-ipv4|awk -F ': ' '{print $2}' > ip.txt
```
PHP: Receive & write ip as textfile
```php
<?php
$myfile = fopen("ip.txt", "w");
fwrite($myfile, $_GET['ip']);
fclose($myfile);
?>
```

View file

@ -0,0 +1,37 @@
````go
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://www.zauberturm.de/Downloads/demo.txt"
// Make a GET request to the URL
response, err := http.Get(url)
if err != nil {
fmt.Println("Error making GET request:", err)
return
}
defer response.Body.Close()
// Check if the response status code is OK (200)
if response.StatusCode != http.StatusOK {
fmt.Println("Error: Unexpected status code", response.StatusCode)
return
}
// Read the content of the response body
body, err := ioutil.ReadAll(response.Body)
if err != nil {
fmt.Println("Error reading response body:", err)
return
}
// Display the content of the downloaded file
fmt.Println(string(body))
}
```

View file

@ -0,0 +1,17 @@
```python
print(x)
```
Master Server
Scene Server
Default behaviour: Load master_host from URL
https://www.zauberturm.de/awa/config/server_ip.txt
-client_port=
-master_host=
Client
Editor/Run
Main Run Args: -master_host=192.168.178.20

View file

@ -0,0 +1,4 @@
````bash
ls ~/.local/share/godot/app_userdata/
'AWA - Leistungstest 3- Multiplayer' MasterServer SceneServer
````

View file

@ -0,0 +1,16 @@
https://youtu.be/GDQmdsZWgVE?si=anfZDZvvU9-lHZc8
1.) AutoRig: Smart => Get Selected Object, set Neck+Co Markers
2.) Click Go
3.) Adjust Bones
4.) Click "Match to Rig"
5.) Tab "Skin": Mark Mesh, Shift-Click Rig, Click "Bind", Deselect All except Scale Fix
Root ? Hip or spine1 ?
**On Skinning, experiment with "Improve Hip Weights" and "Improve Heel Weights"**
![[Pasted image 20240211083431.png]]
In case of wrong weighting, try "Fix" scale on, and optimize flags off on Bind ( Step 5)

View file

@ -0,0 +1,16 @@
https://youtu.be/bRrrT9yun78?si=uzO4H85ZhuwHgBX7
1.) Define source + target armature
2.) Build bones list
3.) Select root master x bone and select as root bone
4.) Redefine rest post => Mark Arms and legs, Copy & apply
5.) Retarget
IF BODY GETS DEFORMED YOU NEED TO REMOVE SOME INFLUENCE BLEEDOVER IN WEIGHT PAINTING MODE! Good luck finding weight painting mode, as armature and mesh need to be selected in that order (armature first) in order to see weight paint mode as new mode ( like object and edit mode)
![[Pasted image 20240204123748.png]]
Important: After transfer, the target rigs new animation needs to be stacked & renamed within the NLA Editor !
![[Pasted image 20240204122751.png]]

View file

@ -0,0 +1,2 @@
https://www.youtube.com/watch?v=nvjq7C9BbAQ

View file

@ -0,0 +1,15 @@
https://youtu.be/HHnt-3uLSUo?si=_fXOZOGe6l3Bl5nl
Manual Weight Painting around 45:22
Consider Voxel Heat Diffuse Skinning Addon for 30€
Dont use Preserve Volume Flag, as it doesnt transfer to Game Engines anyway. Its a strictly cosmetic Blender-only improvement.
Weight Painting Problems: Check out this free Addon: https://youtu.be/7FBVukiQNbQ?si=_DvJoRSWyODDfWPZ
Weight Painting Playlist: https://www.youtube.com/watch?v=LPYs3pZEzPY&list=PLdcL5aF8ZcJsFEdlMJ7To0Iu9s-XCFV3W

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

View file

@ -0,0 +1,5 @@
cd
by Grant Abbitt
find on Youtube
https://www.youtube.com/watch?v=ETMoOhAgXiY&list=PLn3ukorJv4vsmEcCMDX-dpBceuv_GJFcB

View file

@ -0,0 +1 @@
K

View file

@ -0,0 +1,3 @@
X (Delete)
Then select dissolve option

View file

@ -0,0 +1,4 @@
1.) Select Armature
2.) Select Mesh
Select Weight Paint Mode ( Now appears besides Object Mode, Edit Mode and Pose Mode)

View file

@ -0,0 +1 @@
![[Pasted image 20240320114003.png]]

View file

@ -0,0 +1,3 @@
Edit Mode
Ctrl + NumPad+

View file

@ -0,0 +1,3 @@
Needs to be in Object Mode
M ( Move to collection)

View file

@ -0,0 +1,3 @@
Ctrl-A => Apply visual geometry to mesh
![[Pasted image 20240306100043.png]]

View file

@ -0,0 +1,8 @@
1.) Generate Human and process: Bake Textures, Apply modifiers, LOD 1/4
Baking currently takes 2 minutes ( current Desktop PC ) on a minimal underwear human.
2.) Save as <Modelname>_00.blend
3.) Remove Hair, Eyes, Teeth , Bones, Particles
![[objects to remove.png]]
![[objects to remove 2.png]]

View file

@ -0,0 +1 @@
Weight Paint thigh twist im Beinbereich erweitern ?

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

View file

@ -0,0 +1,4 @@
1.) HG LOD Version: female_00.blend
2.) Same model reduced to body: female_01_body.blend
3.) Rigged Version: female_02_rig.blend
4.) Added anims: female_03_anim.blend

View file

@ -0,0 +1 @@
https://youtu.be/PDISK_JPPQE?si=3bIk5oyDBX9YDw6q

View file

@ -0,0 +1,3 @@
https://youtu.be/qwOM3v8T33Q?si=-0Lg0x6hNJJT9gNO
Continue around 10:00

View file

@ -0,0 +1 @@
https://youtu.be/R4xN4DTNDU4?si=EzYM1MMawKnQVq6B

View file

@ -0,0 +1,10 @@
pixel positions on the screen use Vector2 coordinates
cell to world using Vector2
```
var cell_size:Vector2 = Vector2(50.0, 50.0)
# or: var cell_size := Vector2(50.0, 50.0)
func grid_to_world(cell):
return cell + cell_size + cell_size / 2
```

View file

@ -0,0 +1 @@
https://youtu.be/43BZsLZheA4?si=c4FDGWrRWdAPjeMC

View file

@ -0,0 +1,6 @@
```python
func _ready() -> void:
var gem_scene := preload("gem.tscn")
var gem_instance := gem_scene.instantiate()
add_child(gem_instance)
```

View file

@ -0,0 +1,3 @@
```python
random_item_scene: PackedScene = item_scenes.pick_random()
```

View file

@ -0,0 +1,29 @@
```python
extends Node2D
var item_scenes := [
preload("gem.tscn"),
preload("health_pack.tscn")
]
func _ready():
get_node("Timer").timeout.connect(_on_timer_timeout)
func _process(delta):
pass
func _on_timer_timeout() -> void:
var random_item_scene: PackedScene = item_scenes.pick_random()
var item_instance = random_item_scene.instantiate()
add_child(item_instance)
var viewport_size = get_viewport_rect().size
var random_position := Vector2(0,0)
random_position.x = randf_range(0, viewport_size.x)
random_position.y = randf_range(0, viewport_size.y)
item_instance.position = random_position
```

View file

@ -0,0 +1,5 @@
Connecting the timeout signal of timer to a local function
```python
get_node("Timer").timeout.connect(_on_timer_timeout)
```

View file

@ -0,0 +1 @@
https://youtu.be/fzJJXuLzobs?si=L9LE1w6l0K_3BRGT

View file

@ -0,0 +1,13 @@
- Ein Multiplayer Online 3D RPG
- Besteht aus 3 Komponenten:
-
- 1.) **Master Server**
* Verwaltet alle persistenten Daten, managed die Scene Server wenn ein Spieler einloggt.
* Wenn eine benötigte Szene nicht von einem Scene Server bereits vorgehalten wird, sucht der Master Server einen Scenen Server mit 0 Spielern aus, und sendet ihm den Befehl die benötigte Szene zu laden. Da immer mindestens genauso viele Scene Server wie Spieler bereitgestellt werden, ist hier keine Mangelsituation möglich ( Fehler durch Blocking, etc. einmal ausgenommen)
- 2.) **Scene Server Pool**
* Jeder SS verwaltet eine Szene mit allen 3D Objekten und ihren Attributen im Headless Mode. Alle in der Szene befindlichen Spieler werden über den Scene Server miteinander koordiniert. Der Scene Server erhält vom Master Server den Befehl, eine Szene zu laden.
- 3.) **Client**
* Verbindet sich mit Master Server für Login. Dann Character Wahl. Master Server antwortet mit IP + Port des Scene Servers für den Connect.

View file

@ -0,0 +1,12 @@
3D Tilemaps ( Godot 4.1 )
https://www.youtube.com/watch?v=JxbnStn-BIY
Designing 3D Game Levels from Scratch
https://www.youtube.com/watch?v=dV6S_11pyzo
See also free grass plugin
Otherwise, creating grass from scratch:
https://youtu.be/kGtSHFeMqTo?si=zX_GgeEmdCNHPJ24
For lots of same objects like trees, consider using MultiMeshInstance3D:
https://docs.godotengine.org/en/4.2/tutorials/3d/using_multi_mesh_instance.html