1个不稳定版本
使用旧的Rust 2015
0.1.0 | 2018年8月4日 |
---|
#500 in 图形API
16 stars & 1 watcher
5.5MB
21K SLoC
包含(ELF exe/lib,6.5MB) q-moose,(DOS exe,5MB) q-moose.exe
TGWM(伟大的白鹿的故事)
注意:当前可编译。如果删除Cargo.lock文件,应能在1.28.0和1.31.1上编译和运行。
一个用Rust编写的平面RPG,作为使用该语言的练习。
目标
在机器学习和使用conrod库制作通用GUI(可以在三元组之间轻松重新编译,而无需重新编写太多内容。由于调试游戏更有趣,最终变成了游戏。
关于
本文件描述上述存储库,首先介绍一些技术细节,然后介绍与游戏玩法相关的话题。
当前状态
游戏
机制(大部分)正常工作,你可以在世界中四处游荡,被杀和升级,但没有故事,没有真正的开始或结束。
用户界面
目前有一个工作的GUI,包括主菜单、游戏菜单和战斗菜单。存在用于长途旅行的快捷键,但不是用于导航菜单的(可能是个好主意)。可以调整窗口的亮度和大小。由于glium使用OpenGl,平面纹理小部件和图像(即精灵)的亮度是单独调整的。
声音
有一个由rodio驱动的点唱机,可以在战斗中播放音乐,可以进行自定义或静音。目前没有音效。(因为这只是一个编程练习而不是作曲练习,游戏音乐比较随意,游戏中的歌曲列表也可以更改。目前循环播放需要调整以避免听起来不协调。
图形
小部件按钮作为精灵。使用图像作为背景。世界地图由可执行文件中的指令生成。在战斗中,精灵受到伤害时会震动。更新时间:2018年11月8日:已实现魔法效果和攻击的基本图形。
机制
已实现:旅行世界、战斗、战斗中施法、经验和地牢的机制。大部分已实现:NPC、故事。未实现:传送魔法和库存尚未实现。
AI
目前有三种“AI”机制。
随机
怪物会对“随机”目标进行“随机”行动。
传统
怪物在战斗中会使用一个简单的算法,作为战斗参与者统计数据的一个函数。
算法
计算机在战斗开始时模拟战斗十秒钟(使用上述算法),然后使用这次战斗记录来做出决策。目前,算法使用行动和后果的概率表,并使用它们来决定最佳行动。作为备用,使用因果算法,然而,目前这种方法与治疗魔法有关的一些“错误”。如果“统计数据较弱”,它将回退到前两种方法。目前,这种方法对于非一对一战斗以及有赢有输的小概率战斗是有问题的。实际上,它通常是有问题的,需要改进。需要注意的是,这显然不是一个计算机游戏计算效率高的“AI”。使用它的想法是将其用作机器学习平台(一旦完成其余游戏,我将进一步研究这个问题)。
关于编译的说明
似乎Cargo在不同版本的Rust中会做一些奇怪的事情。如果删除这个存储库中的Cargo.lock文件,应该可以编译并运行(否则可以编译,但不能运行)。还应该可以使用rust 1.28.0,但似乎现在无法访问crates.io,所以我不确定是否可以在1.28.0上运行。
注意:对于干净、发布版本(Windows),请添加“--release -C link-args="-Wl,--subsystem,windows”
Linux
cargo run --release --features="winit glium libc"
Windows (x64)
从Windows
cargo run --release --features="winit glium libc"
从Linux交叉编译
cargo rustc --bin q-moose --release --features="winit glium libc" --target=x86_64-pc-windows-gnu -- -C linker=x86_64-w64-mingw32-gcc
依赖项
TGWM使用conrod 0.57.0(较新版本可能无法使用)。然而,编译的程序似乎只有在将conrod的依赖项指定为精确的(例如:glium = “=0.20”)时才能正常工作。然而,对glium和winit的依赖项也必须指定为精确的(修改Cargo.toml中的依赖项)。
许可协议
因为这个项目没有实际用途,而更像是一个练习,任何人都可以自由“做任何事”,所以几乎不需要许可协议。但是,以防万一,它属于GPL 3.0许可协议。
游戏玩法
游戏玩法是经典的回合制多人对战,玩家对抗电脑幻想战斗者。主要特点是玩家不知道自己属性的确切数值(主AI层也是如此)。有一个玩家队伍,理论上包含多达5个生物(但目前只有两个),以及四个敌方队伍(它们没有联盟胜利的条件,但通常将你视为高优先级目标)。玩家在世界上旅行,“探索”(目前大约有十几个)地牢并完成“任务”(目前还没有真正的任务)。
与故事相关的元素
截至2018年9月16日,故事线引擎已经编写完成,但故事线尚未编写(已编写一个简单的演示任务,当玩家花费10点经验值时触发)。
评论
如果有人对为什么这个不好以及如何改进以提升它有评论,欢迎提出。
依赖项
~16–26MB
~268K SLoC