<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://game.etao.net/w/index.php?action=history&amp;feed=atom&amp;title=HowToWriteAdventureGamesUsingArianne</id>
	<title>HowToWriteAdventureGamesUsingArianne - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://game.etao.net/w/index.php?action=history&amp;feed=atom&amp;title=HowToWriteAdventureGamesUsingArianne"/>
	<link rel="alternate" type="text/html" href="https://game.etao.net/w/index.php?title=HowToWriteAdventureGamesUsingArianne&amp;action=history"/>
	<updated>2026-05-05T16:00:22Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://game.etao.net/w/index.php?title=HowToWriteAdventureGamesUsingArianne&amp;diff=123&amp;oldid=prev</id>
		<title>2022年6月3日 (五) 15:36 220.184.179.103</title>
		<link rel="alternate" type="text/html" href="https://game.etao.net/w/index.php?title=HowToWriteAdventureGamesUsingArianne&amp;diff=123&amp;oldid=prev"/>
		<updated>2022-06-03T15:36:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Navigation for Marauroa Top|Using}}&lt;br /&gt;
{{Navigation for Marauroa Users}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;备注:&amp;#039;&amp;#039;&amp;#039;本教程介绍创建探险游戏的早期步骤。[[Stendhal]]已经运行好几年了，从创建以来发生了很多事情。然而，如果你打算开始自己的探险游戏，那么这个文档仍然是一个有趣的读物。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=介绍=&lt;br /&gt;
本文档是一个教程，它将帮助您使用Arianne系统和Java2D开发多人在线游戏。&lt;br /&gt;
&lt;br /&gt;
编写游戏是一个包含若干阶段的过程：&lt;br /&gt;
* 规格说明&lt;br /&gt;
* 设计&lt;br /&gt;
* 实施&lt;br /&gt;
* 评估&lt;br /&gt;
* 部署&lt;br /&gt;
&lt;br /&gt;
Arianne是一个多人在线游戏框架和引擎，用于开发基于回合的实时游戏。它提供了一种在可移植和健壮的服务器架构上创建游戏的简单方法。服务器Marauroa是用Java编写的，可以使用Java或Python来描述游戏。它还提供了一个SQL后端，并使用TCP传输通道与客户机通信。&lt;br /&gt;
为了实现最大的可移植性，我们的参考客户机使用Java（过去是C）进行编码。&lt;br /&gt;
&lt;br /&gt;
Arianne引擎的设计使您可以集中精力设计实际的游戏，而忽略复杂系统的所有详细实现方面，例如多人在线游戏内容服务器中的实现。因此，您不必关心线程、数据库和网络处理的问题。&lt;br /&gt;
&lt;br /&gt;
从一开始，阿里安发展的核心概念就是KISS：Keep it simple, stupid! (保持简单，愚蠢！)&lt;br /&gt;
&lt;br /&gt;
Arianne一直是一个开源项目，根据GNU GPL许可证编写和发布。我们相信正确的方法是开源的，我们希望您能够在客户机和服务器中更改、编辑和配置您想要的任何内容。Arianne始终欢迎您对代码的贡献和修改，以便为游戏内容提供商创建尽可能最好的开源参考平台。&lt;br /&gt;
&lt;br /&gt;
我们所有的努力都得到了Arianne的引擎——Marauroa的支持。Marauroa完全用Java编写，使用多线程服务器体系结构、面向TCP的网络协议、基于SQL的持久性引擎和灵活的游戏系统。Marauroa完全是游戏无关的，对你所要做的几乎没有任何假设，因此在创建游戏时允许了极大的自由。游戏系统是完全可扩展和修改，以满足您的游戏的需要。它能够运行定义游戏规则的Python脚本，提供了一种指定游戏行为的简单方法。&lt;br /&gt;
&lt;br /&gt;
Marauroa基于一种设计理念，我们称之为动作/感知。感知是每个回合发送给客户的数据集合，向他们解释他们当前在游戏环境中的感知。动作从客户端发送到服务器，用于要求服务器为它们执行操作。 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Stendhal游戏示例==&lt;br /&gt;
在本文中，我将以一个游戏的开发为例，展示stendhal游戏的开发。&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在文件的最后，我将提供更多的指导和模板，以帮助你开始自己的游戏。但请首先阅读stendhal的例子。通过一个真正的游戏工作的例子，可以充分了解Arianne系统。&lt;br /&gt;
&lt;br /&gt;
=预先准备=&lt;br /&gt;
开发多人在线游戏是一项非常复杂的任务。事实上，我想说这是你能想象到的最复杂的软件开发任务。Arianne把复杂度降低了几个数量级！但是，要成功理解这个游戏设计示例，您还需要了解以下几点：&lt;br /&gt;
* Java：本例中的所有内容都是用Java编写的。&lt;br /&gt;
* 客户机/服务器概念：这些概念将帮助您理解为什么事情应该那样做。&lt;br /&gt;
* 游戏设计：了解游戏设计可以简化对整个文档的理解。&lt;br /&gt;
&lt;br /&gt;
只需确保你了解基本知识，即你能够编写Java代码，并且你对游戏设计过程略知一二。&lt;br /&gt;
&lt;br /&gt;
记住，Arianne提供了一个客户机/服务器中间件，需要扩展和修改以适应您的游戏，因此您需要考虑服务器和客户机两方面：&lt;br /&gt;
* 服务器：这类似于所有在线玩家的裁判。它告诉每个玩家他/她看到了什么，他/她能做什么。它还决定了玩家所做动作的结果。&lt;br /&gt;
* 客户端：它们类似于电视，它们使用来自服务器的信息来提供游戏的视图。客户端还从玩家获取输入并将其发送到服务器。&lt;br /&gt;
&lt;br /&gt;
使用Arianne技术没有其他先决条件，您应该会发现，本文档将解释您所需的几乎所有其他内容。我们开始吧！&lt;br /&gt;
&lt;br /&gt;
=规格说明=&lt;br /&gt;
在开始做任何事情之前，想想你想实现的游戏。&amp;lt;br&amp;gt;&lt;br /&gt;
决定你的游戏是关于什么，它将有什么功能，什么将使它不同于其他类似的游戏，什么技术会用在里面，等等。。。先把你的设计计划好，以免日后出现问题。&lt;br /&gt;
&lt;br /&gt;
在我们的例子中，我们将编写一个名为stendhal的游戏。&lt;br /&gt;
&lt;br /&gt;
==基本描述==&lt;br /&gt;
Stendhal是一款成熟的多人在线冒险游戏（MMORPG），使用Arianne游戏开发系统开发。&lt;br /&gt;
Stendhal拥有一个新的、丰富的和不断扩展的世界，在这个世界上你可以探索城镇、建筑、平原、洞穴和地下城。&lt;br /&gt;
你将遇到NPC，并从任务中获得有价值的经验和金钱。&lt;br /&gt;
你的角色会发展和成长，随着每一个新的水平的提高变得越来越强和更好。用你获得的钱，你可以购买新的物品，提高你的盔甲和武器。&lt;br /&gt;
你要在世界上漫游，寻找邪恶的怪物，以满足你们的killing欲望！&lt;br /&gt;
&lt;br /&gt;
游戏世界的初稿如下：&lt;br /&gt;
&lt;br /&gt;
[[Image:Stendhal_Map.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
游戏看起来应该是这样：&lt;br /&gt;
&lt;br /&gt;
http://arianne.sourceforge.net/wiki_images/Stendhal_GUI_detailed.jpg&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;GFX不是真正的ingame外观&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==多人游戏==&lt;br /&gt;
多人模式是基于玩家之间的合作和竞争：&lt;br /&gt;
* 玩家可以合作让绵羊更安全、更快地成长&lt;br /&gt;
* 玩家可以合作杀死强壮的生物&lt;br /&gt;
* 玩家可以互相竞争杀死其他玩家的绵羊。&lt;br /&gt;
* 玩家可以通过引诱怪物进入其他玩家来相互竞争。&lt;br /&gt;
&lt;br /&gt;
也有可能把这看作是一个新手区，训练玩家真正在更大的区域玩更多的怪物、问题和新任务。&lt;br /&gt;
&lt;br /&gt;
==为什么要玩塞尔达游戏？==&lt;br /&gt;
Stendhal是一个使用Arianne进行代码对游戏的好例子，因为它暴露了与更复杂游戏类似的问题，如：&lt;br /&gt;
*世界上有很多东西&lt;br /&gt;
*对象具有与其关联的触发器&lt;br /&gt;
*游戏中有角色发展&lt;br /&gt;
*世界是永恒的&lt;br /&gt;
*人工智能（NPC，绵羊和狼）是复杂的，因为它将是一个更复杂的RPG游戏&lt;br /&gt;
*然而，一切都是概念上的简单&lt;br /&gt;
*滞后确实很重要&lt;br /&gt;
&lt;br /&gt;
如你所见，Stendhal是一款小型游戏，它试图推动与RPG相关的一切：&lt;br /&gt;
*玩家需要分几个步骤完成的任务&lt;br /&gt;
*在基于上下文的情况下玩家可以执行的操作&lt;br /&gt;
*玩家需要探索的几个领域&lt;br /&gt;
*合作与竞争的角色扮演&lt;br /&gt;
&lt;br /&gt;
==细节==&lt;br /&gt;
我们需要考虑游戏中发生或出现的情况，并构建一些详细的“用例”来指出游戏中存在的实体和动作。&lt;br /&gt;
一旦我们知道游戏中会出现什么，我们就可以对游戏的每个实体分别进行详细的描述。如果你觉得这听起来像OOP方法，那就拍拍自己的背，因为你是对的！Arianne使用基于对象的设计方法。&lt;br /&gt;
在游戏中，我们有以下实体：&lt;br /&gt;
* 区域&lt;br /&gt;
## 城市&lt;br /&gt;
## 村庄&lt;br /&gt;
## 平原&lt;br /&gt;
## 森林&lt;br /&gt;
## 地牢&lt;br /&gt;
* 生物&lt;br /&gt;
## 绵羊&lt;br /&gt;
## 老鼠&lt;br /&gt;
## 山洞鼠&lt;br /&gt;
## 狼&lt;br /&gt;
* 玩家&lt;br /&gt;
* NPC&lt;br /&gt;
* 任务&lt;br /&gt;
&lt;br /&gt;
==目标==&lt;br /&gt;
因为许多多人游戏Stendhal没有明确的目标。&amp;lt;br&amp;gt;&lt;br /&gt;
目标可能是：&lt;br /&gt;
*成为世界上最好的玩家&lt;br /&gt;
*从最深的地牢里得到最奇怪的东西&lt;br /&gt;
*探索整个世界&lt;br /&gt;
*让自己成为传奇：）&lt;br /&gt;
很难解释目标，但一旦你开始比赛，你就会上钩：）&lt;br /&gt;
&lt;br /&gt;
==游戏整体外观==&lt;br /&gt;
在前进之前我们需要知道比赛会是什么样子。我们使用标准的pacman游戏作为参考：&amp;lt;br&amp;gt;&lt;br /&gt;
http://arianne.sourceforge.net/wiki_images/StendhalLook.jpg&lt;br /&gt;
&lt;br /&gt;
=设计=&lt;br /&gt;
==使用的技术==&lt;br /&gt;
为了实现mapacman，我们将使用我们的多人在线游戏引擎Arianne。所以在设计游戏之前，我们必须了解阿里安的主要概念和思想。我们需要使设计符合一些简单的规则，以获得最简单的设计和最好的性能。&lt;br /&gt;
Arianne使用UDP传输协议，这是可用的最快、最低的ping传输。然而，它的代价是应用程序无法检测丢失的数据包。如果你的连接真的很糟糕，你将经常失去与服务器的同步，因为如此多的数据发送将丢失。但是，没有传输方法可以帮助您进行这种连接！&lt;br /&gt;
阿里安的系统基于感知/动作/感知方案。这涉及到服务器向客户机发送一个Perception，它是一个RPObjects列表（Arianne中的对象是RPObject类型），其中包含了相应的修改、添加和删除。客户端接受感知并处理它以更新他们对游戏环境的看法，然后如果他们想执行一个动作，他们会将一个RPAction（Arianne中的动作类型为RPAction）发送回服务器。在下一个回合，服务器发送一个新的感知消息，该消息将包含操作的结果（即受操作影响的对象的更改）。&lt;br /&gt;
这种方案有几个优点：&lt;br /&gt;
*与基于回合和实时的游戏完美结合&lt;br /&gt;
*在每个时间点上都有一个连贯的博弈状态&lt;br /&gt;
*低ping时间的玩家不会获得疯狂的优势&lt;br /&gt;
*可以修改轮换时间以提高带宽/性能&lt;br /&gt;
*支持比其他系统多几个数量级的玩家。&lt;br /&gt;
&lt;br /&gt;
另一方面，它也有一系列明显的缺点：&lt;br /&gt;
*结果只有在回合实际发生时才有效（即，动作结果只在下一回合出现）&lt;br /&gt;
*不是制作第一人称射击类游戏的最佳/最简单方法&lt;br /&gt;
然而，这个简单的系统功能强大，几乎可以轻松地编写所有游戏：实时游戏和基于回合的游戏。&lt;br /&gt;
&lt;br /&gt;
[[Image:PerceptionActionPerception.png]]&lt;br /&gt;
&lt;br /&gt;
游戏设计中的一个主要问题是为服务器选择一个转换时间。它应该基于我们正在做的游戏类型。例如，一个实时策略游戏需要大约300毫秒的转弯时间，而基于转弯的策略游戏则需要1000-1500毫秒的转弯时间。回合制游戏比非回合制游戏节省了很多带宽，但是请注意，回合时间越短，带宽使用率就越高。还要记住，转动时间越短，CPU使用率就越高。&lt;br /&gt;
感知由一系列对象组成。RPObject由以下几种属性组成： &amp;lt;br&amp;gt;&lt;br /&gt;
  attribute=value&lt;br /&gt;
&lt;br /&gt;
这些属性允许在对象中存储字符串、int和float。&lt;br /&gt;
RPObject也由插槽构成。槽是一个物品的容器，很像一个口袋、一个袋子、一个盒子或一只手。关键是，如果我们的对象需要有对象在其中，或附加到它们，您需要使用插槽。&lt;br /&gt;
&lt;br /&gt;
[[Image:RPObjectER.png]]&lt;br /&gt;
&lt;br /&gt;
世界上所有的动态变化都是通过行动来实现的。RPAction也由属性组成。您必须重新定义动作对象的默认属性，以便该动作特定于您的游戏。&lt;br /&gt;
每个播放器都使用MySQL数据库系统存储在关系数据库中。你不需要知道这是怎么做到的，但你可以相信我，它的工作！所有东西都存储在数据库中，从而使整个世界永久不变。这取决于您决定哪些程度的东西需要存储在数据库中，何时以及多久提交（存储）一次。数据库是Arianne在撰写本文时的主要瓶颈。&lt;br /&gt;
==世界设计==&lt;br /&gt;
整个游戏区域看起来像：&lt;br /&gt;
&lt;br /&gt;
[[Image:Stendhal_Map.jpg]]&lt;br /&gt;
&lt;br /&gt;
它被分成5个不同的区域来使用Arianne的多区域功能。&amp;lt;br&amp;gt;&lt;br /&gt;
玩家需要改变区域来完成他们的任务和在游戏中的进步。&lt;br /&gt;
===城市===&lt;br /&gt;
这座城市由两个区域组成：一个是绵羊买家工作的地方，另一个是装满老鼠的地方，以轻松赢得XP。&lt;br /&gt;
&lt;br /&gt;
http://arianne.sourceforge.net/wiki_images/city.jpg&lt;br /&gt;
&lt;br /&gt;
http://arianne.sourceforge.net/wiki_images/city_underground.jpg&lt;br /&gt;
&lt;br /&gt;
你可以用树附近的洞从一个移动到另一个。&lt;br /&gt;
此外，这个区域还有一些买家的羊圈和一些NPC喜欢：卡门，威尔士人和迪奥根尼斯，一个不诚实的乞丐。&lt;br /&gt;
&lt;br /&gt;
===村庄===&lt;br /&gt;
村里住着卖羊肉的小贩：长濑，他会把羊肉卖给你，让你养大。&lt;br /&gt;
&lt;br /&gt;
http://arianne.sourceforge.net/wiki_images/village.jpg&lt;br /&gt;
&lt;br /&gt;
===平原===&lt;br /&gt;
你在哪里能找到更好的地方种绵羊？但绵羊是狼的食物。这个区域有几只狼和几只老鼠。&lt;br /&gt;
&lt;br /&gt;
http://arianne.sourceforge.net/wiki_images/plains.jpg&lt;br /&gt;
&lt;br /&gt;
=== 森林===&lt;br /&gt;
http://arianne.sourceforge.net/wiki_images/forest.png&lt;br /&gt;
&lt;br /&gt;
==实体设计==&lt;br /&gt;
为了让这个世界看起来是活的，我们添加了下一个实体。&lt;br /&gt;
*绵羊&lt;br /&gt;
*卖羊的&lt;br /&gt;
*买羊人&lt;br /&gt;
*狼&lt;br /&gt;
*老鼠&lt;br /&gt;
*山洞鼠&lt;br /&gt;
*玩家&lt;br /&gt;
*食物&lt;br /&gt;
*盔甲&lt;br /&gt;
*武器&lt;br /&gt;
*治疗药剂&lt;br /&gt;
&lt;br /&gt;
===用例===&lt;br /&gt;
这些用户案例描述了实体的行为。这有助于我们在编码阶段明确目标的实现。&lt;br /&gt;
&lt;br /&gt;
====玩家的用户案例====&lt;br /&gt;
玩家是一个玩游戏的实体，它可以移动，聊天，攻击，治疗。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  Player enter village in entry point&lt;br /&gt;
  Player moves to Farm zone&lt;br /&gt;
&lt;br /&gt;
  Player talks with Sheep seller&lt;br /&gt;
    Player: Hi&lt;br /&gt;
    Seller: Greetings! How may I help you?&lt;br /&gt;
    Player: buy Sheep&lt;br /&gt;
    Seller: Do you want to buy a Sheep for 50 coins?&lt;br /&gt;
    Player: yes&lt;br /&gt;
    Seller: Thank you! Bye&lt;br /&gt;
&lt;br /&gt;
  Player moves. Sheep follows Player.&lt;br /&gt;
  Player moves to plains&lt;br /&gt;
  Player moves around looking for food&lt;br /&gt;
  Player protect Sheep of wolves attacks&lt;br /&gt;
&lt;br /&gt;
  When Sheep is big enough Player moves to Village&lt;br /&gt;
  Player talks with Sheep buyer&lt;br /&gt;
    Player: Hi&lt;br /&gt;
    Buyer: Greetings! How may I help you?&lt;br /&gt;
    Player: sell Sheep&lt;br /&gt;
    Buyer: Do you want to sell this Sheep for 73 coins?&lt;br /&gt;
    Player: yes&lt;br /&gt;
    Buyer: Thank you! Bye&lt;br /&gt;
&lt;br /&gt;
  Player spend money in new Sheep and equipment&lt;br /&gt;
  * Armor&lt;br /&gt;
  * Weapon&lt;br /&gt;
  * Healing potions&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====绵羊卖家的用例====&lt;br /&gt;
这个卖家是一个NPC实体，会卖给我们一只羊，让它长大赚钱。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FOREVER do:&lt;br /&gt;
  Listen to Player&lt;br /&gt;
&lt;br /&gt;
  If listen &amp;quot;Hi&amp;quot;:&lt;br /&gt;
    Seller says &amp;quot;Greetings &amp;lt;Player&amp;gt;!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  If listen &amp;quot;Buy Sheep&amp;quot; from Player:&lt;br /&gt;
    Seller says &amp;quot;Do you want to buy a Sheep for 50 coins?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  If listen &amp;quot;yes&amp;quot; from Player:&lt;br /&gt;
    If Player money - 50 &amp;gt; 0:&lt;br /&gt;
      set Player money=Player money - 50&lt;br /&gt;
      Duplicate Sheep&lt;br /&gt;
      Make Sheep follows Player&lt;br /&gt;
  Say bye to Player&lt;br /&gt;
DONE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====绵羊买家的用例====&lt;br /&gt;
这个买家是一个NPC实体，它会给我们买羊。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FOREVER do:&lt;br /&gt;
  Listen to Player&lt;br /&gt;
&lt;br /&gt;
  If listen &amp;quot;Hi&amp;quot;:&lt;br /&gt;
    Seller says &amp;quot;Greetings &amp;lt;Player&amp;gt;!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  If listen &amp;quot;Sell Sheep&amp;quot; from Player:&lt;br /&gt;
    Estimate Sheep value related to Sheep weight&lt;br /&gt;
    Seller says &amp;quot;Do you want to sell your Sheep for &amp;lt;estimated price&amp;gt; coins?&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  If listen &amp;quot;yes&amp;quot; from Player:&lt;br /&gt;
    set Player money=Player money + &amp;lt;estimated price&amp;gt;&lt;br /&gt;
    set Player XP=Player XP + 100 * Sheep Weight / 100&lt;br /&gt;
    Destroy Sheep&lt;br /&gt;
  &lt;br /&gt;
  Say bye to Player&lt;br /&gt;
DONE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====绵羊的用户案例====&lt;br /&gt;
绵羊是我们的关键游戏概念。玩家必须牧羊他们的羔羊，保护他们的狼等，直到他们值得出售。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  Sheep is in Farm&lt;br /&gt;
  Player buys Sheep&lt;br /&gt;
  Sheep seller duplicates Sheep&lt;br /&gt;
  Sheep follows Player&lt;br /&gt;
&lt;br /&gt;
  If Sheep finds food:&lt;br /&gt;
    Sheep moves to food&lt;br /&gt;
    Sheep eats food&lt;br /&gt;
    Sheep gains weight&lt;br /&gt;
&lt;br /&gt;
  Player sells Sheep&lt;br /&gt;
  Sheep dissappear&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====狼的用例====&lt;br /&gt;
狼是Stendhal的竞争实体。他们一起攻击绵羊，也经常是玩家。他们能很快杀死一只羊。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  Wolf moves&lt;br /&gt;
  If Wolf sees Sheep:&lt;br /&gt;
    Wolf attacks Sheep&lt;br /&gt;
  &lt;br /&gt;
  If Wolf is attacked:&lt;br /&gt;
    Wolf attacks Attacker&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====老鼠的用例====&lt;br /&gt;
老鼠和山洞里的老鼠会攻击玩家，使羊更难长大。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  Rat moves&lt;br /&gt;
  If Rat sees Player:&lt;br /&gt;
    Rat attacks Player&lt;br /&gt;
  &lt;br /&gt;
  If Rat is attacked:&lt;br /&gt;
    Rat attacks Attacker&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
让我们描述每个实体及其属性和操作。&lt;br /&gt;
===绵羊===&lt;br /&gt;
绵羊具有以下属性：&lt;br /&gt;
*&amp;lt;b&amp;gt;x&amp;lt;/b&amp;gt;是绵羊的x位置&lt;br /&gt;
*&amp;lt;b&amp;gt;y&amp;lt;/b&amp;gt;是绵羊的y位置&lt;br /&gt;
*&amp;lt;b&amp;gt;dx&amp;lt;/b&amp;gt;是绵羊的x速度&lt;br /&gt;
*&amp;lt;b&amp;gt;dy&amp;lt;/b&amp;gt;是绵羊的y速度&lt;br /&gt;
*&amp;lt;b&amp;gt;hp&amp;lt;/b&amp;gt;是绵羊的生命指标，当它达到0时，绵羊死亡。&lt;br /&gt;
*&amp;lt;b&amp;gt;atk&amp;lt;/b&amp;gt;是RP攻击值。见[[速递签名规则]]&lt;br /&gt;
*&amp;lt;b&amp;gt;def&amp;lt;/b&amp;gt;是RP防御值。见[[速递签名规则]]&lt;br /&gt;
*&amp;lt;b&amp;gt;xp&amp;lt;/b&amp;gt;是RP经验值。见[[StendhalDesign#RP | RP rules]]&lt;br /&gt;
*&amp;lt;b&amp;gt;体重&amp;lt;/b&amp;gt;是绵羊的体重指标，体重越重，价格越贵。&lt;br /&gt;
&lt;br /&gt;
绵羊的任务应该是：&lt;br /&gt;
*&amp;lt;b&amp;gt;跟随&amp;lt;/b&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;吃&amp;lt;/b&amp;gt;&lt;br /&gt;
绵羊的行为主要是跟随主人寻找食物。&amp;lt;br&amp;gt;&lt;br /&gt;
如果羊找到食物，它就会吃。&amp;lt;br&amp;gt;&lt;br /&gt;
羊被攻击就会逃跑。&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===生物：狼、鼠、洞鼠===&lt;br /&gt;
狼、老鼠和山洞鼠具有以下属性：&lt;br /&gt;
*&amp;lt;b&amp;gt;x&amp;lt;/b&amp;gt;是狼的x位置&lt;br /&gt;
*&amp;lt;b&amp;gt;y&amp;lt;/b&amp;gt;是狼的y位置&lt;br /&gt;
*&amp;lt;b&amp;gt;dx&amp;lt;/b&amp;gt;是狼的x速度&lt;br /&gt;
*&amp;lt;b&amp;gt;dy&amp;lt;/b&amp;gt;是狼的y速度&lt;br /&gt;
*&amp;lt;b&amp;gt;hp&amp;lt;/b&amp;gt;是狼的生命指标，当它达到0时狼就会死亡。&lt;br /&gt;
*&amp;lt;b&amp;gt;atk&amp;lt;/b&amp;gt;是RP攻击值。见[[StendhalDesign#RP | RP rules]]&lt;br /&gt;
*&amp;lt;b&amp;gt;def&amp;lt;/b&amp;gt;是RP防御值。见[[StendhalDesign#RP | RP rules]]&lt;br /&gt;
*&amp;lt;b&amp;gt;xp&amp;lt;/b&amp;gt;是RP经验值。见[[StendhalDesign#RP | RP rules]]&lt;br /&gt;
狼（鼠和洞鼠）的任务应该是：&lt;br /&gt;
*&amp;lt;b&amp;gt;跟随&amp;lt;/b&amp;gt;意味着狼用最短的方法跟随一个物体到达它。&lt;br /&gt;
*&amp;lt;b&amp;gt;攻击&amp;lt;/b&amp;gt;意味着狼会试图伤害被攻击的目标，直到其血量达到0&amp;lt;br&amp;gt;另一个动作将取消攻击任务。&lt;br /&gt;
*&amp;lt;b&amp;gt;巡逻&amp;lt;/b&amp;gt;意味着狼会沿着指定的路径移动。&lt;br /&gt;
*&amp;lt;b&amp;gt;聊天&amp;lt;/b&amp;gt;意味着狼会开始喊“auuuuuuu！”。狼通常会把这理解为一种召唤。&lt;br /&gt;
狼（老鼠和山洞鼠）的行为包括在指定区域巡逻。&amp;lt;br&amp;gt;&lt;br /&gt;
如果狼找到一只羊，它就会攻击羊。&amp;lt;br&amp;gt;&lt;br /&gt;
如果狼找到一个玩家，它就会攻击玩家。&amp;lt;br&amp;gt;&lt;br /&gt;
如果狼被攻击了，狼就会返回攻击。&amp;lt;br&amp;gt;&lt;br /&gt;
如果狼受了重伤，狼就会逃跑。&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===卖羊人、买羊人、乞丐===&lt;br /&gt;
买卖双方具有以下属性：&lt;br /&gt;
*&amp;lt;b&amp;gt;x&amp;lt;/b&amp;gt;是NPC的x位置&lt;br /&gt;
*&amp;lt;b&amp;gt;y&amp;lt;/b&amp;gt;是NPC的y位置&lt;br /&gt;
*&amp;lt;b&amp;gt;dx&amp;lt;/b&amp;gt;是NPC的x速度&lt;br /&gt;
*&amp;lt;b&amp;gt;dy&amp;lt;/b&amp;gt;是NPC的y速度&lt;br /&gt;
*&amp;lt;b&amp;gt;hp&amp;lt;/b&amp;gt;是NPC的寿命指示器，当它达到0时，它将重置为满。&lt;br /&gt;
*&amp;lt;b&amp;gt;atk&amp;lt;/b&amp;gt;是RP攻击值。见[[StendhalDesign#RP | RP rules]]&lt;br /&gt;
*&amp;lt;b&amp;gt;def&amp;lt;/b&amp;gt;是RP防御值。见[[StendhalDesign#RP | RP rules]]&lt;br /&gt;
*&amp;lt;b&amp;gt;xp&amp;lt;/b&amp;gt;是RP经验值。见[[StendhalDesign#RP | RP rules]]&lt;br /&gt;
*&amp;lt;b&amp;gt;参加&amp;lt;/b&amp;gt;是实际参加的玩家的对象id。&lt;br /&gt;
卖家、买家和乞丐的任务是：&lt;br /&gt;
*&amp;lt;b&amp;gt;巡逻&amp;lt;/b&amp;gt;意味着NPC将绕指定路径移动。&lt;br /&gt;
NPC的行为包括倾听身边的人。&amp;lt;br&amp;gt;&lt;br /&gt;
如果对方说“嗨”，NPC将面对对方并进行对话。&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===玩家===&lt;br /&gt;
玩家拥有以下属性集：&lt;br /&gt;
*&amp;lt;b&amp;gt;x&amp;lt;/b&amp;gt;是播放器的x位置&lt;br /&gt;
*&amp;lt;b&amp;gt;y&amp;lt;/b&amp;gt;是播放器的y位置&lt;br /&gt;
*&amp;lt;b&amp;gt;dx&amp;lt;/b&amp;gt;是播放器的x速度&lt;br /&gt;
*&amp;lt;b&amp;gt;dy&amp;lt;/b&amp;gt;是播放器的y速度&lt;br /&gt;
*&amp;lt;b&amp;gt;hp&amp;lt;/b&amp;gt;是玩家的生命指示器，当它达到0时，玩家死亡。见[[司汤达签名#死|死]]&lt;br /&gt;
*&amp;lt;b&amp;gt;atk&amp;lt;/b&amp;gt;是RP攻击值。见[[StendhalDesign#RP | RP rules]]&lt;br /&gt;
*&amp;lt;b&amp;gt;def&amp;lt;/b&amp;gt;是RP防御值。见[[StendhalDesign#RP | RP rules]]&lt;br /&gt;
*&amp;lt;b&amp;gt;xp&amp;lt;/b&amp;gt;是RP经验值。见[[StendhalDesign#RP | RP rules]]&lt;br /&gt;
*&amp;lt;b&amp;gt;money&amp;lt;/b&amp;gt;是玩家拥有的金钱数量。&lt;br /&gt;
它有三个插槽：&lt;br /&gt;
*盔甲&lt;br /&gt;
*左手&lt;br /&gt;
*右手&lt;br /&gt;
*背包&lt;br /&gt;
玩家任务应该是：&lt;br /&gt;
*&amp;lt;b&amp;gt;移动&amp;lt;/b&amp;gt;表示播放器将其dx，dy参数更改为移动。&lt;br /&gt;
*&amp;lt;b&amp;gt;攻击&amp;lt;/b&amp;gt;表示玩家将尝试伤害被攻击对象，直到其生命值达到0。&amp;lt;br&amp;gt;另一个操作将取消攻击任务。&lt;br /&gt;
*&amp;lt;b&amp;gt;聊天&amp;lt;/b&amp;gt;表示玩家向其他玩家或NPC写入文本&lt;br /&gt;
&lt;br /&gt;
===食物===&lt;br /&gt;
食物具有以下属性：&lt;br /&gt;
*&amp;lt;b&amp;gt;x&amp;lt;/b&amp;gt;是播放器的x位置&lt;br /&gt;
*&amp;lt;b&amp;gt;y&amp;lt;/b&amp;gt;是播放器的y位置&lt;br /&gt;
*&amp;lt;b&amp;gt;数量&amp;lt;/b&amp;gt;是可用的食物量&lt;br /&gt;
食物每X个单位的时间就会再生一次。&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===装甲===&lt;br /&gt;
盔甲是玩家可以“穿戴”的物品：&lt;br /&gt;
*&amp;lt;b&amp;gt;x&amp;lt;/b&amp;gt;是玩家不穿盔甲时盔甲的x位置。&lt;br /&gt;
*&amp;lt;b&amp;gt;y&amp;lt;/b&amp;gt;是玩家不穿盔甲时盔甲的y位置。&lt;br /&gt;
*&amp;lt;b&amp;gt;def&amp;lt;/b&amp;gt;是RP防御值。见[[StendhalDesign#RP | RP rules]]&lt;br /&gt;
*&amp;lt;b&amp;gt;重量&amp;lt;/b&amp;gt;是装甲的重量。&lt;br /&gt;
===屏蔽===&lt;br /&gt;
盾牌是玩家可以“佩戴”的物品：&lt;br /&gt;
*&amp;lt;b&amp;gt;x&amp;lt;/b&amp;gt;是玩家不戴盾牌时盾牌的x位置。&lt;br /&gt;
*&amp;lt;b&amp;gt;y&amp;lt;/b&amp;gt;是玩家不戴盾牌时盾牌的y位置。&lt;br /&gt;
*&amp;lt;b&amp;gt;def&amp;lt;/b&amp;gt;是RP防御值。见[[StendhalDesign#RP | RP rules]]&lt;br /&gt;
*&amp;lt;b&amp;gt;weight&amp;lt;/b&amp;gt;是防护罩的重量。&lt;br /&gt;
===武器===&lt;br /&gt;
武器是玩家可以“佩戴”的物品：&lt;br /&gt;
*&amp;lt;b&amp;gt;x&amp;lt;/b&amp;gt;是玩家不佩戴武器时武器的x位置。&lt;br /&gt;
*&amp;lt;b&amp;gt;y&amp;lt;/b&amp;gt;是玩家不佩戴武器时武器的y位置。&lt;br /&gt;
*&amp;lt;b&amp;gt;atk&amp;lt;/b&amp;gt;是RP攻击值。见[[StendhalDesign#RP | RP rules]]&lt;br /&gt;
*&amp;lt;b&amp;gt;weight&amp;lt;/b&amp;gt;是武器的重量。&lt;br /&gt;
===治疗药剂===&lt;br /&gt;
疗伤药水是玩家可以在背包中“佩戴”的物品：&lt;br /&gt;
*&amp;lt;b&amp;gt;x&amp;lt;/b&amp;gt;是当玩家不戴药水时药水的x位置。&lt;br /&gt;
*&amp;lt;b&amp;gt;y&amp;lt;/b&amp;gt;是当玩家不戴药水时药水的y位置。&lt;br /&gt;
*&amp;lt;b&amp;gt;治疗&amp;lt;/b&amp;gt;是药水将治疗的血量。&lt;br /&gt;
&lt;br /&gt;
==RP设计==&lt;br /&gt;
角色扮演游戏基于一套规则。有很多规则：广告与开发，专家，战锤，…&amp;lt;br&amp;gt;&lt;br /&gt;
Stendhal定义了一组新的“典型”规则，它们具有共同的简单性和易计算性。&lt;br /&gt;
该系统基于三个理念：&lt;br /&gt;
*使用1D6的随机性&lt;br /&gt;
*风险评估&lt;br /&gt;
*创造力&lt;br /&gt;
风险评估使数据挖掘有权权衡玩家希望执行的动作，比如玩家在该类动作中的经验和所处的情况。&lt;br /&gt;
DM代表“地牢主人”。在Stendhal中，我们的任务是设计DM，因为它是游戏的规则。&lt;br /&gt;
&lt;br /&gt;
===属性===&lt;br /&gt;
每个玩家都有一组属性：&lt;br /&gt;
*&amp;lt;b&amp;gt;attack&amp;lt;/b&amp;gt;-此值用于解决攻击情况。&lt;br /&gt;
*&amp;lt;b&amp;gt;defense&amp;lt;/b&amp;gt;-此值用于解决玩家受到攻击的情况。&lt;br /&gt;
*&amp;lt;b&amp;gt;hp&amp;lt;/b&amp;gt;-此值存储可用的活动点。&lt;br /&gt;
*&amp;lt;b&amp;gt;level&amp;lt;/b&amp;gt;-创建角色时，该级别从零开始，并将随着经验的增加而增加&lt;br /&gt;
*&amp;lt;b&amp;gt;experience&amp;lt;/b&amp;gt;-这是在当前级别获得的经验量&lt;br /&gt;
任何RP最困难的部分是平衡不同实体的值。&lt;br /&gt;
我们需要将RP（atk、def和hp）值提供给：&lt;br /&gt;
&lt;br /&gt;
====玩家====&lt;br /&gt;
玩家有以下属性：&lt;br /&gt;
*&amp;lt;b&amp;gt;ATK&amp;lt;/b&amp;gt;-2&lt;br /&gt;
*&amp;lt;b&amp;gt;DEF&amp;lt;/b&amp;gt;-2&lt;br /&gt;
*&amp;lt;b&amp;gt;HP&amp;lt;/b&amp;gt;-100&lt;br /&gt;
这些值是随机设置的。&lt;br /&gt;
&lt;br /&gt;
====绵羊====&lt;br /&gt;
羊不能攻击，所以它必须比玩家弱。&lt;br /&gt;
*&amp;lt;b&amp;gt;ATK&amp;lt;/b&amp;gt;-0&lt;br /&gt;
*&amp;lt;b&amp;gt;DEF&amp;lt;/b&amp;gt;-1&lt;br /&gt;
*&amp;lt;b&amp;gt;HP&amp;lt;/b&amp;gt;-30&lt;br /&gt;
&lt;br /&gt;
这些值也是根据玩家值随机设置的。&lt;br /&gt;
杀羊不会给你任何经验。&lt;br /&gt;
===老鼠====&lt;br /&gt;
老鼠是你能在司汤达找到的最简单的敌人，所以一级玩家要杀死它必须非常简单。&lt;br /&gt;
* &amp;lt;b&amp;gt;ATK&amp;lt;/b&amp;gt; - 3&lt;br /&gt;
* &amp;lt;b&amp;gt;DEF&amp;lt;/b&amp;gt; - 2&lt;br /&gt;
* &amp;lt;b&amp;gt;XP&amp;lt;/b&amp;gt; - 5&lt;br /&gt;
* &amp;lt;b&amp;gt;HP&amp;lt;/b&amp;gt; - 10&lt;br /&gt;
&lt;br /&gt;
为了设置这些值，我们运行了一个模拟，直到在图中找到正确的外观。&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Rat Fight.gif]]&lt;br /&gt;
&lt;br /&gt;
===洞穴鼠====&lt;br /&gt;
山洞老鼠是老鼠的一个更强大的版本，所以2-3级玩家要杀死它必须非常简单。&lt;br /&gt;
* &amp;lt;b&amp;gt;ATK&amp;lt;/b&amp;gt; - 6&lt;br /&gt;
* &amp;lt;b&amp;gt;DEF&amp;lt;/b&amp;gt; - 2&lt;br /&gt;
* &amp;lt;b&amp;gt;XP&amp;lt;/b&amp;gt; - 10&lt;br /&gt;
* &amp;lt;b&amp;gt;HP&amp;lt;/b&amp;gt; - 20&lt;br /&gt;
&lt;br /&gt;
为了设置这些值，我们运行了一个模拟，直到在图中找到正确的外观。&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Caverat Fight.gif]]&lt;br /&gt;
&lt;br /&gt;
===狼====&lt;br /&gt;
狼是平原和森林中常见的生物，它必须简单到足以让4-5级玩家杀死。&lt;br /&gt;
* &amp;lt;b&amp;gt;ATK&amp;lt;/b&amp;gt; - 6&lt;br /&gt;
* &amp;lt;b&amp;gt;DEF&amp;lt;/b&amp;gt; - 4&lt;br /&gt;
* &amp;lt;b&amp;gt;XP&amp;lt;/b&amp;gt; - 18&lt;br /&gt;
* &amp;lt;b&amp;gt;HP&amp;lt;/b&amp;gt; - 35&lt;br /&gt;
&lt;br /&gt;
为了设置这些值，我们运行了一个模拟，直到在图中找到正确的外观。&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Wolf Fight.gif]]&lt;br /&gt;
&lt;br /&gt;
==经验和水平===&lt;br /&gt;
所有的属性都可以在游戏中通过获得经验和等级来增加。&lt;br /&gt;
DM授予经验的原因如下：&lt;br /&gt;
*良好的角色扮演&lt;br /&gt;
*技能的使用&lt;br /&gt;
*战斗&lt;br /&gt;
&lt;br /&gt;
经验不能通过训练获得。&lt;br /&gt;
当你获得一个等级时，你可以增加一个属性。&lt;br /&gt;
要达到一个水平，你需要达到下一个经验点：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1 align=center&amp;gt;&lt;br /&gt;
  &amp;lt;tr bgcolor=black&amp;gt;&amp;lt;td&amp;gt;&amp;lt;font color=white&amp;gt;Level&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;font color=white&amp;gt;Experience needed&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;HP value&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;100&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;100&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;110&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;120&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;384&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;130&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;768&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;140&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;5&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1408&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;150&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;6&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2432&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;160&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;7&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3712&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;170&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;8&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;5504&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;180&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;9&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7808&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;190&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;10&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;10624&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;200&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
正如你可以推断的那样，每升一级的生命值以10的速度增长，并且每升一级，ATK和DEF值都会增加一个。&lt;br /&gt;
计算XP的公式是：&lt;br /&gt;
 &lt;br /&gt;
  exp = (10*level+5*level^2+10*level^3+80)&lt;br /&gt;
&lt;br /&gt;
===战斗===&lt;br /&gt;
战斗是两个或多个玩家之间的战斗。&lt;br /&gt;
战斗是以回合为基础的。每轮5圈。&lt;br /&gt;
攻击玩家的风险可以写为：&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  Attacker.attack VS Defender.defense/6 + 1D6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果玩家被击中，我们需要计算已经造成的伤害：&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  result = Attacker.attack/6 + 1D6 VS Defender.defense&lt;br /&gt;
  if result &amp;gt; 0:&lt;br /&gt;
    Defender.hp = Defender.hp - result&lt;br /&gt;
  end if&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当生命值达到0时死亡。&lt;br /&gt;
当两个骰子都是6时，会发生致命一击。损失等于攻击者.攻击&lt;br /&gt;
&lt;br /&gt;
====防护罩====&lt;br /&gt;
盾牌等级增加你的防御技能：&lt;br /&gt;
&amp;lt;table border=1 align=center&amp;gt;&lt;br /&gt;
  &amp;lt;tr bgcolor=black&amp;gt;&amp;lt;td&amp;gt;&amp;lt;font color=white&amp;gt;Shield&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;font color=white&amp;gt;Rating&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Buckler shield&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;+1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Small shield&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;+2&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Medium shield&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;+3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Tower shield&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;+5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====装甲====&lt;br /&gt;
盔甲帮助你吸收伤害。&lt;br /&gt;
&amp;lt;table border=1 align=center&amp;gt;&lt;br /&gt;
  &amp;lt;tr bgcolor=black&amp;gt;&amp;lt;td&amp;gt;&amp;lt;font color=white&amp;gt;Armour&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;font color=white&amp;gt;Rating&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Leather armour&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;+1&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Studded leather armour&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;+2&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Scale mail armour&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;+3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Chain mail armour&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;+4&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Plate mail armour&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;+5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Field plate armour&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;+6&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Full plate armour&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;+7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====武器====&lt;br /&gt;
武器帮你杀人：）&lt;br /&gt;
&amp;lt;table border=1 align=center&amp;gt;&lt;br /&gt;
  &amp;lt;tr bgcolor=black&amp;gt;&amp;lt;td&amp;gt;&amp;lt;font color=white&amp;gt;Weapon&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;font color=white&amp;gt;Rating&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Knife&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;+2&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Club&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;+3&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Spear&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;+4&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Axe&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;+5&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Long sword&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;+6&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Two hand sword&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;+7&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===死亡===&lt;br /&gt;
战斗的结果通常是死亡。&lt;br /&gt;
当你杀死一个生物时会出现一具尸体。如果你打开它，你就能得到里面的东西，通常是食物、黄金、武器、盾牌或盔甲。&amp;lt;br&amp;gt;&lt;br /&gt;
每次你杀死一个怪物你都会获得经验值。&lt;br /&gt;
当你被杀的时候，你又出现在城市里，如果你有羊的话，你就会失去你的羊。&amp;lt;br&amp;gt;&lt;br /&gt;
同样为了惩罚死亡，你将移除10%的经验值，如果是这样的话，你将移除生命值，ATK和防御值会因为等级提升而增加。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==逻辑设计==&lt;br /&gt;
使Stendhal移动的关键是添加操作。&lt;br /&gt;
正如我们所看到的，每个实体都有一个可以执行的操作列表。让我们看看它们，研究它们之间的相互作用。&lt;br /&gt;
&lt;br /&gt;
===移动===&lt;br /&gt;
移动动作可以理解为两个动作：&lt;br /&gt;
向下键时向左、向右、向上或向下移动&amp;lt;br&amp;gt;&lt;br /&gt;
这个动作允许控制玩家的头像使用我们的键盘，这是街机/冒险游戏风格，如任天堂塞尔达。&lt;br /&gt;
&lt;br /&gt;
此操作应具有下一组属性：&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;dir&amp;#039;&amp;#039;&amp;#039; 化身移动的方向。&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;speed&amp;#039;&amp;#039;&amp;#039; 阿凡达的速度&lt;br /&gt;
&lt;br /&gt;
我们想干什么就干什么。最后执行的动作将是唯一一个真正改变方向和速度的动作。&lt;br /&gt;
我们将让我们的头像以完整的单位在世界上移动，客户将平滑它，使它看起来头像移动了一点。我们也希望我们的头像只移动N，W，S和E方向，所以我们禁用对角线移动。&lt;br /&gt;
我们的世界将有物体，如果玩家与物体碰撞，它将停止。&amp;lt;br&amp;gt;&lt;br /&gt;
一般来说，玩家、生物和其他物体是不可移植的。&lt;br /&gt;
&lt;br /&gt;
===移动到一个位置===&lt;br /&gt;
这个动作允许用鼠标控制游戏的头像，所以我们可以点击（或双击）移动到鼠标点击的位置。这种模式是伟大的一个更轻松的冒险游戏风格，如生物制品巴尔杜尔之门。&lt;br /&gt;
此操作应具有下一组属性：&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;#039; avatar所需的x坐标&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;y&amp;#039;&amp;#039;&amp;#039; avatar所需的y坐标&lt;br /&gt;
&lt;br /&gt;
我们只能有一个此类操作，只有最新的操作才被视为有效。这个动作被任何其他动作取消，比如移动，攻击，面对。。。&lt;br /&gt;
这两个移动动作都将在每一个回合结束时，移动化身，如果可能的话，在x轴上移动dx单位，在y轴上移动dy单位。&lt;br /&gt;
如果阿凡达在移动时与某物碰撞，dx和dy将变为0。&lt;br /&gt;
&lt;br /&gt;
===面对===&lt;br /&gt;
这个动作对于游戏的社交方面来说是很有用的；当你说话的时候，面对你说话的人通常也是很好的。所以面部动作可以让我们的角色看到我们告诉它的方向：左，右，上或下。&lt;br /&gt;
&lt;br /&gt;
===聊天===&lt;br /&gt;
这个动作是任何像MORPG这样的社交游戏的基础。&lt;br /&gt;
此操作应具有下一组属性：&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;text&amp;#039;&amp;#039;&amp;#039; 玩家要说的文字&lt;br /&gt;
&lt;br /&gt;
由于Arianne框架不可能创建一个叫喊或低语动作，当你说话时，你为区域内的每个人说话，这就是为什么区域设计对于实现良好的游戏性是非常重要的。&lt;br /&gt;
===攻击===&lt;br /&gt;
这个动作是游戏的核心，很多玩家都会考虑到游戏的乐趣。所有的战斗都是由RP游戏系统控制的，在本页的RP部分有详细说明。&lt;br /&gt;
现在战斗有一些限制：&lt;br /&gt;
*无PvP（玩家对玩家）&lt;br /&gt;
*不能攻击自己&lt;br /&gt;
*不能攻击NPC&lt;br /&gt;
我们想保留一个良好的游戏体验，所以我们已经删除了玩家对玩家的战斗。&amp;lt;br&amp;gt;&lt;br /&gt;
我们只能有一个攻击行动，所以明智地选择你的目标，这个行动被任何其他行动取消，除了 &amp;#039;&amp;#039;&amp;#039;Chat&amp;#039;&amp;#039;&amp;#039; 和 &amp;#039;&amp;#039;&amp;#039;Heal&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
此操作应具有下一组属性：&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;target&amp;#039;&amp;#039;&amp;#039; 我们攻击的玩家的object.ID 。&lt;br /&gt;
&lt;br /&gt;
这个动作要求动作的目标是“接近”我们的化身。接近意味着目标的化身必须与我们的化身相撞。&lt;br /&gt;
攻击动作具有跟踪目标的隐含含义。&lt;br /&gt;
&lt;br /&gt;
=评估=&lt;br /&gt;
==从Sourceforge下载文件==&lt;br /&gt;
==使用CVS访问==&lt;br /&gt;
=部署=&lt;br /&gt;
==客户端==&lt;br /&gt;
==服务器==&lt;br /&gt;
&lt;br /&gt;
[[Category:Marauroa]]&lt;br /&gt;
{{#breadcrumbs: [[Marauroa]] | [[Navigation for Marauroa Users|Using]] | [[HowToWriteAdventureGamesUsingArianne|How to write games]]}}&lt;/div&gt;</summary>
		<author><name>220.184.179.103</name></author>
	</entry>
</feed>