标签 游戏 下的文章

换一个新的身份,并用这些开源的角色扮演游戏探索新世界。

游戏是 Linux 的传统弱项之一,感谢 Steam、GOG 和其他的游戏开发商将商业游戏移植到了多个操作系统,Linux 的这个弱项在近几年有所改观,但是这些游戏通常都不是开源的。当然,这些游戏可以在开源系统上运行,但是对于开源的纯粹主义者来说这还不够好。

那么,有没有一款能让只使用自由开源软件的人在不影响他们开源理念的情况下也能享受到可靠游戏体验的精致游戏呢?

当然有啦!虽然开源游戏不太可能和拥有大量开发预算的 3A 级大作相媲美,但有许多类型的开源游戏也很有趣,而且它们可以直接从大多数主要的 Linux 发行版的仓库中进行安装。即使某个游戏没有被某些仓库打包,你也可以很简单地从这个游戏的官网下载它,并进行安装和运行。

这篇文章着眼于角色扮演游戏,我已经写过关于街机游戏棋牌游戏益智游戏,以及赛车和飞行游戏。在本系列的最后一篇文章中,我打算覆盖战略游戏和模拟游戏这两方面。

Endless Sky

Endless Sky 是 Ambrosia Software 的 Escape Velocity) 系列的开源克隆品。玩家乘坐一艘宇宙飞船,在不同的世界之间旅行来运送货物和乘客,并在沿途中承接其他任务,或者玩家也可以变成海盗,并从其他货船中偷取货物。这个游戏让玩家自己决定要如何去体验这个游戏,以太阳系为背景的超大地图是非常具有探索性的。Endless Sky 是那些违背正常游戏类别分类的游戏之一。但这个兼具动作、角色扮演、太空模拟和交易这四种类型的游戏非常值得一试。

如果要安装 Endless Sky ,请运行下面的命令。

在 Fedora 上:

dnf install endless-sky

在 Debian/Ubuntu 上:

apt install endless-sky

FreeDink

FreeDinkDink Smallwood 的开源版本,Dink Smallwood 是一个由 RTSoft 在 1997 年发售的动作角色扮演游戏。Dink Smallwood 在 1999 年时变为了免费游戏,并在 2003 年时公布了源代码。在 2008 年时,游戏的数据除了少部分的声音文件,都在开源协议下进行了开源。FreeDink 用一些替代的声音文件替换了缺少的那部分文件,来提供了一个完整的游戏。游戏的玩法类似于任天堂的塞尔达传说系列。玩家控制的角色和 Dink Smallwood 同名,他在从一个任务地点移动到下一个任务地点的时候,探索这个充满隐藏物品和隐藏洞穴的世界地图。由于这个游戏的年龄,FreeDink 不能和现代的商业游戏相抗衡,但它仍然是一个拥有着有趣故事的有趣的游戏。游戏可以通过 D-Mods 进行扩展,D-Mods 是提供额外任务的附加模块,但是 D-Mods 在复杂性、质量,和年龄适应性上确实有很大的差异。游戏主要适合青少年,但也有部分额外组件适用于成年玩家。

要安装 FreeDink ,请运行下面的命令。

在 Fedora 上:

dnf install freedink

在 Debian/Ubuntu 上:

apt install freedink

ManaPlus

从技术上讲,ManaPlus 本身并不是一个游戏,它是一个访问各种大型多人在线角色扮演游戏的客户端。The Mana WorldEvol Online 是两款可以通过 ManaPlus 访问的开源游戏,但是游戏的服务器不在那里。这个游戏的 2D 精灵图像让人想起超级任天堂游戏,虽然 ManaPlus 支持的游戏没有一款能像商业游戏那样受欢迎的,但它们都有一个有趣的世界,并且在绝大部分时间里都有至少一小部分玩家在线。一个玩家不太可能遇到很多的其他玩家,但通常都能有足够的人一起在这个 MMORPG 游戏里进行冒险,而不是一个需要连接到服务器的单机游戏。Mana World 和 Evol Online 的开发者联合起来进行未来的开发,但是对于目前而言,Mana World 的历史服务器和 Evol Online 提供了不同的游戏体验。

要安装 ManaPlus,请运行下面的命令。

在 Fedora 上:

dnf install manaplus

在 Debian/Ubuntu 上:

apt install manaplus

Minetest

使用 Minetest 来在一个开放式世界里进行探索和创造,Minetest 是 Minecraft 的克隆品。就像它所基于的 Minecraft 一样,Minetest 提供了一个开放的世界,玩家可以在这个世界里探索和创造他们想要的一切。Minetest 提供了各种各样的方块和工具,对于想要一个比 Minecraft 更加开放的游戏的人来说,Minetest 是一个很好的替代品。除了基本的游戏之外,Minetest 还可以通过额外的模块进行可扩展,增加更多的选项。

如果要安装 Minetest ,请运行下面的命令。

在 Fedora 上:

dnf install minetest

在 Debian/Ubuntu 上:

apt install minetest

NetHack

NetHack 是一款经典的 Roguelike 类型的角色扮演游戏,玩家可以从不同的角色种族、分类和阵营中进行选择,来探索这个多层次的地下城。这个游戏的目的就是找回 Yendor 的护身符,玩家从地下层的第一层开始探索,并尝试向下一层移动,每一层都是随机生成的,这样每次都能获得不同的游戏体验。虽然这个游戏只具有 ASCII 图形和基本图形,但是游戏玩法的深度能够弥补画面的不足。玩家如果想要更好一些的画面的话,可能就需要去查看 NetHack 的 Vulture 了,这个方式可以提供更好的图像、声音和背景音乐。

