# HG changeset patch # User Kazuma # Date 1477039876 -32400 # Node ID 600fe9e28aede3fd23097a0a773efe805273de99 # Parent 4c9d4ecb17e67b7cbf24581e3066896a567ddb25 Change midterm.tex, resize pdf diff -r 4c9d4ecb17e6 -r 600fe9e28aed midterm.pdf Binary file midterm.pdf has changed diff -r 4c9d4ecb17e6 -r 600fe9e28aed midterm.tex --- a/midterm.tex Fri Oct 21 16:57:49 2016 +0900 +++ b/midterm.tex Fri Oct 21 17:51:16 2016 +0900 @@ -1,5 +1,5 @@ \documentclass[twocolumn,twoside,9.5pt]{jarticle} -\usepackage[dvips]{graphicx} +\usepackage[dvipdfmx]{graphicx} \usepackage{picins} \usepackage{ascmac} \usepackage{fancyhdr} @@ -28,13 +28,15 @@ \section{非破壊木構造データベース} -当研究室ではデータの変更の際に過去の木構造を保存しつつ新しく木構造を作成する非破壊的木構造を用いたデータベースであるJungleを開発している。 -本研究ではJungle DBをC\#で再実装を行い、Unity向けに組み込みを行う。 +当研究室ではデータの変更の際に過去の木構造を保存しつつ新しく木構造を作成する非破壊的木構造を用いたデータベースであるJungleを開発している\cite{3}。 + +本研究ではJungleの実用例として、ゲームのバックエンドとして利用出来るデータベースとしてJungle DBをC\#で再実装を行い、Unity向けに組み込みを行う。 Jugnleの木は、子供を複数持つノードからなる。子供は順序付けられており、任意の位置で作成削除することができる。 Unityは3Dゲームエンジンである。 -ゲーム構造はシーングラフを実装しており、ゲームオブジェクトの親子関係からなり、子どもを複数もつノードからなる。 +ゲーム構造はシーングラフに類似している。 +ゲームシーンに子ノードのゲーム要素(GameObject)があり、その要素自身も親子関係になっている。 Jungleはこれと同じ構造を持っているため、相性が良い。 % ので、過去の組織のデータを参照する必要が出てくる。よって過去のデータの参照が出来るJungleと相性が良い。 @@ -46,7 +48,7 @@ \section{Unityでの問題点} Unityではデータの保存の際にMySQL、SQlite3、PlayerPrefsといった第一正規系、第二正規系のDBがよく使われている。 -しかし、図1のように木構造でゲームは構成されているため、RDB向けにノードの関係を変換する必要がある。 +しかし、木構造でゲームは構成されているため、ゲーム構造を保存するにはRDB向けにノードの関係を変換する必要がある。 つまり、そのまま格納することができればスケールアウトするデータにも対応でき、データベース設計も簡略化できると考え、C\#に書き直すことにした。 PlayerPrefsとは、Unityに特化したバイナリ形式でKey,Valueのみで保存されるものである。 @@ -54,15 +56,16 @@ \section{Jungle-Sharpの実装} JungleはJavaで書かれているものであったのでUnityで使うにはC\#で実装する必要があった。 -なお、将来的にはクライアント側はC#、サーバー側はJavaで動作させMessagePackを用いてデータのやり取りを行う。 +なお、将来的にはクライアント側はC\#、サーバー側はJavaで動作させMessagePackを用いてデータのやり取りを行う。 \section{AtomicRefefarenceの実装} % atomic reference問題 Jungleの木の更新(commit)は、CAS(check and set*図1)を用いて atomic に行われる。競合している書き込みにの中で自分の書き込みが成功した場合に関数 \verb+success()+が成功する。 JavaにはAtomicRefarenceが標準であったがC\#はなかったため、AtomicReferenceのClassを新たに作った。 -\begin{figure}[h] -\includegraphics[width=2cm, bb=0 0 172 200]{pic/cas.pdf} +\begin{figure}[htbp] +\includegraphics[width=8cm]{pic/cas.pdf} +\label{} \end{figure} {\scriptsize @@ -114,7 +117,7 @@ ListのforeachではIteratorを呼び出すため、一つずつ要素を返す必要がある。 yield returnステートメントを利用することで位置が保持され次に呼ばれた際に続きから値の取り出しが可能になる。 -\newpage + \section{ベンチマーク} UnityではSqlite3,PlayerPrefsがデータの保存として利用される。 @@ -128,8 +131,8 @@ \item Unity : Unity 5.4.2f1 \end{itemize} -\begin{figure}[h] - \includegraphics[width=1cm, bb=0 0 160 200]{pic/benchmark.pdf} +\begin{figure}[htbp] + \includegraphics[width=70mm]{pic/benchmark.pdf} \end{figure} Sqlite3では100msを超えてしまったため省略してある。 diff -r 4c9d4ecb17e6 -r 600fe9e28aed pic/benchmark.bb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pic/benchmark.bb Fri Oct 21 17:51:16 2016 +0900 @@ -0,0 +1,5 @@ +%%Title: ./benchmark.pdf +%%Creator: extractbb 20140317 +%%BoundingBox: 0 0 1568 745 +%%CreationDate: Fri Oct 21 17:09:01 2016 + diff -r 4c9d4ecb17e6 -r 600fe9e28aed pic/benchmark.xbb --- a/pic/benchmark.xbb Fri Oct 21 16:57:49 2016 +0900 +++ b/pic/benchmark.xbb Fri Oct 21 17:51:16 2016 +0900 @@ -4,5 +4,5 @@ %%HiResBoundingBox: 0.000000 0.000000 1568.000000 745.000000 %%PDFVersion: 1.4 %%Pages: 1 -%%CreationDate: Thu Oct 20 20:16:09 2016 +%%CreationDate: Fri Oct 21 17:07:07 2016 diff -r 4c9d4ecb17e6 -r 600fe9e28aed pic/cas.bb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pic/cas.bb Fri Oct 21 17:51:16 2016 +0900 @@ -0,0 +1,5 @@ +%%Title: ./cas.pdf +%%Creator: extractbb 20140317 +%%BoundingBox: 0 0 490 459 +%%CreationDate: Fri Oct 21 17:09:01 2016 + diff -r 4c9d4ecb17e6 -r 600fe9e28aed pic/cas.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pic/cas.xbb Fri Oct 21 17:51:16 2016 +0900 @@ -0,0 +1,8 @@ +%%Title: ./cas.pdf +%%Creator: extractbb 20140317 +%%BoundingBox: 0 0 490 459 +%%HiResBoundingBox: 0.000000 0.000000 490.000000 459.000000 +%%PDFVersion: 1.4 +%%Pages: 1 +%%CreationDate: Fri Oct 21 17:07:18 2016 +