序
开头我先说一句,这篇帖子会很长很长很长,而且写的很凌乱,几乎是想到什么就写什么,但是有一点阅读之前,请务必确保有必要的discord基础知识,提问之前,请先阅读《提问的智慧》。
你需要至少了解以下内容:
- JavaScript基础
- node.js基础
- Ubuntu 18.04 的使用基础
- 数据库基础
- PlatON-JS-SDK基础
- Solidity智能合约基础
- Blender 3D建模基础
- 《莫生气》
社交渠道 & 友情链接
- 社区活动请加入浅浅社区Discord
- PlatON首款 GameFi Stone Aeon Discord
- PlatON生态 Dante Chain 、Dante Github
- PlatON World Telegram
实现功能
- 货币体系
- 道具商城、技能商城、装备商城系统、任务系统、剧情系统【可选】
- P2E练级、P2P对战、角色养成、社交
- 对接曾经发行的社区身份ID-NFT
- 实现战斗角色信息非同质化 [PlatON Dev Network]
其他
- 与其他板块联动【确认后公开】
- 私服:已部署 Alaya 私有网络用于私有化测试,计划部署 Alaya Dev Network 节点联动测试
-
浅浅社区Discord
暂未已部署本教程机器人。,在秘密服务器中开发、测试【个别社区用户正参与】
部分谍照【提前尝鲜可加入社区开发服务器Discord】
指令大全
- /userbalance:查询你的余额
- /propshop:查看道具商城
- /buyshop <option: propname>:购买道具 【必填项:道具名称】
- /bag:查看背包道具及当前余额
- /addprop <option 12>:添加新的道具【仅服务器管理员可以使用】
- /createplayer:创建战斗角色
- /removeplayer:删除战斗角色【尝鲜版可用,满足用户刷先天三围的意愿】
- /pk <option: user>:与其他玩家进行战斗
新增指令
- /useprop:使用道具
- /addbalance:转账铜板
执行环境
- 云服务器
两一台- 海外配置:32G8C 240G (托管、开发)
-
国内配置:4G4C 80G (开发)【须安装配置Shadowsocks,放弃使用】
- 软件版本
- 系统:Ubuntu18.04
- nvm Version:
1.1.90.31.4 - node Version:16.14.0
,12.16.1 - npm 第三方库
- @discordjs/builders@0.12.0
- @discordjs/rest@0.3.0
- discord-api-types@0.31.
01 - discord.js@13.6.0 [特殊:v13与v12版本改动大,请勿使用v12语法]
sequelize@6.18.0sqlite3@5.0.2 [特殊:nvm use 12.16.1 可 npm install,16.14.0 将报错]- sequelize@6.19.0
- sqlite3@5.0.3
- forever@4.0.3【node进程守护】
- web3@1.2.4 [PlatON-JS-SDK,nvm use 12.16.1]
- 在 Discord Applications 注册机器人
- 获取 ApplicationID 和 Token,并通过 OAuth2 邀请进自己创建的服务器
服务器架构
- 开发环境Dev
- 生产环境Product
切记开发与生产分离,否则开发时出现环境事故很麻烦。
游戏道具
- 基于ERC1155标准的游戏道具合约已于测试网部署完毕(2022年4月10日00点53分20秒)
- 功能测试:
- 铸造:测试无误,按预期效果
- 查询:测试无误,按预期效果
- 燃烧:测试无误,按预期效果
- 批量操作:测试无误,按预期效果
是否支持连接钱包
- Discord 未支持连接MetaMask钱包,因此用户无法通过授权进行道具燃烧,故此项ERC1155的引入仅作为测试使用
- \small\color{red}{正尝试使用跳转外部URL连接钱包的方案(2022年4月10日17点44分)}
道具文件存储
- 使用Tomcat 9.0搭建基于云的文件存储方案,浏览器可访问
- 道具文件:
- 道具图标
- 道具 Metadata URI JSON文件
战斗角色
- 左侧尺骨、胫骨绑定已实现
- 面部骨骼绑定已实现
战斗角色具备骨骼绑定上,分为躯干和四肢骨骼绑定,以及面部骨骼绑定。用户可通过骨骼绑定进行个性化捏脸与动作设置。至于如何实现,基于 Blender + Three.js 的模型已经验证完毕【无骨骼绑定】
这里(跳转查看)主要问题是:
-
尽管gITF格式较之3ds、fbx已经算体积较小,但浏览器在访问接近32MB大小的模型时,仍需要加载超过40秒,对于用户体验差。
-
\small\color{red}{解决方案:将大模型拆分为若干个分块模型进行异步加载。}
-
后续需要3D建模工程师配合,Blender基础功能我可以独立实现,但复杂操作仍需专业人士。
智能合约
## 道具是同质化资产,使用1155批量处理
1. PRC1155道具合约:lat14qmea8l7mr8a0dzejdhpf4adasvpulv4rdqy8y
## 装备(特指装备商店出售的正常装备【时装等不包含在内】),使用1155批量处理
2. PRC1155装备合约:lat1jlp6t92zxc7lkhaxmpwygu9tfg6fdlnhczhume
## 装备(特指用户自主铸造),使用721非同质化处理
3. PRC721装备合约:lat1pnu6jzx6scdgafnnjs4xvwtr7725kphx886x0x
## 浅刀(🔪)属于同质化资产,也属于道具的特殊类,因此使用1155[0]同质化处理
4. PRC1155[id:0]浅刀合约:lat14qmea8l7mr8a0dzejdhpf4adasvpulv4rdqy8y
- PlatON-Dev Scan可查询
正文(又睡着了)
Github源码
ERC1155 Metadata URI JSON 示例
{
"name": "一品活血丹",
"description": "补充玩家失去的部分生命值",
"image": "https:\/\/qianqian.com\/warbot\/props\/{id}.png",
"properties": {}
}
卫星地图
经济模型
在浅浅社区 Discord 内置道具、装备、技能、材料四大类。其中浅刀( \small🔪 )属于道具的一种,在智能合约中id
为 0
,是社区通用货币。
\small🔪 浅刀的获取
浅刀( \small🔪 )是社区通用货币。
-
来源:
- 每日签到、社区频道灌水(发言 1 次 + 1 \small🔪 )、活动赠送;
- 击杀野怪、任务奖励、装备回收、道具回收、材料回收;
- 来自其他用户的转账;
应该还有其他的,我暂时没想到。
-
用途:
- 道具、装备、技能购买;
- 装备强化、技能升级、P2P交易、粉丝打榜;
- 铸造个性化装备、镶嵌宝石、装备晋品、开启秘藏;
其他作用暂时没想到,再说吧。
\small🏬 道具
道具是贯穿社区的重要组成部分,因此创建道具商城,实现 \small🔪 和道具之间的双向流动。
\small🏭 装备
装备是战斗角色提升战斗力最好的解决方案,当然相比于道具的数量优势,装备也有它独特的套装优势。频道中存在装备商城,装备有很多种,每种又分不同的等级和品质。以生铁剑为例。
-
生铁剑【战斗角色Lv1可装备】
- 品质: \small\color{#999999}{普通} 、 \small\color{#3285ff}{精良} 、 \small\color{#ac4fe9}{稀有} 、 \small\color{#f1c232}{传承} 、 \small\color{#d70808}{神器}
- 强化+ N:攻击+N【强化满级为10级】
-
生铁剑强化详细属性见下表:【 \small📜 解释:强化符,商城售价 \small10🔪 】
装备名称 | 装备强化等级 | 强化效果 | 强化所需 | 强化总价 | 商城回收价 |
---|---|---|---|---|---|
生铁剑 | 攻击+0 | / | / | 50 \small🔪 | |
生铁剑 | \small⭐ | 攻击+1 | 1 \small📜 | 1 \small📜 | 55 \small🔪 |
生铁剑 | \small⭐⭐ | 攻击+2 | 2 \small📜 | 3 \small📜 | 65 \small🔪 |
生铁剑 | \small⭐⭐⭐ | 攻击+3 | 3 \small📜 | 6 \small📜 | 80 \small🔪 |
生铁剑 | \small⭐⭐⭐⭐ | 攻击+4 | 4 \small📜 | 10 \small📜 | 100 \small🔪 |
生铁剑 | \small⭐⭐⭐⭐⭐ | 攻击+5 | 5 \small📜 | 15 \small📜 | 125 \small🔪 |
生铁剑 | \small⭐⭐⭐⭐⭐⭐ | 攻击+6 | 6 \small📜 | 21 \small📜 | 155 \small🔪 |
生铁剑 | \small⭐⭐⭐⭐⭐⭐⭐ | 攻击+7 | 7 \small📜 | 28 \small📜 | 190 \small🔪 |
生铁剑 | \small⭐⭐⭐⭐⭐⭐⭐⭐ | 攻击+8 | 8 \small📜 | 36 \small📜 | 230 \small🔪 |
生铁剑 | \small⭐⭐⭐⭐⭐⭐⭐⭐⭐ | 攻击+9 | 9 \small📜 | 45 \small📜 | 275 \small🔪 |
生铁剑 | \small⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐ | 攻击+10 | 10 \small📜 | 55 \small📜 | 325 \small🔪 |
- 生铁剑晋品详细属性见下表:
装备名称 | 装备品质 | 品质增强效果 | 晋品所需 | 装备总价 | 商城回收价 |
---|---|---|---|---|---|
生铁剑 | \small\color{#999999}{普通} | \small\color{#999999}{无增强} | / | \small\color{#999999}{100🔪} | \small\color{#999999}{50🔪} |
/ | \small\color{#3285ff}{精良} | \small\color{#3285ff}{攻击+5} | \small\color{#3285ff}{100🔪} | \small\color{#3285ff}{200🔪} | \small\color{#3285ff}{100🔪} |
/ | \small\color{#ac4fe9}{稀有} | \small\color{#ac4fe9}{攻击+10} | \small\color{#ac4fe9}{150🔪} | \small\color{#ac4fe9}{350🔪} | \small\color{#ac4fe9}{175🔪} |
/ | \small\color{#f1c232}{传承} | \small\color{#f1c232}{攻击+15,力量+2} | \small\color{#f1c232}{200🔪} | \small\color{#f1c232}{550🔪} | \small\color{#f1c232}{275🔪} |
/ | \small\color{#d70808}{神器} | \small\color{#d70808}{攻击+25,力量+5} | \small\color{#d70808}{250🔪} | \small\color{#d70808}{800🔪} | \small\color{#d70808}{400🔪} |
- 在装备商城中,所有的装备品质均为 \small\color{#999999}{普通} ;玩家【转职锻造师】自主铸造的装备品质会在 \small\color{#999999}{普通} ~ \small\color{#d70808}{神器} 五个档次间波动。概率如下表
装备品质 | \small🔨\color{#2dd369}{铸造师Lv1} 概率 | \small🔨\color{#2d9cd3}{铸造师Lv2} 概率 | \small🔨\color{#d32d97}{铸造师Lv3} 概率 |
---|---|---|---|
\small\color{#999999}{普通} | 70% | 58.08% | 46% |
\small\color{#3285ff}{精良} | 24.51% | 33.02% | 40.4% |
\small\color{#ac4fe9}{稀有} | 4.49% | 6.98% | 9.76% |
\small\color{#f1c232}{传承} | 0.79% | 1.58% | 3.16% |
\small\color{#d70808}{神器} | 0.21% | 0.34% | 0.68% |
玩家可在Lv30 之后转职成为锻造师,从根本上改变品质的概率
\small⚡ 技能
(略)
\small📦 材料
- 来源:
- 击杀野怪、装备熔炼
- 用途:
- 可寻找铸造师铸造更高品质的装备,或自主转职后铸造
角色模型
玩家战斗角色具象化,使得游戏充满更多可玩性与趣味性,无论是时装比拼、装备竞赛还是数值之间的一争高低。早期社区ID-NFT是2D的像素风造型,它可以作为头像或者在技术条件满足的情况下被3D模型化(目前来看,是短期内难以实现的)。
因此做了两个预案,偏3D化的角色展示和横板2D的角色展示。
此类预案对画师要求较大(目前没有专业团队),因此昙花一现,我个人更倾向于第二种预案。
称号体系
原本我并没有想过要做这个体系,但既然有打榜,称号就不可避免
大概看一下效果