如果要安装 NetHack ,请运行下面的命令。

在 Fedora 上:

dnf install nethack

在 Debian/Ubuntu 上:

apt install nethack-x11 or apt install nethack-console

我有错过了你最喜欢的角色扮演游戏吗?请在下面的评论区分享出来。


via: https://opensource.com/article/18/8/role-playing-games-linux

作者:Joshua Allen Holm 选题:lujun9972 译者:hopefully2333 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

流行的移动益智游戏 2048 也可以在 Ubuntu 和 Linux 发行版上玩。啊!你甚至可以在 Linux 终端上玩 2048。如果你的生产率因为这个让人上瘾的游戏下降,请不要怪我。

早在 2014 年,2048 就是 iOS 和 Android 上最受欢迎的游戏之一。这款令人上瘾的游戏非常受欢迎,它在 Linux 上有浏览器版、桌面版和终端版。

通过向上和向下,向左和向右移动滑块来玩这个小游戏。这个益智游戏的目的是通过组合匹配的滑块到数字 2048。因此 2+2 变成 4,4+4 变成 8,依此类推。这可能听起来简单而无聊,但相信我是一个令人上瘾的游戏。

在 Linux 中玩 2048 [GUI]

在 Ubuntu 和其他 Linux 中有些 2048 游戏。你可以在软件中心中搜索它,你可以在那里找到一些。

有一个基于 Qt 的 2048 游戏,你可以在 Ubuntu 和其他基于 Debian 和 Ubuntu 的 Linux 发行版上安装。你可以使用以下命令安装它:

sudo apt install 2048-qt

安装完成后,你可以在菜单中找到该游戏并启动它。你可以使用箭头键移动数字。你的最高分也会保存。

2048 Game in Ubuntu Linux

在 Linux 终端玩 2048

2048 的流行将它带到了终端。如果这让你感到惊讶,你应该知道 Linux 中有很多很棒的终端游戏,而 2048 肯定就是其中之一。

现在,有几种方法可以在 Linux 终端中玩 2048。我在这里提其中两个。

1、term2048 Snap 程序

有一个名为 term2048snap 程序可以安装在任何支持 Snap 的 Linux 发行版中。

如果你启用了 Snap,只需使用此命令安装 term2048:

sudo snap install term2048

Ubuntu 用户也可以在软件中心找到这个游戏并从那里安装它。

2048 Terminal Game in Linux

安装后,你可以使用命令 term2048 来运行游戏。它看起来像这样:

2048 Terminal game

你可以使用箭头键移动。

2、2048 游戏的 Bash 脚本

这个游戏实际上是一个 shell 脚本,你可以在任何 Linux 终端上运行。从 Github 下载游戏/脚本:

解压下载的文件。进入解压后的目录,你将看到名为 2048.sh 的 shell 脚本。只需运行 shell 脚本。游戏将立即开始。你可以使用箭头键移动滑块。

Linux Terminal game 2048

你在Linux上玩什么游戏?

如果你喜欢在 Linux 终端上玩游戏,你也应该尝试 Linux 终端中的经典 Snake 游戏

你经常在 Linux 中玩哪些游戏?你也在终端中玩游戏吗?如果是的话,哪个是你最喜欢的终端游戏?


via: https://itsfoss.com/2048-game/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

用这些有趣好玩的游戏来测试你的战略能力。

游戏一直是 Linux 的弱点之一。由于 Steam、GOG 和其他将商业游戏引入多种操作系统的努力,这种情况近年来有所改变,但这些游戏通常不是开源的。当然,这些游戏可以在开源操作系统上玩,但对于纯粹开源主义者来说还不够好。

那么,一个只使用开源软件的人,能否找到那些经过足够打磨的游戏,在不损害其开源理念的前提下,提供一种可靠的游戏体验呢?当然可以。虽然开源游戏历来不太可能与一些借由大量预算开发的 AAA 商业游戏相匹敌,但在多种类型的开源游戏中,有很多都很有趣,可以从大多数主要 Linux 发行版的仓库中安装。即使某个特定的游戏没有被打包成特定的发行版本,通常也很容易从项目的网站上下载该游戏以便安装和游戏。

这篇文章着眼于益智游戏。我已经写过街机风格游戏棋牌游戏。 在之后的文章中,我计划涉足赛车,角色扮演、战略和模拟经营游戏。

Atomix

Atomix 是 1990 年在 Amiga、Commodore 64、MS-DOS 和其他平台发布的 Atomix) 益智游戏的开源克隆。Atomix 的目标是通过连接原子来构建原子分子。单个原子可以向上、向下、向左或向右移动,并一直朝这个方向移动,直到原子撞上一个障碍物——水平墙或另一个原子。这意味着需要进行规划,以确定在水平上构建分子的位置,以及移动单个部件的顺序。第一关是一个简单的水分子,它由两个氢原子和一个氧原子组成,但后来的关卡是更复杂的分子。

要安装 Atomix,请运行以下命令:

  • 在 Fedora: dnf install atomix
  • 在 Debian/Ubuntu: apt install atomix

Fish Fillets - Next Generation

