问题标签 [roguelike]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
11 回答
16703 浏览

roguelike - 哪种编程语言最适合创建类 Rogue 游戏?

出于对创建 Roguelike RPG(例如 Nethack、Rogue 和 ADOM)的兴趣,哪种编程语言最适合?为什么?

使用您选择的语言,请务必列出使其特别适合的语言的任何库或方面。

0 投票
3 回答
1862 浏览

c# - 在 Silverlight(或 WPF)中构建 Roguelike

我一直在玩弄使用 Silverlight 构建基于 Web 的 Roguelike 游戏(或者可能只是使用 WPF 的桌面游戏)的想法。

如果您不知道 Roguelike 是什么,它是一种图形 RPG,其中图形使用文本呈现。由于图形引擎相对简单,您可以花时间在游戏中构建功能,并且一个人可以快速构建一些有趣的东西。

例如,典型的屏幕可能看起来像这样(@ 是玩家,# 是墙,其他字符是怪物、楼梯和物品):


(来源:thangorodrim.net

我是一位经验丰富的 ASP.Net 开发人员,我刚刚开始使用 Silverlight。我应该为此采取一种特殊的方法吗?

为了提供一些背景知识,在 Winforms 中,大多数标准方法都太慢了——文本最终更新为可见的、难看的闪烁。我在想与 Canvas 相关的事情可能是合适的,但更好的是以某种方式将屏幕绘制到缓冲区中,然后立即将其翻转到屏幕上,使其立即可见。

但我现在真的不想乱用 DirectX - 我希望 WPF 可以让我在没有大的学习曲线的情况下到达我需要的地方。

有什么想法吗?

更新:所以这变得非常具有挑战性。我尝试了很多不同的方法,我终于能够让它真正渲染得足够快,但我认为要让它快速燃烧,你可能应该构建一个你想要使用的字体的精灵图并从中工作尝试使用任何内置字体渲染的东西。我没有那样做。

当我完成核心渲染引擎时,我最终得到了一些与字体渲染怪癖相关的令人讨厌的工件(即使是固定宽度的字体有时也有点宽......),当我最终解决这个问题时,我发现了libtcod,它是一个非常令人印象深刻的 roguelike 引擎,它有一个 C# 包装器。这都是基于控制台的。我玩了一点,我被吹走了。

从 1.5.1 开始,除了鼠标输入和一种键盘输入模式(我认为他们最近放弃了)之外,我在 libtcod 中接触的所有东西都很好用,但是你需要制作 roguelike 的所有东西都在那里,并且这包括几种视线、寻路,甚至地牢生成算法。它在视觉上相当先进。你见过这样的RL吗?

http://doryen.eptalys.net/files/screenshot0014.png

简而言之,使用silverlight 构建roguelike 是可能的,但除非你已经拥有强大的silverlight 或游戏开发背景,否则我不会指望它会很容易。你将重新发明一些严肃的轮子,即使有一个强大的工具包可以让你专注于游戏玩法,也有很多事情要做。

0 投票
2 回答
976 浏览

java - 使用 Java Swing 从精灵表中绘制的最佳性能选项

我正在使用 Java 创建一个图形化的 roguelike 游戏。在游戏中,我将 Tile 对象的二维数组绘制到 JPanel 上。这些 Tile 对象代表地面。我有一个 .bmp 精灵表,其中包含我想用来绘制的所有纹理。每次玩家移动时,玩家可见的图块都需要重新绘制。

我的问题是性能问题。我过去已经实现了这一点,我让 Tiles 扩展了 JPanel,每个 Tile 只使用 bufferedImage.getSubImage() 显示精灵表的适当部分,而父 JPanel 只是在所有 Tiles 上调用 paint()二维数组。这对于上一个项目中的小型 30x20 地图效果很好,但我不确定它是否适用于当前游戏。

我应该使用相同的方法还是有其他可能的解决方案可以加快绘制时间?Tile 类是否应该扩展一些其他的 Swing 或 AWT 组件,例如 BufferedImage 还是不会产生影响?

谢谢。

0 投票
4 回答
6744 浏览

ruby - 如何在 Ruby 中创建二维对象数组?

我正在为我的 roguelike 游戏创建地图,但我已经偶然发现了一个问题。我想创建一个二维对象数组。在我之前的 C++ 游戏中,我这样做了:

我不知道我应该如何用 Ruby 做到这一点。

0 投票
4 回答
1711 浏览

f# - F# 中非常简单的 RogueLike,使其更具“功能性”

我有一些现有的 C# 代码,用于非常非常简单的 RogueLike 引擎。这是故意天真,因为我试图尽可能简单地做最少的数量。它所做的只是使用箭头键和 System.Console 在硬编码地图周围移动 @ 符号:

我在 F# 中玩弄它,最初我试图使用函数概念来编写它,但结果我有点过头了,所以我做了一个直接的移植——它不是真正的 F# 程序(尽管它编译并运行)它是一个用 F# 语法编写的过程程序:

所以我的问题是,为了更实用地重写它,我需要学习什么,你能给我一些提示,一个模糊的概述之类的东西。

我宁愿朝正确的方向推进,而不是仅仅看一些代码,但如果这是你向我解释它的最简单方法,那么很好,但在这种情况下,你能否也解释一下“为什么”而不是“如何”的吗?

0 投票
6 回答
5707 浏览

java - roguelike 游戏的纯 Java 文本界面

好的,这听起来像是一个疯狂的想法——但我有兴趣在纯 Java 中模拟 1980 年代风格的roguelike 游戏文本界面,即使用 Swing 或类似的。

以下是它大致需要做的事情:

  • 提供固定大小字符的固定大小网格作为“屏幕”(例如 100*75)
  • 使用合适的等宽字体,最好有很多有趣的符号
  • 允许为每个字符位置单独设置前景色和背景色
  • 允许在屏幕的任何位置打印字符串或单个字符(这应该覆盖这些位置的屏幕缓冲区中已经存在的任何内容)

任何人都知道可以实现这一点的良好现有解决方案吗?还是我坚持从头开始破解一个?

ps我想要纯Java的原因是它可以在沙盒小程序中运行。所以像jcurses这样的JNI解决方案很遗憾被排除在外......

0 投票
1 回答
718 浏览

java - 在类 Rogue 游戏中实现掉落物品的简单方法?

基本上我有一个我正在制作的流氓游戏,并试图在敌人死亡时实现掉落物品。我已经尝试了几种不同的方法来做到这一点,但都没有成功。

我只是想知道你是否对如何解决这样的事情有任何想法。谢谢!

0 投票
1 回答
1955 浏览

c++ - Roguelike FOV 问题

我正在从事一个大学 compsci 项目,我需要一些关于视野算法的帮助。我主要工作,但在某些情况下,算法可以穿透墙壁并突出显示玩家不应该看到的墙壁。

如果有人可以帮助我使第一个被阻止的瓷砖可见但阻止其余的瓷砖,我将不胜感激。

谢谢, Manderin87

0 投票
2 回答
916 浏览

c++ - 编写 Roguelike:帮助实体阵列物流

我目前正在编写 roguelike 游戏,并在进行过程中自学我需要的东西。

我被困在一个问题上,我在这里找到了一些答案: 在游戏中组织实体的最佳方式?

我需要一个实体树,其中包含对该问题的最佳响应中描述的类。

它提到了通过 std::set 迭代来运行每个实体的“脚本”——但留下了一些我需要知道的东西无法解释。

  1. 在这样的实现中,我如何查找坐标(类中的整数)?我怀疑这比运行一个遍历所有内容直到找到匹配结果的 For 更容易......

  2. 我将如何处理同一地点的多个事物(项目堆栈等)?我知道我可以让一个类的多个实例包含相同的坐标,但是在这种情况下我会从查找中得到什么?

  3. 有没有办法迭代,例如,实体的“速度”统计的降序?

谢谢~

0 投票
1 回答
196 浏览

c++ - 使用特定变量值启动派生类

对于下面的代码片段,如何使用变量(例如 x、y、type)初始化类 Enemy 的实例?我让它正常工作,无论我插入多少个实例,它都会触发实例......我只需要知道使用某些变量创建敌人的最佳方法,这些变量对于我的每个实例都会有所不同......特别是当一些这些变量中的一个在基类中,而其他变量不在。