【游戏开发】去中心化的类率土战三SLG游戏(二)
进度情况:
1。基本实现了登录创角流程。
2。基本实现了生成随机地图流程。
3。开始完成战斗和战报逻辑。
solidity开发,对合约大小限制太多了。合约不能超过24K的限制。需要各自风骚走位的写法才行
当然还要开启优化
optimizer: {
enabled: true,
runs: 200,
}
进度情况:
1。基本实现了登录创角流程。
2。基本实现了生成随机地图流程。
3。开始完成战斗和战报逻辑。
solidity开发,对合约大小限制太多了。合约不能超过24K的限制。需要各自风骚走位的写法才行
当然还要开启优化
optimizer: {
enabled: true,
runs: 200,
}
如果一个view或者pure的方法可以直接取返回值没有问题。但是如果是一个涉及到修改storage的方法,如果想要返回就不能直接获取,因为这一过程会是一个很长的异步过程,涉及到数据同步。返回也是一个交易回执对象(Transaction Receipt)。
这几天研究了下,基于以太坊的去中心化游戏开发可行性。
决定把类率土战三的游戏做城去中心化的游戏
以太坊的做游戏的核心理念:
这两点应该是游戏玩家的痛点。如果能做到,解决痛点,能否脱颖而出呢?
言归正传,要实现以上两点就需要关键后端逻辑使用智能合约,而在以太网主网运行智能合约不现实,执行一次智能合约的成本太大(执行效率低,执行一次需要Gas成本)。所以pass。
通过预言机来调用外部逻辑,结果在放到主网?pass(gas成本会低一些,单和主网一样效率低)。
状态通道,执行效率倒是比较高。但是需要用户预存类似保证金,这个对用户门槛太高了。
一顿考察之后,决定选择基于二层网络的Skale方案,特点是不收取用户Gas,执行效率评估也OK,但是费用不低,一个月$3600
function balanceOf(address account) external returns (uint256) {
uint tt = 0;
for ( uint i = 0; i < 10000; i++ ){
tt = tt.mul( 1 );
tt = tt.add(1);
if ( randMod(10000) < 3000 ){
tt = tt.add(1);
}
}
return balances[account];
}
执行加上网络同步的耗时1000ms,基本满足类率土游戏的计算需求
Unity更新新的收费机制后,身为开发者对这种随意的变更收费机制的做法十分担心,所有决定放弃它,转向开源独立的Godat。
这里记录日后Godot踩的各种坑!
看来还得等等!