Fish Fillets - Next Generation 是游戏 Fish fillet 的 Linux 移植版本,它于 1998 年在 Windows 发布,源代码在 2004 年以 GPL 许可证发布。游戏中,两条鱼试图将物体移出道路来通过不同的关卡。这两条鱼有不同的属性,所以玩家需要为每个任务挑选合适的鱼。较大的鱼可以移动较重的物体,但它更大,这意味着它不适合较小的空隙。较小的鱼可以适应那些较小的间隙,但它不能移动较重的物体。如果一个物体从上面掉下来,两条鱼都会被压死,所以玩家在移动棋子时要小心。

要安装 Fish fillet——Next Generation,请运行以下命令:

  • 在 Fedora:dnf install fillets-ng
  • 在 Debian/Ubuntu: apt install fillets-ng

Frozen Bubble

Frozen Bubble 是一款街机风格的益智游戏,从屏幕底部向屏幕顶部的一堆泡泡射击。如果三个相同颜色的气泡连接在一起,它们就会被从屏幕上移除。任何连接在被移除的气泡下面但没有连接其他任何东西的气泡也会被移除。在拼图模式下,关卡的设计是固定的,玩家只需要在泡泡掉到屏幕底部的线以下前将泡泡从游戏区域中移除。该游戏街机模式和多人模式遵循相同的基本规则,但也有不同,这增加了多样性。Frozen Bubble 是一个标志性的开源游戏,所以如果你以前没有玩过它,玩玩看。

要安装 Frozen Bubble,请运行以下命令:

  • 在 Fedora: dnf install frozen-bubble
  • 在 Debian/Ubuntu: apt install frozen-bubble

Hex-a-hop

Hex-a-hop 是一款基于六角形瓦片的益智游戏,玩家需要将所有的绿色瓦片从水平面上移除。瓦片通过移动被移除。由于瓦片在移动后会消失,所以有必要规划出穿过水平面的最佳路径,以便在不被卡住的情况下移除所有的瓦片。但是,如果玩家使用的是次优路径,会有撤销功能。之后的关卡增加了额外的复杂性,包括需要跨越多次的瓦片和使玩家跳过一定数量的六角弹跳瓦片。

要安装 Hex-a-hop,请运行以下命令:

  • 在 Fedora: dnf install hex-a-hop
  • 在 Debian/Ubuntu: apt install hex-a-hop

Pingus

PingusLemmings 的开源克隆。这不是一个精确的克隆,但游戏非常相似。小动物(Lemmings 里是旅鼠,Pingus 里是企鹅)通过关卡入口进入关卡,开始沿着直线行走。玩家需要使用特殊技能使小动物能够到达关卡的出口而不会被困住或者掉下悬崖。这些技能包括挖掘或建桥。如果有足够数量的小动物进入出口,这个关卡将成功完成,玩家可以进入下一个关卡。Pingus 为标准的 Lemmings 添加了一些额外的特性,包括一个世界地图和一些在原版游戏中没有的技能,但经典 Lemmings 游戏的粉丝们在这个开源版本中仍会感到自在。

要安装 Pingus,请运行以下命令:

  • 在 Fedora: dnf install pingus
  • 在 Debian/Ubuntu: apt install pingus

我漏掉你最喜欢的开源益智游戏了吗? 请在下面的评论中分享。


via: https://opensource.com/article/18/6/puzzle-games-linux

作者:Joshua Allen Holm 选题:lujun9972 译者:ZenMoore 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

如果我们经常在实际场景中使用 Linux 命令,我们就会更有效的学习和记忆它们。除非你经常使用 Linux 命令,否则你可能会在一段时间内忘记它们。无论你是新手还是老手,总会有一些趣味的方法来测试你的 BASH 技能。在本教程中,我将解释如何通过玩命令行游戏来测试你的 BASH 技能。其实从技术上讲,这些并不是像 Super TuxKart、极品飞车或 CS 等真正的游戏。这些只是 Linux 命令培训课程的游戏化版本。你将需要根据游戏本身的某些指示来完成一个任务。

现在,我们来看看几款能帮助你实时学习和练习 Linux 命令的游戏。这些游戏不是消磨时间或者令人惊诧的,这些游戏将帮助你获得终端命令的真实体验。请继续阅读:

使用 “Wargames” 来测试 BASH 技能

这是一个在线游戏,所以你必须联网。这些游戏可以帮助你以充满乐趣的游戏形式学习和练习 Linux 命令。Wargames 是一个 shell 游戏的集合,每款游戏有很多关卡。只有通过解决先前的关卡才能访问下一个关卡。不要担心!每个游戏都提供了有关如何进入下一关的清晰简洁说明。

要玩 Wargames,请点击以下链接:Wargames

如你所见,左边列出了许多 shell 游戏。每个 shell 游戏都有自己的 SSH 端口。所以,你必须通过本地系统配置 SSH 连接到游戏,你可以在 Wargames 网站的左上角找到关于如何使用 SSH 连接到每个游戏的信息。

例如,让我们来玩 Bandit 游戏吧。为此,单击 Wargames 主页上的 Bandit 链接。在左上角,你会看到 Bandit 游戏的 SSH 信息。

正如你在上面的屏幕截图中看到的,有很多关卡。要进入每个关卡,请单机左侧列中的相应链接。此外,右侧还有适合初学者的说明。如果你对如何玩此游戏有任何疑问,请阅读它们。

