无界世界在线 (BWO)
一个使用 Flutter 和 Flames,以及 NodeJS 和 Firebase 作为后端的无限程序化在线游戏。
关于桌面
世界并没有存储在任何地方,它使用了一些概念和规则(Perlin Noise 和 Simplex Noise)在所有设备上以相同的方式生成它,只有玩家所做的更改实际上存储在服务器端。
玩家可以在无限的世界中的任何地方建造他们的房屋。这就是为什么我一开始称之为无界世界。?
该项目仍在开发中,目前还没有很多功能。
我尽可能多地使用 SOLID 原则,使事物足够清晰易读,虽然我不是专家,但如果您有任何建议,请告诉我。
发布日期?
希望在今年晚些时候。
当前版本:1.0.4
游戏图表、结构和注释

更多细节请访问 Whimsical 图表页面,查看每个节点的注释。
说明
-
要求
- 系统已安装 NPM 和 NodeJS
- 导航到
bwo-server文件夹,然后在控制台中运行命令npm install来安装和更新所有依赖项
-
启动您自己的服务器
-
2.1 如果您想在线运行,请设置数据库
- 在 Google 控制台 创建一个项目并设置您的 Firebase 数据库和 Cloud Firestore
- 将
google-services.json文件保存在android\app\
- 将
- 编辑
resources/config.js中的环境变量或在您的系统中设置它们,以便服务器可以连接到您的数据库。
- 在 Google 控制台 创建一个项目并设置您的 Firebase 数据库和 Cloud Firestore
-
2.2. 运行 Node 服务器
- 导航到
bwo-server文件夹,然后在控制台中运行命令npm start或node server.js- 要指定环境,请在两种情况下都使用
--env=development或--env=production,您需要通过 Firebase 进行身份验证。对于本地主机,请使用--env=localhost - 要在服务器端运行测试,请运行
npm test(仍在开发中)
- 要指定环境,请在两种情况下都使用
- 导航到
-
2.3 对于客户端(Android 应用),请在
lib\server\utils\server_utils.dart中调整服务器 URL- 设置您的数据库名称
development、production、localhost - 提示:您可以免费托管在 gitpod 或 heroku 上运行它
- 设置您的数据库名称
-
-
如果您不想配置自己的服务器,只想运行游戏:(本地主机)
- 请确保将
server变量 URL 在lib\server\utils\server_utils.dart中调整为https://borderless-world.herokuapp.com - 请确保将
isOffline变量在lib\server\utils\server_utils.dart中调整为true
- 请确保将
-
在您的设备上启动应用程序
- 屏幕左侧点击 = 行走
- 屏幕右侧点击 = 砍树/攻击
- 在建造模式下,您不能行走,只能在地基的方形区域内放置/删除物体
您还可以通过浏览器打开主机 URL 来查看当前的服务器状态(用于调试)
如果您遇到任何问题,请告诉我,打开一个 issue,我会很快与您联系。在此阶段,代码重构非常受欢迎。
开发日志
用例
- 优化渲染和地图生成器
- 修复玩家动画位置
- 为环境添加阴影
- 当设备完全平放时停止玩家行走
- [-] 特殊效果
- 行走烟雾
- 水波纹
- 水沫
- 水星闪烁
- 音效 BGM、行走和游泳
- 为环境增加更多生机
- 当玩家挂机时围绕玩家移动摄像机
- 为玩家添加砍树动画
- 砍树时添加水果掉落
- 砍树逻辑和动画
- 添加拾取物品
- 库存
- 敌人类别
- AI 巡逻(本地)
- AI 搜索、跟随和丢失目标(本地)
- AI 攻击(本地)
- 行走时生成随机敌人(在线)
- 为玩家添加攻击动画
- 添加战斗系统
- 添加 UI 系统
- 已添加场景管理器(在菜单、游戏等场景之间切换)
- 添加 UI - 玩家创建
- 为游戏添加了新的角色精灵
- 关卡和进度系统
- 玩家 HUD
- 装备和状态加成
- 添加饥饿度
- 添加行走方式的输入摇杆风格
- [-] 创建 Node 服务器
- 同步玩家位置
- 平滑玩家动画
- 优化玩家数据同步,仅同步给可见范围内的玩家
- 同步砍树动画/状态/重生
- 同步敌人
- 同步攻击其他玩家的伤害/动画
- 同步装备精灵
- 同步物品生成
- [-] 制作类别
- 用其他物品制作斧头
- 制作数据库
- 带有拖放功能的制作 UI
- [-] 建造类别
- 私人建筑的地基
- 墙壁放置
- 自动/切换墙壁高度级别
- 删除地基
- UI 对象选择界面
- 地面瓦片
- 屋顶
- 动画门
- Windows
- 制作或购买系统
- 将建筑同步到服务器
- 墙壁
- 地板
- 家具
- 将地基/房屋保存/备份到 Firebase
- [-] 界面
- 创建账户 UI
- 角色创建 UI
- 登录 UI
- 装备 UI
- 动态更改背景音乐音量
- Firebase 用于备份服务器状态
- 处理数据库中的用户登录
- 生物群系
- Playstore 的动态捆绑包和 CI/CD
- 全局聊天系统
- UML 游戏图
- 地基的安全区域
- 随机迷宫地牢和战利品
已知问题
- 收到行走更新时有时会滑得太厉害
- 敌人不会与墙壁碰撞。缺少寻路
正在进行
- 性能改进
下一步
- 代码重构
- 新敌人
- 敌人被动攻击
22/09
- 新敌人
18/09
- 修复了将地基区域预览拖出屏幕区域的错误
- 修复了 Flames 更新后创建角色的错误
- 减少服务器上的地基加载区域,只有当您靠近屏幕边缘时才会加载
- 添加了在砍伐树木地点建造地基的选项
17/09
- 服务器消息发送大幅改进
- 地基现在是安全区,这意味着敌人不会在那里攻击您
13/09
- 添加了门
- 玩家靠近时自动开关门
- 通过删除工具添加了移除家具的功能
- 家具碰撞检查和放置验证
09/09
- 添加了屋顶
08/09
- 家具同步
- 添加了向上墙壁的图层到相应的按钮(未来用于显示屋顶)
07/09
- 添加了墙壁多材质
06/09
- 修复了在地形尚未完全生成时未放置地板的错误
- 添加了家具选择和放置
- 添加了地板和家具精灵
04/09
- 添加了吐司通知消息
- 添加了树木 HP 恢复和 HP 满后从服务器删除
- 修复了地基未加载问题
- 将地基备份到 Firebase
03/09
- 修复了更新墙壁时的一些性能问题
01/09
- 添加了地板到建造系统
30/08
- 添加了墙壁窗户选择器
- 添加了地基窗户选择器、放置区域指示器拖动、移动时的安全/不安全颜色指示器
- 用于地基的服务器验证
- UI 建造系统
28/08
- 已通过服务器添加墙壁放置同步。(*终于! :O* (尚未保存数据))
- 在行走时改进了服务器发送的消息
- 添加了新的精灵
- 开始构建窗口操作(未完成)
26/08
- 添加了 Google 登录方法认证
- 将用户角色数据和用户账户保存到 Firebase
- 添加了 Firebase 与服务器数据之间的合并功能
- 敌人不再永久保存,因为它们是在您行走时生成的,这也是服务器重启时清理服务器的好主意
25/08
- 添加了 Firebase 数据库来保存持久化数据
24/08
- 添加了 02 个新的精灵角色
- 添加了切换墙壁高度级别(自动、低和高)
23/08
- 为私人房屋建造系统添加了地基
- 在地形上添加了墙壁放置
21/08
- 从服务器添加了升级系统
- 同步:砍树动作
- 同步:树的生命值/树的死亡动画/180秒后重生
19/08
- 修复了某些设备上的 UI 元素位置不正确的问题。
- 在服务器上添加了日志记录
- 从服务器添加了玩家 HP 再生
- 从服务器添加了杀死怪物获得的 XP 奖励
- 修复了 male1 的左右行走精灵动画顺序
- 更改了键盘打开动画和自动大写
17/07
- 为测试添加了 heroku 服务器。
16/08
- 修复了敌人离开屏幕时的行走问题
- 改进了敌人在玩家进入其范围时和攻击延迟的反应
- 将玩家攻击同步到敌人
13/08
- 将 Effective Dart 添加到项目中(大规模重构)
11/08
- 在后端服务器上为(TDD)添加了 Jasmine
- 让敌人死亡时丢失目标
07/08
- 新的生产/开发环境在启动服务器时更新
- 修复了上一次更新后玩家的生成位置
- 修复了未加载草地纹理
- 添加了 Wakelock(屏幕将保持唤醒)
- 修复了敌人生成时出现 NaN 值的罕见错误
03/08
- 重建逻辑以同步服务器端速度模拟的敌人行走(这需要计算敌人何时真正接近玩家,而不是从后端“传送”到玩家面前,实际上他们并不近)
01/08
- 在项目中添加了服务器端文件夹
30/07
- 减少 Socket.io 库的日志量
- 敌人名称
- 在连接服务器接收消息更新方面的一些改进
26/07
- 实时敌人生成/行走同步(客户端)
24/07
- 添加了行走方式的输入摇杆风格(加速度计仍然非常有趣且不同,但对某些人来说太难了)
- 修复了敌人离开屏幕时未生成的问题
- 敌方/玩家的伤害文本颜色
- 敌人未巡逻
21/07
- 添加了关卡和进度系统
- 添加了装备物品和奖励状态(所有角色共享的单一来源)
- 添加了玩家 HUD 和状态管理逻辑
- 添加了斧头以更快地砍树
- 添加了卡路里逻辑(如果您挨饿,您将获得不良状态和限制)
17/07
- 新玩家精灵
- 修复了树木生成(有时是随机的)
- 小地图改进
- 修复了一些服务器端逻辑
- 添加了离线模式用于调试
15/07
- 添加了 3 个新的可玩精灵来玩
- 添加了起始位置选择
- 角色创建 UI
- 添加了新的 UI 按钮和键盘
10/07
- 解决了进入我的屏幕时玩家未更新的问题
- 移除了 Google Firebase,改用 Node.js 服务器
- 仅将玩家位置同步到相机视图
07/07
- 添加了与 Google Firebase 的实时连接。
04/07
- 添加了战斗系统(伤害/死亡/重生)
- 添加了 AI 攻击
- 在 UI 上添加了伤害文本显示
03/07
- 添加了 AI 系统
- 添加了新敌人 [Skull]
02/07
- 砍树逻辑/动画和重生
- 添加了日志项
- 添加了拾取项
- 添加了库存系统
- 添加了点击检测
- 添加了 HUD 和 UI 系统
29/06
- 重力、摩擦和弹力物理
- 添加了掉落物品逻辑
28/06
- 玩家移动已更改 - 现在您需要点击屏幕才能让他移动。
- 玩家精灵已更改
- 砍树玩家动画
26/06
- 添加了随机草/花卉精灵,
- 更改颜色调色板以获得更多游戏的“外观和感觉”。
- 在山区添加了碰撞
- 环境音乐和脚步声
24/06
- 添加了行走/游泳和水效果+动画
23/06
- 添加了玩家沉入水中和树木碰撞检测。
21/06
- 我现在专注于性能改进,以提供尽可能高的帧率。
- 下一步将是玩家本身的设计以及与环境的碰撞检测。





