-
Notifications
You must be signed in to change notification settings - Fork 1
/
dl0.html
238 lines (206 loc) · 10.3 KB
/
dl0.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
<!DOCTYPE html>
<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
<head>
<meta charset="utf-8">
<title>Rogue+Wizライクゲームのリメイク構想 — Daydreaming in Greater Boston</title>
<meta name="author" content="Kyos">
<!-- http://t.co/dKP3o1e -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="/favicon.png" rel="icon">
<link href="/theme/css/main.css" media="screen, projection"
rel="stylesheet" type="text/css">
<link href="//fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic"
rel="stylesheet" type="text/css">
<link href="//fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic"
rel="stylesheet" type="text/css">
</head>
<body>
<header role="banner"><hgroup>
<h1><a href="/">Daydreaming in Greater Boston</a></h1>
</hgroup></header>
<nav role="navigation"><ul class="subscription" data-subscription="rss">
</ul>
<ul class="main-navigation">
<li><a href="/pages/about.html">About Me</a></li>
<li >
<a href="/category/blog.html">Blog</a>
</li>
<li >
<a href="/category/english.html">English</a>
</li>
<li >
<a href="/category/linux.html">Linux</a>
</li>
<li class="active">
<a href="/category/python.html">Python</a>
</li>
<li >
<a href="/category/tech.html">Tech</a>
</li>
</ul></nav>
<div id="main">
<div id="content">
<div>
<article class="hentry" role="article">
<header>
<h1 class="entry-title">Rogue+Wizライクゲームのリメイク構想</h1>
<p class="meta">
<time datetime="2021-02-23T00:00:00-05:00" pubdate>Tue 23 February 2021</time> </p>
</header>
<div class="entry-content"><div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org912ad37">1. はじめに</a></li>
<li><a href="#org1bdb444">2. どんなゲームを作るか</a></li>
<li><a href="#orgcdc6828">3. どこから手を付けるか</a></li>
</ul>
</div>
</div>
<div id="outline-container-org912ad37" class="outline-2">
<h2 id="org912ad37"><span class="section-number-2">1</span> はじめに</h2>
<div class="outline-text-2" id="text-1">
<p>
20年ほど前に、Rogue風のマップとWizardryの戦闘システムを組み合わせたような、Daemonという名のゲームをC言語で作って公開していたのですが、去年末くらいにホストしていたWebサイトがひっそりとクローズしていました。
</p>
<p>
私はPythonの修行中で、中級者向けの本を何冊か読んだのですが、実践不足で本の内容が消化不良になっていることは否めません。そこで、Rogue+WizardryのゲームDaemonをPythonでリメイクしてしばらく実戦経験を積むことにします。Wizardryは古いゲームにしては扱うデータが多く複雑で、データ構造の経験を積むのに適している気がします。当時、C言語で双方向リストを作ってパーティーを表現したりするのが大変だったと記憶していますが、Pythonを使うとどこまで楽になるでしょうか。
</p>
<p>
とは言え、当時のソースコードや資料は全く残っておらず、全く一から作り直しです。とほほ。
</p>
</div>
</div>
<div id="outline-container-org1bdb444" class="outline-2">
<h2 id="org1bdb444"><span class="section-number-2">2</span> どんなゲームを作るか</h2>
<div class="outline-text-2" id="text-2">
<p>
私はWizardryが大好きなのですが、あの3Dマップだけは苦手です。Daemonを作ったときの動機が、マップ移動の楽なWizardryで遊びたいというものでした。かと言って、立派なグラフィックの2Dマップを作る余裕もセンスもありません。そこで今回もRogue風のテキストベースマップのお世話になります。
</p>
<p>
マップ画面イメージ:
</p>
<pre class="example">
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^######################..........###
^^^^^######################..........###
^^^^^######################..........###
^^^^^######################..........###
^^^^^######################..........###
^^^^^######################..........##.
^^^^^########.......########+###+######.
^^^^^########.......@#######.###.######.
^^^^^########.......+............#######
^^^^^########.......########.########...
^^^^^###########+###########*########...
^^^^^###########.#######.........####...
^^^^^...........+#######.........####...
^^^^^...........+##....*.........####...
</pre>
<p>
戦闘システムはWizardryを踏襲し、6人パーティー制です。戦闘は文章だけで進行します。魔法使い、僧侶のスペルは著作権の関係で同じ物(Katino, mahalito, dios等)が使えないので、名前は考えなくてはなりません。今回は日本風にしようかな。
</p>
<p>
Daemonではダンジョンマップをデータとして用意しましたが、10階分も用意するのはかなり大変だったので、今回はRogueライクを見習って自動生成します。アイテムやモンスターも入力が面倒なので、固定のものを除いて自動生成にしましょうか。うまくゲームバランスが取れるでしょうか。
</p>
<p>
城や街はマップ無し、メッセージのみのWizardry風です。Wizardryでは年を取るのが怖くて馬小屋ばかり使っていましたが、なんだか可哀想なので年は取らないようにし、年齢ペナルティーも撤廃しましょう。
</p>
</div>
</div>
<div id="outline-container-orgcdc6828" class="outline-2">
<h2 id="orgcdc6828"><span class="section-number-2">3</span> どこから手を付けるか</h2>
<div class="outline-text-2" id="text-3">
<p>
まずはキー入力(リアルタイムキースキャン)と画面表示(任意の位置に文字を表示)から始めます。低レベル機能のため、Pythonなのに機種依存が出てくるかもしれません。なるべくPyGameのような大がかりなライブラリには手を出したくないところです。
</p>
<p>
次はダンジョンマップの自動生成とスクロールマップの表示にチャレンジします。Pythonでローグライクを作るチュートリアルを斜め読みして予習したので、マップの自動生成は多分行けるでしょう。むしろ、ここで十分な性能が出ないと、プロジェクトを断念することになるかも。
</p>
<p>
次回のアップデートはこのあたりが出来たらになると思います。それでは。
</p>
</div>
</div>
</div>
<footer>
<p class="meta">
<span class="byline author vcard">
Posted by <span class="fn">
きょうす
</span>
</span>
<time datetime="2021-02-23T00:00:00-05:00" pubdate>Tue 23 February 2021</time> <span class="categories">
<a class='category' href='/category/python.html'>Python</a>
</span>
<span class="categories">
<a class="category" href="/tag/python.html">Python</a>, <a class="category" href="/tag/game.html">game</a> </span>
</p><div class="sharing">
</div> </footer>
</article>
</div>
<aside class="sidebar">
<section>
<h1>Recent Posts</h1>
<ul id="recent_posts">
<li class="post">
<a href="/tello.html">アメリカ格安SIMをSpeedtalkからTelloに変えました</a>
</li>
<li class="post">
<a href="/improve_eng2.html">上級者向け英語学習法(実践編)</a>
</li>
<li class="post">
<a href="/improve_eng1.html">上級者向け英語学習法(考察編)</a>
</li>
<li class="post">
<a href="/vocabulary.html">オススメのボキャビル方法</a>
</li>
<li class="post">
<a href="/emacs_build.html">Rokcy LinuxとM1 MacBook上でemacsをソースからビルドしてみる</a>
</li>
</ul>
</section>
<section>
<h1>Categories</h1>
<ul id="recent_posts">
<li><a href="/category/blog.html">Blog</a></li>
<li><a href="/category/english.html">English</a></li>
<li><a href="/category/linux.html">Linux</a></li>
<li><a href="/category/python.html">Python</a></li>
<li><a href="/category/tech.html">Tech</a></li>
</ul>
</section>
<section>
<h1>Tags</h1>
<a href="/tag/blog.html">Blog</a>, <a href="/tag/amerikasheng-huo.html">アメリカ生活</a>, <a href="/tag/tech.html">Tech</a>, <a href="/tag/ying-yu.html">英語</a>, <a href="/tag/emacs.html">emacs</a>, <a href="/tag/sekiyuritei.html">セキュリティ</a>, <a href="/tag/investment.html">Investment</a>, <a href="/tag/python.html">Python</a>, <a href="/tag/english.html">English</a>, <a href="/tag/linux.html">Linux</a>, <a href="/tag/mac.html">Mac</a>, <a href="/tag/toraburu.html">トラブル</a>, <a href="/tag/game.html">game</a>, <a href="/tag/vacation.html">Vacation</a>, <a href="/tag/ying-yu-jiao-yu.html">英語教育</a>, <a href="/tag/ying-jian.html">英検</a> </section>
<section>
<h1>Social</h1>
<ul>
<li><a href="#" target="_blank">You can add links in your config file</a></li>
<li><a href="#" target="_blank">Another social link</a></li>
</ul>
</section>
<section>
<h1>Blogroll</h1>
<ul>
<li><a href="https://getpelican.com/" target="_blank">Pelican</a></li>
<li><a href="https://www.python.org/" target="_blank">Python.org</a></li>
<li><a href="https://palletsprojects.com/p/jinja/" target="_blank">Jinja2</a></li>
<li><a href="#" target="_blank">You can modify those links in your config file</a></li>
</ul>
</section>
</aside> </div>
</div>
<footer role="contentinfo"><p>
Copyright © 2020–2024 Kyos —
<span class="credit">Powered by <a href="http://getpelican.com">Pelican</a></span>
</p></footer>
<script src="/theme/js/modernizr-2.0.js"></script>
<script src="/theme/js/ender.js"></script>
<script src="/theme/js/octopress.js" type="text/javascript"></script>
</body>
</html>