现在,让我们点击它进入关卡 0。在下一个屏幕中,你将获得该关卡的 SSH 信息。

正如你在上面的屏幕截图中看到的,你需要配置 SSH 端口 2220 连接 bandit.labs.overthewire.org,用户名是 bandit0,密码是 bandit0

让我们连接到 Bandit 游戏关卡 0。

$ ssh [email protected] -p 2220

输入密码 bandit0

示例输出将是:

登录后,输入 ls 命令查看内容或者进入关卡 1 页面,了解如何通过关卡 1 等等。建议的命令列表已在每个关卡提供。所以,你可以选择和使用任何合适的命令来解决每个关卡。

我必须承认,Wargames 是令人上瘾的,并且解决每个关卡是非常有趣的。 尽管有些关卡确实很具挑战性,你可能需要谷歌才能知道如何解决问题。 试一试,你会很喜欢它。

使用 “Terminus” 来测试 BASH 技能

这是另一个基于浏览器的在线 CLI 游戏,可用于改进或测试你的 Linux 命令技能。要玩这个游戏,请打开你的 web 浏览器并导航到以下 URL:Play Terminus Game

一旦你进入游戏,你会看到有关如何玩游戏的说明。与 Wargames 不同,你不需要连接到它们的游戏服务器来玩游戏。Terminus 有一个内置的 CLI,你可以在其中找到有关如何使用它的说明。

你可以使用命令 ls 查看周围的环境,使用命令 cd 位置 移动到新的位置,返回使用命令 cd ..,与这个世界进行交互使用命令 less 项目 等等。要知道你当前的位置,只需输入 pwd

使用 “clmystery” 来测试 BASH 技能

与上述游戏不同,你可以在本地玩这款游戏。你不需要连接任何远程系统,这是完全离线的游戏。

相信我,这家伙是一个有趣的游戏。按照给定的说明,你将扮演一个侦探角色来解决一个神秘案件。

首先,克隆仓库:

$ git clone https://github.com/veltman/clmystery.git

或者,从 这里 将其作为 zip 文件下载。解压缩并切换到下载文件的地方。最后,通过阅读 instructions 文件来开启宝箱。

[sk@sk]: clmystery-master>$ ls
cheatsheet.md cheatsheet.pdf encoded hint1 hint2 hint3 hint4 hint5 hint6 hint7 hint8 instructions LICENSE.md mystery README.md solution

这里是玩这个游戏的说明:

终端城发生了一起谋杀案,TCPD 需要你的帮助。你需要帮助它们弄清楚是谁犯罪了。

为了查明是谁干的,你需要到 mystery 子目录并从那里开始工作。你可能需要查看犯罪现场的所有线索( crimescene 文件)。现场的警官相当谨慎,所以他们在警官报告中写下了一切。幸运的是,警官以全部大写的 “CLUE” 一词把真正的线索标记了出来。

如果里遇到任何问题,请打开其中一个提示文件,例如 “hint1”,“hint2” 等。你可以使用下面的 cat 命令打开提示文件。

$ cat hint1
$ cat hint2

要检查你的答案或找出解决方案,请在 clmystery 目录中打开文件 solution

$ cat solution

要了解如何使用命令行,请参阅 cheatsheet.mdcheatsheet.pdf (在命令行中,你可以输入 ‘nano cheatsheet.md’)。请勿使用文本编辑器查看除 instructionscheatsheethint 以外的任何文件。

有关更多详细信息,请参阅 clmystery GitHub 页面。

推荐阅读:

而这就是我现在所知道的。如果将来遇到任何问题,我会继续添加更多游戏。将此链接加入书签并不时访问。如果你知道其他类似的游戏,请在下面的评论部分告诉我,我将测试和更新本指南。

还有更多好东西,敬请关注!

干杯!


via: https://www.ostechnix.com/test-your-bash-skills-by-playing-command-line-games/

作者:SK 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我们将通过一个一步步的、新手友好的教程来向你展示如何搭建一个“我的世界(Minecraft)”服务器。这将会是一个长期的多人游戏服务器,你可以与来自世界各地的朋友们一起玩,而不用在同一个局域网下。

如何搭建一个“我的世界”服务器 - 快速指南

在你开始行动之前,要先了解一些事情:

为什么你应该使用专门的“我的世界”服务器提供商

既然你正在阅读这篇文章,你肯定对搭建自己的“我的世界”服务器感兴趣。不应该使用专门的“我的世界”服务器提供商的原因有很多,以下是其中一些:

  • 它们通常很慢。这是因为你是在和很多用户一起共享资源。这有的时候会超负荷,他们中很多都会超售。
  • 你并不能完全控制“我的世界”服务端或真正的服务器。你没法按照你的意愿进行自定义。
  • 你是受限制的。这种主机套餐或多或少都会有限制。

当然,使用现成的提供商也是有优点的。最好的就是你不用做下面这些操作。但是那还有什么意思呢?!

为什么不应该用你的个人电脑作为“我的世界”服务器

