Mercurial > hg > Papers > 2017 > kazuma-thesis
changeset 9:49607e7d8871
Add Scene, Item Tree Image.
Update main.tex << CAP theorem etc.
author | Kazuma Takeda |
---|---|
date | Sun, 12 Feb 2017 10:46:43 +0900 |
parents | 7313ae32fa21 |
children | 207fa0b0c3a2 |
files | paper/images/ItemTree.pdf paper/images/ItemTree_sub.graffle paper/images/ItemTree_sub.pdf paper/images/Tree.graffle paper/images/Tree.pdf paper/images/data/benchmark.dat paper/images/itemTree.graffle paper/main.pdf paper/main.tex paper/reference.bib |
diffstat | 10 files changed, 2514 insertions(+), 76 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/images/Tree.graffle Sun Feb 12 10:46:43 2017 +0900 @@ -0,0 +1,2269 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>ActiveLayerIndex</key> + <integer>0</integer> + <key>ApplicationVersion</key> + <array> + <string>com.omnigroup.OmniGraffle6</string> + <string>169.23.0.276662</string> + </array> + <key>AutoAdjust</key> + <true/> + <key>BackgroundGraphic</key> + <dict> + <key>Bounds</key> + <string>{{0, 0}, {1677.8267011642456, 1565.779541015625}}</string> + <key>Class</key> + <string>SolidGraphic</string> + <key>ID</key> + <integer>2</integer> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + </dict> + <key>BaseZoom</key> + <integer>0</integer> + <key>CanvasOrigin</key> + <string>{0, 0}</string> + <key>ColorProfiles</key> + <array> + <dict> + <key>data</key> + <data> + AAACJGFwcGwEAAAAbW50clJHQiBYWVogB98ACgAOAA0ACAA5YWNz + cEFQUEwAAAAAQVBQTAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA + 0y1hcHBs5bsOmGe9Rs1LvkRuvRt1mAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAKZGVzYwAAAPwAAABlY3BydAAAAWQAAAAj + d3RwdAAAAYgAAAAUclhZWgAAAZwAAAAUZ1hZWgAAAbAAAAAUYlhZ + WgAAAcQAAAAUclRSQwAAAdgAAAAgY2hhZAAAAfgAAAAsYlRSQwAA + AdgAAAAgZ1RSQwAAAdgAAAAgZGVzYwAAAAAAAAALRGlzcGxheSBQ + MwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAB0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSBJbmMuLCAyMDE1 + AABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAACD3wAAPb// + //+7WFlaIAAAAAAAAEq/AACxNwAACrlYWVogAAAAAAAAKDgAABEL + AADIuXBhcmEAAAAAAAMAAAACZmYAAPKwAAANUAAAE7YAAAn8c2Yz + MgAAAAAAAQxCAAAF3v//8yYAAAeTAAD9kP//+6L///2jAAAD3AAA + wG4= + </data> + <key>space</key> + <string>0c23c45ae9b201f35db0195c7ae905477d83da5b</string> + </dict> + </array> + <key>ColumnAlign</key> + <integer>1</integer> + <key>ColumnSpacing</key> + <real>36</real> + <key>CreationDate</key> + <string>2016-11-09 22:49:51 +0000</string> + <key>Creator</key> + <string>sister_clown</string> + <key>DisplayScale</key> + <string>1.0000 cm = 1.0000 cm</string> + <key>GraphDocumentVersion</key> + <integer>12</integer> + <key>GraphicsList</key> + <array> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>Head</key> + <dict> + <key>ID</key> + <integer>62</integer> + </dict> + <key>ID</key> + <integer>90</integer> + <key>Points</key> + <array> + <string>{630.63779960927059, 995.13387186808927}</string> + <string>{437.10232331438374, 888.72441829114518}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <false/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>86</integer> + <key>Info</key> + <integer>2</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{477.63779960927059, 1093.1338718680836}, {306.00000000000006, 71}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuPro-W3</string> + <key>Size</key> + <real>20</real> + </dict> + <key>ID</key> + <integer>89</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <real>0.97457300000000002</real> + <key>g</key> + <real>0.99806399999999995</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <real>0.75</real> + <key>b</key> + <real>0.94523000000000001</real> + <key>g</key> + <real>0.98711599999999999</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs40 \cf0 NodeName : Item\ +Type : string}</string> + </dict> + <key>TextRelativeArea</key> + <string>{{0, 0}, {1, 1}}</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{599.63779960926934, 1002.1338718680892}, {62, 47}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuPro-W3</string> + <key>Size</key> + <real>24</real> + </dict> + <key>ID</key> + <integer>88</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <real>0.97457300000000002</real> + <key>g</key> + <real>0.99806399999999995</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <real>0.75</real> + <key>b</key> + <real>0.94523000000000001</real> + <key>g</key> + <real>0.98711599999999999</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs48 \cf0 Item}</string> + </dict> + <key>TextRelativeArea</key> + <string>{{0, 0}, {1, 1}}</string> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{477.63779960927059, 1048.1338718680877}, {306.00000000000006, 160}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuProN-W3</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>87</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{477.63779960927059, 995.13387186808927}, {306.00000000000006, 53}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuProN-W3</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>86</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>Head</key> + <dict> + <key>ID</key> + <integer>62</integer> + <key>Info</key> + <integer>1</integer> + </dict> + <key>ID</key> + <integer>85</integer> + <key>Points</key> + <array> + <string>{281.97637912297813, 995.13387186808916}</string> + <string>{437.10232331438374, 888.72441829114518}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <false/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>81</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{128.9763791229781, 1093.1338718680834}, {306.00000000000006, 71}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuPro-W3</string> + <key>Size</key> + <real>20</real> + </dict> + <key>ID</key> + <integer>84</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <real>0.97457300000000002</real> + <key>g</key> + <real>0.99806399999999995</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <real>0.75</real> + <key>b</key> + <real>0.94523000000000001</real> + <key>g</key> + <real>0.98711599999999999</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs40 \cf0 NodeName : Item\ +Type : string}</string> + </dict> + <key>TextRelativeArea</key> + <string>{{0, 0}, {1, 1}}</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{250.97637912297628, 1002.133871868089}, {62, 47}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuPro-W3</string> + <key>Size</key> + <real>24</real> + </dict> + <key>ID</key> + <integer>83</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <real>0.97457300000000002</real> + <key>g</key> + <real>0.99806399999999995</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <real>0.75</real> + <key>b</key> + <real>0.94523000000000001</real> + <key>g</key> + <real>0.98711599999999999</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs48 \cf0 Item}</string> + </dict> + <key>TextRelativeArea</key> + <string>{{0, 0}, {1, 1}}</string> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{128.9763791229781, 1048.1338718680877}, {306.00000000000006, 160}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuProN-W3</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>82</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{128.9763791229781, 995.13387186808916}, {306.00000000000006, 53}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuProN-W3</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>81</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>Helvetica</string> + <key>Size</key> + <real>12</real> + </dict> + <key>Head</key> + <dict> + <key>ID</key> + <integer>76</integer> + <key>Info</key> + <integer>2</integer> + </dict> + <key>ID</key> + <integer>80</integer> + <key>Points</key> + <array> + <string>{1056.4724076741804, 577.31496471420087}</string> + <string>{1240.7243778498619, 670.39370686998552}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Legacy</key> + <false/> + <key>LineType</key> + <integer>1</integer> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>67</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{1087.7243778498619, 768.39370686998552}, {306.00000000000006, 71}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuPro-W3</string> + <key>Size</key> + <real>20</real> + </dict> + <key>ID</key> + <integer>79</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <real>0.97457300000000002</real> + <key>g</key> + <real>0.99806399999999995</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <real>0.75</real> + <key>b</key> + <real>0.94523000000000001</real> + <key>g</key> + <real>0.98711599999999999</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs40 \cf0 NodeName : Item\ +Type : string}</string> + </dict> + <key>TextRelativeArea</key> + <string>{{0, 0}, {1, 1}}</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{1209.7243778498587, 677.39370686998552}, {62, 47}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuPro-W3</string> + <key>Size</key> + <real>24</real> + </dict> + <key>ID</key> + <integer>78</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <real>0.97457300000000002</real> + <key>g</key> + <real>0.99806399999999995</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <real>0.75</real> + <key>b</key> + <real>0.94523000000000001</real> + <key>g</key> + <real>0.98711599999999999</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs48 \cf0 Item}</string> + </dict> + <key>TextRelativeArea</key> + <string>{{0, 0}, {1, 1}}</string> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{1087.7243778498619, 723.39370686998575}, {306.00000000000006, 160}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuProN-W3</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>77</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{1087.7243778498619, 670.39370686998552}, {306.00000000000006, 53}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuProN-W3</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>76</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>71</integer> + </dict> + <key>ID</key> + <integer>75</integer> + <key>Points</key> + <array> + <string>{1056.0441338134281, 577.57299862708101}</string> + <string>{901.98421729610766, 670.39370686998552}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Join</key> + <integer>0</integer> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>67</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{748.98421729610766, 768.39370686998552}, {306.00000000000006, 71}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuPro-W3</string> + <key>Size</key> + <real>20</real> + </dict> + <key>ID</key> + <integer>74</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <real>0.97457300000000002</real> + <key>g</key> + <real>0.99806399999999995</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <real>0.75</real> + <key>b</key> + <real>0.94523000000000001</real> + <key>g</key> + <real>0.98711599999999999</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs40 \cf0 NodeName : Item\ +Type : string}</string> + </dict> + <key>TextRelativeArea</key> + <string>{{0, 0}, {1, 1}}</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{870.98421729610629, 677.39370686998552}, {62, 47}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuPro-W3</string> + <key>Size</key> + <real>24</real> + </dict> + <key>ID</key> + <integer>73</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <real>0.97457300000000002</real> + <key>g</key> + <real>0.99806399999999995</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <real>0.75</real> + <key>b</key> + <real>0.94523000000000001</real> + <key>g</key> + <real>0.98711599999999999</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs48 \cf0 Item}</string> + </dict> + <key>TextRelativeArea</key> + <string>{{0, 0}, {1, 1}}</string> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{748.98421729610766, 723.39370686998575}, {306.00000000000006, 160}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuProN-W3</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>72</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{748.98421729610766, 670.39370686998552}, {306.00000000000006, 53}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuProN-W3</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>71</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>66</integer> + </dict> + <key>ID</key> + <integer>70</integer> + <key>Points</key> + <array> + <string>{812.59036717684864, 319.6075886823657}</string> + <string>{903.47240767418043, 390.81496471420076}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Join</key> + <integer>0</integer> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>38</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{903.47240767418032, 461.81496471420087}, {306.00000000000006, 41}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuPro-W3</string> + <key>Size</key> + <real>20</real> + </dict> + <key>ID</key> + <integer>69</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <real>0.97457300000000002</real> + <key>g</key> + <real>0.99806399999999995</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <real>0.75</real> + <key>b</key> + <real>0.94523000000000001</real> + <key>g</key> + <real>0.98711599999999999</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs40 \cf0 NodeName : Stage}</string> + </dict> + <key>TextRelativeArea</key> + <string>{{0, 0}, {1, 1}}</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{1016.9724076741794, 371.31496471420076}, {79, 47}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuPro-W3</string> + <key>Size</key> + <real>24</real> + </dict> + <key>ID</key> + <integer>68</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <real>0.97457300000000002</real> + <key>g</key> + <real>0.99806399999999995</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <real>0.75</real> + <key>b</key> + <real>0.94523000000000001</real> + <key>g</key> + <real>0.98711599999999999</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs48 \cf0 Stage}</string> + </dict> + <key>TextRelativeArea</key> + <string>{{0, 0}, {1, 1}}</string> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{903.47240767418032, 417.31496471420087}, {306.00000000000006, 160}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuProN-W3</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>67</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{903.47240767418032, 364.31496471420076}, {306.00000000000006, 53}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuProN-W3</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>66</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>61</integer> + </dict> + <key>ID</key> + <integer>65</integer> + <key>Points</key> + <array> + <string>{577.41728521740424, 577.31496471420087}</string> + <string>{437.10232331438374, 675.72441829114496}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Join</key> + <integer>0</integer> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>58</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{284.10232331438374, 773.72441829114496}, {306.00000000000006, 41}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuPro-W3</string> + <key>Size</key> + <real>20</real> + </dict> + <key>ID</key> + <integer>64</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <real>0.97457300000000002</real> + <key>g</key> + <real>0.99806399999999995</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <real>0.75</real> + <key>b</key> + <real>0.94523000000000001</real> + <key>g</key> + <real>0.98711599999999999</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs40 \cf0 NodeName : HaveItem}</string> + </dict> + <key>TextRelativeArea</key> + <string>{{0, 0}, {1, 1}}</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{376.10232331438294, 682.72441829114496}, {122, 47}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuPro-W3</string> + <key>Size</key> + <real>24</real> + </dict> + <key>ID</key> + <integer>63</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <real>0.97457300000000002</real> + <key>g</key> + <real>0.99806399999999995</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <real>0.75</real> + <key>b</key> + <real>0.94523000000000001</real> + <key>g</key> + <real>0.98711599999999999</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs48 \cf0 HaveItem}</string> + </dict> + <key>TextRelativeArea</key> + <string>{{0, 0}, {1, 1}}</string> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{284.10232331438374, 728.72441829114518}, {306.00000000000006, 160}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuProN-W3</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>62</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{284.10232331438374, 675.72441829114496}, {306.00000000000006, 53}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuProN-W3</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>61</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>55</integer> + </dict> + <key>ID</key> + <integer>56</integer> + <key>Points</key> + <array> + <string>{812.19678772401733, 319.29921356289429}</string> + <string>{730.41728521740424, 390.81496471420076}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>Join</key> + <integer>0</integer> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>38</integer> + <key>Info</key> + <integer>1</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{659.19678772401733, 204.29921356289435}, {306.00000000000006, 41}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuPro-W3</string> + <key>Size</key> + <real>20</real> + </dict> + <key>ID</key> + <integer>40</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <real>0.97457300000000002</real> + <key>g</key> + <real>0.99806399999999995</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <real>0.75</real> + <key>b</key> + <real>0.94523000000000001</real> + <key>g</key> + <real>0.98711599999999999</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs40 \cf0 NodeName : Scene}</string> + </dict> + <key>TextRelativeArea</key> + <string>{{0, 0}, {1, 1}}</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{770.69678772401733, 112.29921356289415}, {83, 47}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuPro-W3</string> + <key>Size</key> + <real>24</real> + </dict> + <key>ID</key> + <integer>39</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <real>0.97457300000000002</real> + <key>g</key> + <real>0.99806399999999995</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <real>0.75</real> + <key>b</key> + <real>0.94523000000000001</real> + <key>g</key> + <real>0.98711599999999999</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs48 \cf0 Scene}</string> + </dict> + <key>TextRelativeArea</key> + <string>{{0, 0}, {1, 1}}</string> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{659.19678772401733, 159.29921356289429}, {306.00000000000006, 160}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuProN-W3</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>38</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{659.19678772401733, 106.29921356289404}, {306.00000000000006, 53}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuProN-W3</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>37</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{424.41728521740424, 462.31496471420076}, {306.00000000000006, 71}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>Vertical</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuPro-W3</string> + <key>Size</key> + <real>20</real> + </dict> + <key>ID</key> + <integer>57</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <real>0.97457300000000002</real> + <key>g</key> + <real>0.99806399999999995</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <real>0.75</real> + <key>b</key> + <real>0.94523000000000001</real> + <key>g</key> + <real>0.98711599999999999</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs40 \cf0 NodeName : Player\ +HP : int}</string> + </dict> + <key>TextRelativeArea</key> + <string>{{0, 0}, {1, 1}}</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{535.91728521740367, 371.31496471420076}, {83, 47}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FitText</key> + <string>YES</string> + <key>Flow</key> + <string>Resize</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuPro-W3</string> + <key>Size</key> + <real>24</real> + </dict> + <key>ID</key> + <integer>54</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>fill</key> + <dict> + <key>Color</key> + <dict> + <key>b</key> + <real>0.97457300000000002</real> + <key>g</key> + <real>0.99806399999999995</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>shadow</key> + <dict> + <key>Color</key> + <dict> + <key>a</key> + <real>0.75</real> + <key>b</key> + <real>0.94523000000000001</real> + <key>g</key> + <real>0.98711599999999999</real> + <key>r</key> + <real>1</real> + </dict> + <key>Draws</key> + <string>NO</string> + </dict> + <key>stroke</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>Text</key> + <string>{\rtf1\ansi\ansicpg932\cocoartf1504\cocoasubrtf810 +{\fonttbl\f0\fnil\fcharset128 HiraKakuPro-W3;} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs48 \cf0 Player}</string> + </dict> + <key>TextRelativeArea</key> + <string>{{0, 0}, {1, 1}}</string> + <key>Wrap</key> + <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{424.41728521740424, 417.31496471420087}, {306.00000000000006, 160}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuProN-W3</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>58</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{424.41728521740424, 364.31496471420076}, {306.00000000000006, 53}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>FontInfo</key> + <dict> + <key>Font</key> + <string>HiraKakuProN-W3</string> + <key>Size</key> + <real>12</real> + </dict> + <key>ID</key> + <integer>55</integer> + <key>Magnets</key> + <array> + <string>{0, 1}</string> + <string>{0, -1}</string> + <string>{1, 0}</string> + <string>{-1, 0}</string> + </array> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <real>0.0</real> + </dict> + </dict> + </array> + <key>GridInfo</key> + <dict/> + <key>GuidesLocked</key> + <string>NO</string> + <key>GuidesVisible</key> + <string>YES</string> + <key>HPages</key> + <integer>3</integer> + <key>ImageCounter</key> + <integer>1</integer> + <key>KeepToScale</key> + <false/> + <key>Layers</key> + <array> + <dict> + <key>Lock</key> + <string>NO</string> + <key>Name</key> + <string>レイヤー 1</string> + <key>Print</key> + <string>YES</string> + <key>Slices</key> + <string>NO</string> + <key>View</key> + <string>YES</string> + </dict> + </array> + <key>LayoutInfo</key> + <dict> + <key>Animate</key> + <string>NO</string> + <key>circoMinDist</key> + <real>18</real> + <key>circoSeparation</key> + <real>0.0</real> + <key>layoutEngine</key> + <string>dot</string> + <key>neatoLineLength</key> + <real>0.20000000298023224</real> + <key>neatoSeparation</key> + <real>0.0</real> + <key>twopiSeparation</key> + <real>0.0</real> + </dict> + <key>LinksVisible</key> + <string>NO</string> + <key>MagnetsVisible</key> + <string>NO</string> + <key>MasterSheets</key> + <array/> + <key>ModificationDate</key> + <string>2017-02-11 20:51:53 +0000</string> + <key>Modifier</key> + <string>kazuma</string> + <key>NotesVisible</key> + <string>NO</string> + <key>Orientation</key> + <integer>2</integer> + <key>OriginVisible</key> + <string>NO</string> + <key>PageBreaks</key> + <string>YES</string> + <key>PrintInfo</key> + <dict> + <key>NSBottomMargin</key> + <array> + <string>float</string> + <string>41</string> + </array> + <key>NSHorizonalPagination</key> + <array> + <string>coded</string> + <string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string> + </array> + <key>NSLeftMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + <key>NSPaperSize</key> + <array> + <string>size</string> + <string>{595.27556705474854, 841.8897705078125}</string> + </array> + <key>NSPrintReverseOrientation</key> + <array> + <string>coded</string> + <string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string> + </array> + <key>NSRightMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + <key>NSTopMargin</key> + <array> + <string>float</string> + <string>18</string> + </array> + </dict> + <key>PrintOnePage</key> + <false/> + <key>ReadOnly</key> + <string>NO</string> + <key>RowAlign</key> + <integer>1</integer> + <key>RowSpacing</key> + <real>36</real> + <key>SheetTitle</key> + <string>キャンバス 1</string> + <key>SmartAlignmentGuidesActive</key> + <string>YES</string> + <key>SmartDistanceGuidesActive</key> + <string>YES</string> + <key>UniqueID</key> + <integer>1</integer> + <key>UseEntirePage</key> + <false/> + <key>VPages</key> + <integer>2</integer> + <key>WindowInfo</key> + <dict> + <key>CurrentSheet</key> + <integer>0</integer> + <key>Expanded_Canvases</key> + <array/> + <key>Frame</key> + <string>{{0, 4}, {1440, 773}}</string> + <key>ShowInfo</key> + <false/> + <key>ShowRuler</key> + <true/> + <key>Sidebar</key> + <true/> + <key>SidebarWidth</key> + <integer>230</integer> + <key>TopSlabHeight</key> + <real>33</real> + <key>VisibleRegion</key> + <string>{{-817, -71}, {3313.8887572067811, 1705.5554877828695}}</string> + <key>Zoom</key> + <real>0.36000001430511475</real> + <key>ZoomValues</key> + <array> + <array> + <string>キャンバス 1</string> + <real>0.36000001430511475</real> + <real>0.35999999999999999</real> + </array> + </array> + </dict> +</dict> +</plist>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/images/data/benchmark.dat Sun Feb 12 10:46:43 2017 +0900 @@ -0,0 +1,11 @@ +0.0221659999999991 0.00634254000000024 +0.0763213999999985 +0.134959100000002 +0.192013700000006 +0.245827100000001 +0.307068400000001 +0.378273300000001 +0.422391099999998 +0.479521799999997 +0.541746899999996 +0.629517200000003
--- a/paper/main.tex Fri Feb 10 21:13:16 2017 +0900 +++ b/paper/main.tex Sun Feb 12 10:46:43 2017 +0900 @@ -37,7 +37,7 @@ \setlength{\itemsep}{-1zh} \title{ゲームエンジンにおける木構造データベースJungleの提案} -%\title{Supporting NAT in Screen Sharing System TreeVNC} +\title{Proposal of tree structured database Jungle in Game Engine.} \icon{ \includegraphics[width=80mm,bb=0 0 595 642]{fig/ryukyu.pdf} %%元は 642じゃなくて842 } @@ -79,6 +79,7 @@ \chapter{ゲームエンジンにおけるデータベース} この章ではデータベースの種類であるRelational DatabaseとNoSQLについて述べる。 +次に分散システムにおいて重要なCAP定理に触れる。 \section{Relational Database} @@ -89,16 +90,107 @@ RDBは主として使われているデータベースであるが、苦手としている事がある。 それは、スキーマレスなデータの扱いやマシン台数を増やし処理速度を上げることである。 -% これは必要か?みたいなお話 -水平分割や垂直分割によりデータを分割できるが構造としては複雑化していく。 + +テーブルを水平分割や垂直分割によりデータを分割できるが構造としては複雑化していく。 + +\section{ACIDトランザクション} + +%書く + +ACID(Atomicity,Consistency,Isolation,Durability) は +データベースのトランザクションの処理が確実に実行されることを保証するものである\cite{amazonacid}。 + +ほとんどのRDBMSはACIDトランザクションを保証している。 + +\begin{itemize} +\item Atomicity(原子性) + +トランザクションを実行する際に、すべて成功するか、すべて失敗するか。 + +\item Consistency(一貫性) + +トランザクション開始時と終了時にデータが一貫していなければならない。 + +\item Isolation(独立性) + +他のトランザクションによる干渉を受けない。 + +\item Durability(永続性) + +コミットしたトランザクションのデータは保存される。 + +\end{itemize} \section{NoSQL} -NoSQLはNot Only SQLの略で、SQLを必要としない非リレーショナル型のデータベースである。 +NoSQLはNot Only SQLの略である。 + +通常NoSQLデータベースは非リレーショナル型であり、スキームの定義がない\cite{nosql}。 + +不定形の構造の変更をトランザクションとして、Jsonの一括変更という形で処理されてしまっており、並列アプリケーションには向いていない。 + +\section{CAP定理} + +分散システムにおいて、次の3つを同時に保証することは出来ない。 + +\begin{itemize} +\item Consistency(一貫性) + +すべてのノードはクエリが同じならば同じデータを返す。 + +\item Availability(可用性) + +あるノードに障害が発生しても、機能しているノードにより常にデータの読み書きが行える。 + +\item Partition-tolerance(分断耐性) + +ネットワーク障害によりノードの接続が切れてもデータベースは機能し続けることができる。 + +\end{itemize} + +これはCAP定理\cite{cap}と呼ばれる。 +データベースを利用する場合はCAP定理を意識しながら選択する。 + +一貫性と可用性を重視したデータベースがRDBである。 +分断耐性を必要とする場合はNoSQLデータベースとなる。 + +NoSQLデータベースでは一貫性を取るか、可用性を取るかによって選択するデータベースが変わる。 +以下にその2つの例を示す。 -JsonやXMLを扱えるデータベースでは通常スキームを必要としないため、特に扱うデータの型が決まっていなくても使うことができる。 +\begin{itemize} + +\item MongoDB + +MongoDBは2009年に公開されたNoSQLのデータベースである。 +ドキュメント指向型とされ、事前にテーブルの構造を決めておく必要がない。 +これをスキーマレスという。 + +MongoDBはマスター/スレーブ方式のReplicationを採用している。 +保存したデータ(マスター)を複数のサーバー(スレーブ)に複製を取る。 + +スレーブをReadさせることによって負荷分散も可能になる。 + +また、一台のサーバーにすべてのデータを持たず、複数のサーバーに分割して保持する。 +これをShardingという。 -しかし、不定形の構造の変更をトランザクションとして、Jsonの一括変更という形で処理されてしまっており、並列アプリケーションには向いていない。 +MongoDBはReplocationとShardingにより、分断耐性と一貫性を持つ。 + +\item Cassandra + +Cassandra\cite{cassandra}は2008年にFacebookによって公開されたKey-Value型のデータベースである。 +AmazonのDynamo\cite{amazonacid}とGoogleのBigTable\cite{bigtable}を合わせた特徴を持っている。 +Key-Valueであるため、スキーマレスなNoSQLとなる。 + +Bigtableから採用した、カラムファミリーと呼ばれる構造を基本としている。 + +カラムファミリーの行の部分はHashMapや連想配列のようにKey-Valueで複数格納している。 + +1つのKey-Valueの組をカラムと呼ぶ。 +RDBとは異なり、カラム名を事前に定義する必要がない。 + +分散構造 + +\end{itemize} \section{Jungleの提案} @@ -108,8 +200,10 @@ ウェブサイトの構造は大体が木構造であるため、データ構造として木構造を採用している。 しかし、ウェブサイトだけでなくゲームにおいてもデータ構造が木構造になっている。 -本研究ではJungleをUnityを用いたゲームで使用する方法を提案する。 +そこで、本研究ではJungleの木構造である特性を活かし、ゲームエンジンUnityで作成したゲームで使用する方法を提案する。 + データベースとしてJungle Databaseを採用する。 + JungleはJavaとHaskellによりそれぞれの言語で開発されている。 本研究で扱うのはJava版をC\#で再実装したものである。 @@ -287,16 +381,31 @@ この章ではゲームにおけるデータについて述べ、その後Jungleとの関係性や実装を記述する。 \section{ゲームのデータ} -ゲーム中のデータには幾つか考えられる。 + +ゲームを開発する際にデータの種類について知っておく必要がある。 +以下にゲームにおけるデータを記述する。 %% Attonさんの論文に書いてたitemizeを使うといいかも箇条書きっぽいかきかた。 -シーンのオブジェクトが持つパラメータ -ゲームのセーブデータ -ネットワーク上で使用するデータ +\begin{itemize} +\item オブジェクトが単体で持つデータ + +シーン内に存在するオブジェクトが持つパラメータ +例えばプレイヤーのHPや経験値、位置座標などを示す。 + +\item オブジェクト1つで複数持つデータ + +プレイヤーが持つアイテムデータなどを示す。 + +\item マスタデータ(ReadOnly)\cite{gamedata}\cite{gamedata2} + +アイテムの名前や敵の出現確率などを示す。 +ゲーム開発者のみが更新できる。 + +\end{itemize} \section{ゲームデータとデータベース} -ゲームのデータベースとして長年使われているのがRDBである。 +ゲームのデータベースとして使われているのがRDBである。 プログラム中のデータ構造とRDBの表構造のズレによりインピーダンスミスマッチという問題がある。 @@ -329,7 +438,6 @@ %% 思いついたこと入れた UnityでのJsonのお話 Unity5.3以降のバージョンでは標準でJsonが扱えるようになった。 これにより、インスタンスをJson化することができる。 -しかし、変数名をKeyとしてValueを取り出すといったことは出来ない。 \chapter{Jungle-Sharpの実装} @@ -340,6 +448,7 @@ \section{AtomicRefarenceの実装} Jungleの木の変更(commit)はCAS(Check and Set)を用いてatomicに行われる。競合している書き込み中に自分の書き込みが成功した場合に関数\verb+commit()+が成功する。 +失敗した場合ははじめからもう一度行う。 JavaではAtomicRefarenceが標準であるがC\#にはなかったためAtomicRefarenceのクラスを新たにつくった。 @@ -443,8 +552,6 @@ bindでのEitherをチェックしつつデータを格納する例を以下に記述する。 -%図を入れてもいいかも? - \begin{itembox}[l]{DataSaveTest.cs} \scriptsize{ \begin{verbatim} @@ -467,7 +574,7 @@ } \end{itembox} -bindの実装により、ユーザ側がEitherのErrorチェックを行う必要がなくなる。 +bindの実装により、ユーザ側でEitherのErrorチェックを行う必要がなくなる。 \chapter{Unityで実装したアプリケーション} @@ -481,7 +588,7 @@ \begin{figure}[h] \begin{center} -\includegraphics[height = 6cm , bb=0 0 568 455]{images/craft.png} +\includegraphics[width=10cm]{images/craft.png} \caption{craft} \label{craft} \end{center} @@ -496,22 +603,39 @@ 例題ゲームを構成するゲームの要素を記述する。 Unityではオブジェクトに対してコンポーネントが紐付けられる。 -クラスも同様にコンポーネントして扱える。 +クラスはMonoBehaviourを継承している場合のみコンポーネントして扱える。 %% ただし、MonoBehaviourを継承している場合インスタンスを生成することができない。 ステージを構成するブロックのコンポーネントして、ItemBoxクラスを紐付ける。 -ItemBoxの持つ変数を表\ref{itembox}に示す。 +ItemBoxの持つ変数を表\ref{itemboxes}に示す。 \begin{table}[htb] \begin{center} -\caption{ItemBoxクラスが持つAttribute} -\begin{tabular}{|p{8em}|p{14em}|} \hline -{\tt Broken }& -Itemの体力、0になると自身のItemBoxのオブジェクトを破壊\\ \hline -{\tt ColorCode} & +\caption{ItemBoxクラスが持つパラメータ} +\begin{tabular}{|p{14em}|p{14em}|} \hline +int {\tt Broken }& +Itemの耐久力、0になると自身のItemBoxのオブジェクトを破壊\\ \hline +Color {\tt ColorCode} & 自身のブロックの色 \\ \hline \end{tabular} -\label{itembox} +\label{itemboxes} +\end{center} +\end{table} + +ステージ上に回復アイテムをランダムに配置する。 +回復アイテムにはコンポーネントとして、ItemFoodクラスを紐付ける。 +ItemFoodが持つ変数を表\ref{itemfood}に示す。 + +\begin{table}[htb] +\begin{center} +\caption{FoodBoxクラスが持つパラメータ} +\begin{tabular}{|p{14em}|p{14em}|} \hline +string {\tt Name} & +食べ物の名前 \\ \hline +int {\tt Recovery}& +アイテムを取得時に回復する数\\ \hline +\end{tabular} +\label{itemfood} \end{center} \end{table} @@ -520,11 +644,11 @@ \begin{table}[htb] \begin{center} -\caption{Playerクラスが持つAttribute} -\begin{tabular}{|p{8em}|p{14em}|} \hline -{\tt HP }& +\caption{Playerクラスが持つパラメータ} +\begin{tabular}{|p{14em}|p{14em}|} \hline +int {\tt HP }& プレイヤーの体力、0になるとゲームオーバー\\ \hline -{\tt ItemList} & +List {\tt ItemList} & プレイヤーが持つアイテムのリスト \\ \hline \end{tabular} \label{player} @@ -534,23 +658,53 @@ \section{データ設計} Unityにおけるゲームの構成はObjectの親子関係、つまり木構造である。 -Jungle Databaseは木構造型のデータベースであるので、そのまま格納するという手法が考えられる。 -%% Unityでシーンを構成する際にデータの設計を気にしなくてもいい。 +同じくJungle Databaseは木構造である。 +% Unityでシーンを構成する際にデータの設計を気にしなくてもいい。 + +Jungleでは複数の木を持つことができる。 +ゲームのシーンを構成するGameTreeとアイテムを管理するItemTreeをJungle内に作る。 +ItemTreeは第4章で述べたマスターデータとして扱う。 + +GameTreeではシーン内にあるオブジェクトを格納している。 +例えばPlayerやStageを構成するCubeなどのことを指す。 図\ref{GameTree}ではJungleに格納する構造を示したものである。 + \begin{figure}[h] \begin{center} -\includegraphics[height = 6cm , bb=0 0 568 455]{images/GameTree.pdf} +\includegraphics[width=10cm]{images/Tree.pdf} \caption{GameTree} \label{GameTree} \end{center} \end{figure} +Jungleではオブジェクトが単体で持つデータとオブジェクトが複数持つデータを同時に表現できる。 + +ノード1つのAttributeに対してデータを格納する。 +図\ref{GameTree}のようにPlayerが持つアイテムを表現したい場合はPlayerノードの子としてHaveItemノードを作る。 +HaveItemノードの子として持っているアイテムを子ノードとすればよい。 + + +ItemTreeではItemの情報が格納されている。 +図\ref{ItemTree}ではJungleに格納しているItemの構造を示したものである。 + + +\begin{figure}[h] +\begin{center} +\includegraphics[width=10cm]{images/ItemTree.pdf} +\caption{ItemTree} +\label{ItemTree} +\end{center} +\end{figure} + +ItemTreeではRootノードはItemのTypeが書かれた子ノードを持っている。 +子ノードはStageを構成するBox Type、回復するためのアイテム、Food Typeの2種類である。 \section{Attributeの格納するデータの型} C\#の再実装を行った際にJavaのJungleに沿ってデータの型、つまりByte Arrayで設計を行っていた。 + データの格納を行うたびにByte Arrayへのキャストを行う必要がある。 しかし、キャストの処理は軽くはない。 @@ -591,16 +745,19 @@ データの型の再設計を行ったことによりシーン内のオブジェクトをそのまま格納が可能になった。 格納の際にByte Arrayに変換する必要がない。 + 分散構造や、ネットワークで必要な時だけ変換する。 \chapter{ベンチマーク} -本章ではC\#とJavaのJungleとの比較、Jungle-SharpとUnity上で使われるSQLite3、PlayerPrefsとの比較を行う。 +本章ではC\#とJava版Jungleとの比較、Jungle-SharpとUnity上で使われるSQLite3、PlayerPrefsとの比較を行う。 \section{Javaとの比較} 本論文ではJavaで書かれたJungle DatabaseをC\#で再実装した。 + 同じオペレーションでJavaとC\#で計測する。 + なお、1回目の処理はキャッシュを作り処理が遅くなるため、計測は行わず、2回目以降から行う。 計測時に使用したデータ挿入のオペレーションを以下に記述する。 @@ -648,15 +805,17 @@ \begin{figure}[h] \begin{center} -\includegraphics[height = 6cm , bb=0 0 568 455]{images/BenchMarkmark.pdf} +\includegraphics[width = 10cm]{images/benchmark.pdf} \caption{BenchMark} \label{BenchMark} \end{center} \end{figure} -Jungleの挿入の計算量はO(Log n)が期待される。 +Jungleでは木構造を変更する計算量として、O(1)からO(n)が期待される。 + 図\ref{BenchMark}より、Unityで実行した結果ではO(n)となっている。 Unityではレンダリングの機能も兼ねている。 + そのためプログラムを実行している間もレンダリングを行っているため、 純粋なPutAttributeの計算時間ではないと考えられる。 @@ -732,6 +891,7 @@ そのため通信を行わずにデータのやり取りができる。 SQLite3ではデータを挿入のSQLを実行するたびデータベースとの通信を行うため遅くなっている。 + PlayerPrefsはデータをまとめてセットすることができる。 しかし、バイナリ形式で保存されるため、書き出す時間がかかってしまう。 @@ -742,18 +902,22 @@ JavaとC\#は比較的似ている言語であるため移行は難しくはなかった。 性能としてもJava版に劣らない、もしくはそれ以上のパフォーマンスを出せる。 + Eitherでのbindの実装で、より関数型プログラミングを意識しながら記述することができる。 これはJava版にはない実装である。 Jungle DatabaseはもともとWeb向けに作られたデータベースである。 + Webではリニアにデータが書き換わることは多くない。 しかしゲームでは扱うデータが多くリニアに書き換わる。 そのため、Jungleの構成は保ちつつ、ゲームに合わせたJungleの拡張を行った。 + データの格納の際にByteBufferであったものをObject型に変更した。 これにより、シーンを構成するObjectを手間なく格納することを可能にした。 Jungleは非破壊であるため、過去の変更を持っている。 + ゲームにおいて過去の木を持ち続けることはパフォーマンスの低下につながる。 そのため、過去の木をどこまで必要かを検討しなければならない。
--- a/paper/reference.bib Fri Feb 10 21:13:16 2017 +0900 +++ b/paper/reference.bib Sun Feb 12 10:46:43 2017 +0900 @@ -4,61 +4,55 @@ } @Misc{jungle, - author = "Shoshi Tamaki and Seiyu Tani and Shinji Kono", + author = "Shoshi Tamaki, Seiyu Tani, Shinji Kono", title = "Cassandraを使ったスケーラビリティのあるCMSの設計", year = 2011, journal = "情報処理学会システムソフトウェアとオペレーティング・システム研究会", } -@Misc{vnc, - author = "{RICHARDSON, T., STAFFORD-FRASER, Q., WOOD, K. R., AND HOPPER,}", - title = "A. Virtual Network Computing", +@Misc{nosql, + author = "PETTER NÄSHOLM", + title = "Extracting Data from NoSQL Databases", month = "jan", - year = 1998 + year = 2012 } -@Misc{zlib, - author = "{LOUP GAILLY, J., AND ADLER, M.}", - title = "zlib: A massively spiffy yet delicately unobtrusive compression library.", - howpublished = "\url{http://zlib.net}" +@Misc{gamedata, + author = "{Hitonishi Masaki}", + title = "ゲームエンジニアのためのデータベース設計", + howpublished = "\url{http://www.slideshare.net/sairoutine/ss-62485460}" } -@article{understandingScreenContents, - author = "{Surendar Chandra, Jacob T. Biehl, John Boreczky, Scott Carter, Lawrence A. Rowe}", - title = "Understanding Screen Contents for Building a High Performance, Real Time Screen Sharing System", - journal = "ACM Multimedia", - year = 2012, - month = "Oct" +@article{gamedata2, + author = "{Ryosuke Iwanaga}", + title = "ソーシャルゲームのためのMySQL入門", + howpublished = "\url{http://engineer.dena.jp/2010/11/mysql-for-socialgame.html}" } -@article{taninari:2011a, - author = "{Yu TANINARI and Nobuyasu OSHIRO and Shinji KONO}", - title = "VNCを用いた授業用画面共有システムの実装と設計", - journal = "日本ソフトウェア科学会第28回大会論文集", - month = "sep", - year = 2011 + +@article{cap, + author = "Nancy Lynch, Seth Gilbert", + title = "Brewer's conjecture and the feasibility of consistent, available, partition-tolerant web services", + journal = "ACM SIGACT News", + year = "2002" } -@article{taninari:2012a, - author = "{Yu TANINARI and Nobuyasu OSHIRO and Shinji KONO}", - title = "VNCを用いた授業用画面共有システムの設計・開発", - journal = "情報処理学会 システムソフトウェアとオペレーティング・システム研究会(OS)", - month = "may", - year = 2012 +@article{amazonacid, + author = "{Giuseppe DeCandia, Deniz Hastorun, Madan Jampani, Gunavardhan Kakulapati, Avinash Lakshman, Alex Pilchin, Swaminathan Sivasubramanian, Peter Vosshall and Werner Vogels}", + title = "Dynamo: Amazon’s Highly Available Key-value Store", + howpublished = "\url{http://www.read.seas.harvard.edu/~kohler/class/cs239-w08/decandia07dynamo.pdf}", + year = "2007" } -@article{parusu:2016a, - author = "{Tatsuki IHA and Shinji KONO}", - title = "有線LAN上のPC画面配信システムTreeVNCの改良", - journal = "第57回 プログラミング・シンポジウム", - month = "jan", - year = 2016 -} +@article{bigtable, + author = "Fay Changand Jeffrey Dean and Sanjay Ghemawat and Wilson C. Hsieh and Deborah A. Wallach and Mike Burrows and Tushar Chandra and Andrew Fikes and Robert E. Gruber", + title = "Bigtable : A Distributed Storege System for Structured Data" + } -@article{nozomi:2016a, - author = "{Nozomi TERUYA and Shinji KONO}", - title = "分散フレームワークAliceのPC画面配信システムへの応用", - journal = "第57回 プログラミング・シンポジウム", - month = "jan", - year = 2016 -} +@article{cassandra, + author = "Avinash Lakshman and Prashant Malik.", + title = "Cassandra - a decentralized structured storage system", + journal = "LADIS", + year = "2003", + month = "Mar" + }