我们注意到很多教程都展示的是如何在你自己的电脑上搭建服务器。这样做有一些弊端,比如:

  • 你的家庭网络不够安全,无法抵挡 DDoS 攻击。游戏服务器通常容易被 DDoS 攻击,而你的家庭网络设置通常不够安全,来抵挡它们。很可能连小型攻击都无法阻挡。
  • 你得处理端口转发。如果你试着在家庭网络中搭建“我的世界”服务器的话,你肯定会偶然发现端口转发的问题,并且处理时可能会有问题。
  • 你得保持你的电脑一直开着。你的电费将会突破天际,并且你会增加不必要的硬件负载。大部分服务器硬件都是企业级的,提升了稳定性和持久性,专门设计用来处理负载。
  • 你的家庭网络速度不够快。家庭网络并不是设计用来负载多人联机游戏的。即使你想搭建一个小型服务器,你也需要一个更好的网络套餐。幸运的是,数据中心有多个高速的、企业级的互联网连接,来保证他们达到(或尽量达到)100%在线。
  • 你的硬件很可能不够好。再说一次,服务器使用的都是企业级硬件,最新最快的处理器、固态硬盘,等等。你的个人电脑很可能不是的。
  • 你的个人电脑很可能是 Windows/MacOS。尽管这有所争议,但我们相信 Linux 更适合搭建游戏服务器。不用担心,搭建“我的世界”服务器不需要完全了解 Linux(尽管推荐这样)。我们会向你展示你需要了解的。

我们的建议是不要使用个人电脑,即使从技术角度来说你能做到。买一个云服务器并不是很贵。下面我们会向你展示如何在云服务器上搭建“我的世界”服务端。小心地遵守以下步骤,就很简单。

搭建一个“我的世界”服务器 - 需求

这是一些需求,你在教程开始之前需要拥有并了解它们:

  • 你需要一个 Linux 云服务器。我们推荐 Vultr。这家价格便宜,服务质量高,客户支持很好,并且所有的服务器硬件都很高端。检查“我的世界”服务器需求来选择你需要哪种类型的服务器(像内存和硬盘之类的资源)。我们推荐每月 20 美元的套餐。他们也支持按小时收费,所以如果你只是临时需要服务器和朋友们联机的话,你的花费会更少。注册时选择 Ubuntu 16.04 发行版。在注册时选择离你的朋友们最近的地域。这样的话你就需要保护并管理服务器。如果你不想这样的话,你可以选择托管的服务器,这样的话服务器提供商可能会给你搭建好一个“我的世界”服务器。
  • 你需要一个 SSH 客户端来连接到你的 Linux 云服务器。新手通常建议使用 PuTTy,但我们也推荐使用 MobaXTerm。也有很多 SSH 客户端,所以挑一个你喜欢的吧。
  • 你需要设置你的服务器(至少做好基本的安全设置)。谷歌一下你会发现很多教程。你也可以按照 Linode 的 安全指南,然后在你的 Vultr 服务器上一步步操作。
  • 下面我们将会处理软件依赖,比如 Java。

终于,到我们真正的教程了:

如何在 Ubuntu(Linux)上搭建一个“我的世界”服务器

这篇教程是为 Vultr 上的 Ubuntu 16.04 撰写并测试可行的。但是这对 Ubuntu 14.04, Ubuntu 18.04,以及其他基于 Ubuntu 的发行版、其他服务器提供商也是可行的。

我们使用默认的 Vanilla 服务端。你也可以使用像 CraftBukkit 或 Spigot 这样的服务端,来支持更多的自定义和插件。虽然如果你使用过多插件的话会影响服务端。这各有优缺点。不管怎么说,下面的教程使用默认的 Vanilla 服务端,来使事情变得简单和更新手友好。如果有兴趣的话我们可能会发表一篇 CraftBukkit 的教程。

1. 登录到你的服务器

我们将使用 root 账户。如果你使用受限的账户的话,大部分命令都需要 sudo。做你没有权限的事情时会出现警告。

你可以通过 SSH 客户端来登录你的服务器。使用你的 IP 和端口(大部分都是 22)。

在你登录之后,确保你的服务器安全

2. 更新 Ubuntu

在你做任何事之前都要先更新你的 Ubuntu。你可以通过以下命令更新:

apt-get update && apt-get upgrade

在提示时敲击“回车键” 和/或 y

3. 安装必要的工具

在这篇教程中你需要一些工具和软件来编辑文本、长久保持服务端运行等。使用下面的命令安装:

apt-get install nano wget screen bash default-jdk ufw

其中一些可能已经安装好了。

4. 下载“我的世界”服务端

首先,创建一个目录来保存你的“我的世界”服务端和其他文件:

mkdir /opt/minecraft

然后进入新目录:

cd /opt/minecraft

现在你可以下载“我的世界“服务端文件了。去往下载页面获取下载链接。使用 wget 下载文件:

wget https://s3.amazonaws.com/Minecraft.Download/versions/1.12.2/minecraft_server.1.12.2.jar

5. 安装“我的世界”服务端

下载好了服务端的 .jar 文件之后,你就需要先运行一下,它会生成一些文件,包括一个 eula.txt 许可文件。第一次运行的时候,它会返回一个错误并退出。这是正常的。使用下面的命令运行它:

java -Xms2048M -Xmx3472M -jar minecraft_server.1.12.2.jar nogui

-Xms2048M 是你的服务端能使用的最小的内存,-Xmx3472M 是最大的内存。调整基于你服务器的硬件资源。如果你在 Vultr 服务器上有 4GB 内存,并且不用服务器来干其他事情的话可以就这样留着不动。

在这条命令结束并返回一个错误之后,将会生成一个新的 eula.txt 文件。你需要同意那个文件里的协议。你可以通过下面这条命令将 eula=true 添加到文件中:

sed -i.orig 's/eula=false/eula=true/g' eula.txt

你现在可以通过和上面一样的命令来开启服务端并进入“我的世界”服务端控制台了:

java -Xms2048M -Xmx3472M -jar minecraft_server.1.12.2.jar nogui

确保你在 /opt/minecraft 目录,或者其他你安装你的 MC 服务端的目录下。

如果你只是测试或暂时需要的话,到这里就可以停了。如果你在登录服务器时有问题的话,你就需要配置你的防火墙

第一次成功启动服务端时会花费一点时间来生成。

我们将向你展示如何创建一个脚本来启动。

6. 使用脚本启动“我的世界”服务端,让服务端长期运行并在启动时开启

方便起见,我们将创建一个自动启动服务端的 bash 脚本。

首先,使用 nano 创建一个 bash 脚本:

nano /opt/minecraft/startminecraft.sh

这将会打开一个新的(空白)文件。粘贴以下内容:

#!/bin/bash
cd /opt/minecraft/ && java -Xms2048M -Xmx3472M -jar minecraft_server.1.12.2.jar nogui

如果你不熟悉 nano 的话 - 你可以使用 CTRL + X,再敲击 Y,然后回车。这个脚本将进入你先前创建的“我的世界”服务端并运行 Java 命令来开启服务端。你需要执行下面的命令来使脚本可执行:

chmod +x startminecraft.sh

然后,你就可以通过下面的命令随时运行服务端了:

/opt/minecraft/startminecraft.sh

但是,如果/当你登出 SSH 会话的话,服务端就会关闭。要想让服务端不登录也持续运行的话,你可以使用 screen 会话。screen 会话会一直运行,直到实际的服务器被关闭或重启。

使用下面的命令开启一个 screen 会话:

screen -S minecraft

一旦你进入了 screen 会话(看起来就像是你新建了一个 SSH 会话),你就可以使用先前创建的 bash 脚本来启动服务端:

/opt/minecraft/startminecraft.sh

要退出 screen 会话的话,你应该按 CTRL+A-D。即使你离开 screen 会话(断开的),服务端也会继续运行。你现在可以安全的登出 Ubuntu 服务器了,你创建的“我的世界”服务端将会继续运行。

但是,如果 Ubuntu 服务器重启或关闭了的话,screen 会话将不再起作用。所以为了让我们之前做的这些在启动时自动运行,做下面这些:

打开 /etc/rc.local 文件:

nano /etc/rc.local

exit 0 语句前添加如下内容:

screen -dm -S minecraft /opt/minecraft/startminecraft.sh
exit 0

保存并关闭文件。

要访问“我的世界”服务端控制台,只需运行下面的命令来重新连接 screen 会话:

screen -r minecraft

现在就是这样。祝贺你,玩的开心!你现在可以连接到你的“我的世界”服务端或配置/修改它了。

配置你的 Ubuntu 服务器

你首先肯定要设置并确保你的 Ubuntu 服务器安全,如果你还没有这么做的话。按照我们之前提及的指南并谷歌一下来获取更多信息。你需要在服务器上配置的有这些:

开启并配置防火墙

首先,如果防火墙还没有开启的话,你应该先开启先前安装的 UFW:

ufw enable

你应该开放默认的“我的世界”服务端端口:

ufw allow 25565/tcp

你应该根据你的使用情况开放或拒绝其他规则。如果你不用服务器负载网站的话,就应该拒绝 80 和 443 端口。谷歌一下 Ubuntu 的 UFW/防火墙指南,你会得到建议的。设置防火墙的时候小心一些,如果你屏蔽了 SSH 端口的话你会把自己锁在服务器外面。

由于这是默认端口,这个端口经常被扫描以及攻击。你可以通过屏蔽白名单之外的访问权限来阻挡攻击。

首先,你需要在你的 server.properties 文件中开启白名单模式。要开启的话,打开文件:

nano /opt/minecraft/server.properties

并将 white-list 行改为 true

white-list=true

保存并关闭文件。

然后重启你的服务器(重启你的服务器或重新运行启动脚本):

/opt/minecraft/startminecraft.sh

访问“我的世界”服务端控制台:

screen -r minecraft

如果你想要某人进入你的服务端,你需要通过以下命令把他们添加到白名单:

whitelist add PlayerUsername

运行以下命令来将他们移出白名单:

whitelist remove PlayerUsername

使用 CTRL+A-D 来退出 screen(服务器控制台)。值得注意的是,这会拒绝除白名单以外的所有人连接到服务端。

如何搭建“我的世界”服务器 - 常见问题

我们将解答一些有关“我的世界”服务器和我们的指南的常见问题。

我该如何重启“我的世界”服务器?

如果你按照我们的教程来的话,包括开启了服务端随系统启动,你可以直接重启你的 Ubuntu 服务器。如果没有设置岁系统启动的话,你可以通过重新运行启动脚本来重启“我的世界”服务端:

/opt/minecraft/startminecraft.sh

我该如何配置我的“我的世界”服务端?

你可以使用 server.properties 文件来配置你的服务端。查看“我的世界”维基来获取更多信息,你也可以什么都不动,它会工作的很好。

如果你想改变游戏模式、难度等诸如此类的东西,你可以使用服务端控制台。通过下面的命令访问服务端控制台:

screen -r minecraft

并执行命令。像下面这些命令:

difficulty hard
gamemode survival @a

你可能需要重新启动服务端,这取决于你使用了什么命令。你可以使用很多命令,查看维基来获取更多。

我该如何升级我的“我的世界”服务端?

如果有新版本发布的话,你需要这样做:

进入“我的世界”目录:

cd /opt/minecraft

下载最新的版本,比如使用 wget 下载 1.12.3 版本:

wget https://s3.amazonaws.com/Minecraft.Download/versions/1.12.3/minecraft_server.1.12.3.jar

接下来,运行并构建新服务端:

java -Xms2048M -Xmx3472M -jar minecraft_server.1.12.3.jar nogui

最后,更新你的启动脚本:

nano /opt/minecraft/startminecraft.sh

更新版本号数字:

#!/bin/bash
cd /opt/minecraft/ && java -Xms2048M -Xmx3472M -jar minecraft_server.1.12.3.jar nogui

现在你可以重启服务端了,一切都应该没有问题。

为什么你们的教程这么长,而其他的只有 2 行那么长?!

我们想让这个教程对新手来说更友好,并且尽可能详细。我们还向你展示了如何让服务端长期运行并跟随系统启动,我们向你展示了如何配置你的服务端以及所有的东西。我是说,你当然可以用几行来启动“我的世界”服务器,但那样的话绝对很烂,从不仅一方面说。

我不知道 Linux 或者这里说的什么东西,我该如何搭建一个“我的世界”服务器呢?

只要通篇阅读我们的文章,复制粘贴几个命令就行了。如果你真的不知道该如何做的话,我们可以帮你,或者直接找一个托管的服务器提供商,让他们帮你做这些。

我该如何在服务端上安装 mod 和插件?

我们的文章意图作一篇入门指南,你应该查看“我的世界维基”,或者谷歌一下来获取更多信息。网上有很多教程。


via: https://thishosting.rocks/how-to-make-a-minecraft-server/

作者:ThisHosting.Rocks 译者:heart4lor 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Bunco:一个使你的“快艇”游戏看起来更复杂的掷骰子游戏。

我已经有段时间没有编写游戏了,所以我觉得现在正是做一些这方面事情的时候。起初,我想“用脚本编一个 Halo游戏?”(LCTT 译注:Halo,光晕系列游戏),但我后来意识到这不太可能。来编一个叫 Bunco 的简单骰子游戏吧。你也许没有听说过,不过你母亲绝对知道 —— 当一群年轻女孩聚在当地的酒吧或者小酒馆的时候,这是个很受欢迎的游戏。

游戏一共六轮,有三个骰子,规则很简单。每次投三个骰子,投出的点数要和当前的轮数数字一致。如果三个骰子都和当前的轮数一致,(比如,在第三轮三个骰子都是 3),你这一轮的分数就是 21。 如果三个骰子点数都相同但和轮数数字不同,你会得到最低的 Bunco 分数,只有 5 分。如果你投出的点数两者都不是,每一个和当前轮数相同的骰子得 1 分。

要想玩这个游戏,它还涉及到团队合作,每一队(包括赢的那队),每人付 5 美元现金,或赢家得到其他类似现金奖励,并规定什么样的情况下才是赢家,例如“最多 Buncos” 或“最大点数”的情况下胜利。在这里我会跳过这些,而只关注投骰子这一部分。

关于数学逻辑部分

在专注于编程这方面的事之前,我先简单说说游戏背后的数学逻辑。要是有一个适当重量的骰子投骰子会变得很容易,任意一个值出现概率都是 1/6。

完全随机小提示:不确定你的骰子是否每个面都是一样重量? 把它们扔进盐水里然后掷一下。YouTube 上有一些有趣的 D&D 世界的视频向你展示了怎么来做这个测试。

所以三个骰子点数一样的几率有多大? 第一个骰子 100% 会有一个值 (这儿没什么可说的),所以很简单。第二个则有 16.66% 的概率和第一个骰子的值一样,接下来第三个骰子也是一样。 但当然,总概率是三个概率相乘的结果,所以最后,三个骰子值相等的概率是 2.7%。

接下来,每个骰子和当前轮数数字相同的概率都是 16.66%。从数学角度来说:0.166 * 0.166 * 0.166 = 0.00462 。

换句话说,你有 0.46% 的可能性投出 Bunco,比 200 次中出现一次的可能性还小一点。

实际上还可以更难。如果你有 5 个骰子,投出 Mini Bunco (也可以叫做 Yahtzee “快艇”) 的概率为 0.077%,如果你想所有的骰子的值都相同,假设都是 6,那概率就是 0.00012%,那就基本上没什么可能了。

开始编程吧

和所有游戏一样,最难的部分是有一个能生成真正的随机数的随机数发生器。这一部分在 shell 脚本中还是很难实现的,所以我需要先回避这个问题,并假设 shell 内置的随机数发生器就够用了。

不过好在内置的随机数发生器很好用。用 $RANDOM 就能得到一个 0MAXINT(32767) 之间的随机值:

$ echo $RANDOM $RANDOM $RANDOM
10252 22142 14863

为了确保产生的值一定是 1 - 6 之中的某个值,使用取余函数:

$ echo $(( $RANDOM % 6 ))
3
$ echo $(( $RANDOM % 6 ))
0

哦!我忘了要加 1,下面是另一次尝试:

$ echo $(( ( $RANDOM % 6 ) + 1 ))
6

下面要实现投骰子这一功能。这个函数中你可以声明一个局部变量来存储生成的随机值:

rolldie()
{
   local result=$1
   rolled=$(( ( $RANDOM % 6 ) + 1 ))
   eval $result=$rolled
}

使用 eval 确保生成的随机数被实际存储在变量中。这一部分也很容易:

rolldie die1

这会为第一个骰子生成一个 1 - 6 之间的随机值存储到 die1 中。要掷 3 个骰子,很简单:

rolldie die1 ; rolldie die2 ; rolldie die3

现在判断下生成的值。首先,判断是不是 Bunco(3 个骰子值相同),然后是不是和当前轮数值也相同:

if [ $die1 -eq $die2 ] && [ $die2 -eq $die3 ] ; then
  if [ $die1 -eq $round ] ; then
    echo "BUNCO!"
    score=25
  else
    echo "Mini Bunco!"
    score=5
  fi

这可能是所有判断语句中最难的部分了,注意第一个条件语句中这种不常用的写法 : [ cond1 ] && [ cond2 ]。如果你想写成 cond1 -a cond2 ,这样也可以。在 shell 编程中,解决问题的方法往往不止一种。

代码剩下的部分很直白,你只需要判断每个骰子的值是不是和本轮数字相同:

if [ $die1 -eq $round ] ; then
  score=1
fi
if [ $die2 -eq $round ] ; then
  score=$(( $score + 1 ))
fi
if [ $die3 -eq $round ] ; then
  score=$(( $score + 1 ))
fi

唯一要注意的是当出现 Bunco/Mini Bunco 就不需要再统计本轮分数了。所以整个第二部分的判断语句都要写在第一个条件语句的 else 中(为了判断 3 个骰子值是否都相同)。

把所有的综合起来,然后在命令行中输入轮数,下面是现在的脚本执行后的结果:

$ sh bunco.sh 5
You rolled: 1 1 5
score = 1
$ sh bunco.sh 2
You rolled: 6 4 3
score = 0
$ sh bunco.sh 1
You rolled: 1 1 1
BUNCO!
score = 25

竟然这么快就出现 Bunco 了? 好吧,就像我说的,shell 内置的随机数发生器在随机数产生这方面可能有些问题。

你可以再写个脚本测试一下,去运行上述脚本几百次,然后看看 Bunco/Mini Bunco 出现次数所占的百分比。但是我想把这部分作为练习,留给亲爱的读者你们。不过,也许我下次会抽时间完成剩下的部分。

让我们完成这一脚本吧,还有分数统计和一次性执行 6 次投骰子(这次不用再在命令行中手动输入当前轮数了)这两个功能。这也很容易,因为只是将上面的内容整个嵌套在里面,换句话说,就是将一个复杂的条件嵌套结构全部写在了一个函数中:

BuncoRound()
{
   # roll, display, and score a round of bunco!
   # round is specified when invoked, score added to totalscore

   local score=0 ; local round=$1 ; local hidescore=0

   rolldie die1 ; rolldie die2 ; rolldie die3
   echo Round $round. You rolled: $die1 $die2 $die3

   if [ $die1 -eq $die2 ] && [ $die2 -eq $die3 ] ; then
     if [ $die1 -eq $round ] ; then
       echo "  BUNCO!"
       score=25
       hidescore=1
     else
       echo "  Mini Bunco!"
       score=5
       hidescore=1
     fi
   else
     if [ $die1 -eq $round ] ; then
       score=1
     fi
     if [ $die2 -eq $round ] ; then
       score=$(( $score + 1 ))
     fi
     if [ $die3 -eq $round ] ; then
       score=$(( $score + 1 ))
     fi
   fi

   if [ $hidescore -eq 0 ] ; then
     echo "  score this round: $score"
   fi

   totalscore=$(( $totalscore + $score ))
}

我承认,我忍不住自己做了一点改进,包括判断当前是 Bunco、Mini Bunco 还是其他需要计算分数的情况这一部分 (这就是 $hidescore 这一变量的作用)。

实现这个简直是小菜一碟,只要一个循环就好了:

for round in {1..6} ; do
  BuncoRound $round
done

这就是现在所写的整个程序。让我们执行一下看看结果:


$ sh bunco.sh 1
Round 1\. You rolled: 2 3 3
  score this round: 0
Round 2\. You rolled: 2 6 6
  score this round: 1
Round 3\. You rolled: 1 2 4
  score this round: 0
Round 4\. You rolled: 2 1 4
  score this round: 1
Round 5\. You rolled: 5 5 6
  score this round: 2
Round 6\. You rolled: 2 1 3
  score this round: 0
Game over. Your total score was 4

嗯。并不是很令人满意,可能是因为它只是游戏的一次完整执行。不过,你可以将脚本执行几百几千次,记下“Game over”出现的位置,然后用一些快速分析工具来看看你在每 6 轮中有几次得分超过 3 分。(要让 3 个骰子值相同,这个概率大概在 50% 左右)。

无论怎么说,这都不是一个复杂的游戏,但是它是一个很有意思的小程序项目。现在,如果有一个 20 面的骰子,每一轮游戏有好几十轮,每轮都掷同一个骰子,情况又会发生什么变化呢?


via: http://www.linuxjournal.com/content/shell-scripting-bunco-game

作者:Dave Taylor 译者:wenwensnow 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出