MoonBit 游戏开发赛道

来拉票了:smiling_face_with_horns:

亲爱的門友们帮忙点点 star 吧,您的 star 是帮 po 获取更多奶茶的途径
个人进度长期更新楼

游戏试玩页面

欢迎門友试玩然后给给 star

2 Likes

一个晚上速成的结果,本来是下个月才结束的,但群里说前 10 提交有京东 500 羊毛卡这我不得不先氵一个了

写了个学习博客,等提交阶段结束了就放出来:drooling_face:

po 之前是 go 苦手,所以第一次上手这个国产语言稍微不适宜

比如不知道为啥不支持的定义全局变量,连实例化的结构体里没被使用过的变量都会爆 warning 这种事情 (不嘻嘻
其他的话语法没有很大区别,基础的就是来回捣乱就是了

这个比赛有兴趣的門友也可以来试试,照目前的情况只要交了就有奖,说不定能去线下开盒

还有一个事 pl 专用赛道,我看一眼就跑路了

1 Like

如果需要先玩的话,下载 teams 里面鱼鱼蒸了下面的的 game.wasm,然后在终端里执行

npx wasm4 run game.wasm

就可以了,操作在 README 里

顺便放一些看到的博客好了

被降维打击了:sob:

不过这个佬是有团队 + 经验 + 老早就开始做的

总之不楽:enraged_face:,狠狠熬夜加工

1 Like

后面当个人更新楼了,等官方修好了预览加上自己的也有可玩性了就把游戏放主楼

:enraged_face:为了奶茶钱!

門友有什么意见也可以提
比如把門友当 boss 的名字什么的

我之前有个同学拿到了大亚湾的实习

好像就是做月兔语言开发的

好强
我的抽象能力完全不够让我去涉及 pl 这个领域,所以只能当赛博土木佬了

要是能进线下了可以有面试机会,到时候再去细问问 (`ε´)

1 Like

前文 @Aicnal 提到的 IDEA 实习生来冒个泡~

看到交大有同学对 MoonBit 有兴趣挺欣慰的,目前游戏赛道人还不多,大家都有机会,已支持 :wink:


顺带一提,其实「 汪汪立功」是我朋友,同时也是 MoonBit Core 核心贡献者之一,很早就开始在社区活跃了。

4 Likes

前文 @CAIMEOX 提到的汪汪队来了,欢迎同学关注 MoonBit 语言和相关的活动!使用语言或者游戏开发有什么需要帮助的地方可以和我说,我很愿意帮忙的!加油同学!

4 Likes

哈哈哈哈哈哈,这是给 MoonBit 的开发团队给炸出来了 :rofl:

1 Like

哈哈哈不是的,@CAIMEOX 是之前在那边实习,现在回来上学了,我是一直在社区活跃,还不是开发团队的

2 Likes

我超:sob::sob::sob:,引到大的了

看到官方发的人物专访实在是仰望

我会带着門友的祝福改进游戏的

4 Likes

#弱质氵

因为是速成的没怎么看文档,昨天突击的时候大半时间卡在了怎么模拟出按键的粘滞感 (不会按住就飞走),打算做 rpg 所以要保证选中选项

昨晚的实现是通过全局计数器 (这时候连刷新率都不知道) 来模拟的,每监测到 10 次就进行移动,很蠢且对单次按键不友好

if @wasm.get_gamepad().button_left && choice.option >= 10 {
    choice.option = @math.maximum(choice.option - 2, 10)
  } else if @wasm.get_gamepad().button_right && choice.option <= 30 {
    choice.option = @math.minimum(choice.option + 2, 30)
  }
  menu(choice.option - choice.option % 10)

今天看了 mbt 的样例文档,才知道刷新率是 60Hz,于是写了个结构体存储全局计时器和上次按键计时器,每 20 帧判断一次是否能执行按键
虽然实现了单点支持但还是没有粘滞,一直按着还是可以移动

:enraged_face:被自己红温的时候去查了 wasm 的官方文档,发现已经给了怎么去判断单次按键了

浪费了 1 个小时

// 最后写出来的
pub fn buttonPress() -> Unit {
  let gamepad : @wasm.GamePad = @wasm.get_gamepad()
  if gamepad.button_left != gameStatus.gamepad.button_left &&
    gamepad.button_left &&
    choice.option > 1 {
    choice.option -= 1
  } else if gamepad.button_right != gameStatus.gamepad.button_right &&
    gamepad.button_right &&
    choice.option < 3 {
    choice.option += 1
  }
  gameStatus.gamepad = gamepad
}

不过看的是 go 的示例,所以能够直接用 x&(x^y)
mbt 存储的是 readonly 加 bool 类型,不能直接按位操作,看着有点复杂

老实去读文档先了

今晚战果

  • 实现了血条
  • 优化了按键选取
  • 知道大概怎么改颜色了

还好另一个小时没被浪费)

不过离真可玩还差不少,明天起来再干活

1 Like

mbt 的轮子应该不需要你做任何位运算,都帮你包装好了,看看 API 可能帮助更大

1 Like

今日没啥进度,因为被拉出去玩了一天

稍微画了一些小图标(防御的盾牌,攻击的剑,十字的治疗)
然后对着佬的 tank demo 理解了下一些函数的作用,顺便学习高级用法

之后就是构思一些敌人的数值和 ai 了,然后加一加次级菜单

大世界暂时没什么想法,可能是宝可梦那种触碰敌人进入战斗
rpg 必要的属性也还没构思好

希望不会遇到群里说的内存爆的问题

門友有什么想法也可以说说:drooling_face:

打算做个监测 ↑↑↓↓←→←→xz 的代码然后弹个交大門回满血

1 Like


果然 po 没有美术天赋
发现做不出碎盾效果了

现在问题是默认字体好大啊:enraged_face:
去重新设计一套 po 是做不到了,想办法精简下英文了

哦官方给样例了,我去抄一套

放弃了,还要找套精灵图,还是精简文字吧


再也不画像素画了:sob:

没用精灵图手写的,结果就花了半个小时了

至少有个样子了,狠狠 Konami

明天应该能有 0.0.2 了

看到管道运算符大脑爆炸了
(つд⊂)
完全没接触过,然后看写法就变得好魔幻了
|>ignore 是个什么意思啊
忽略输出:thinking:
不过我应该用不到

吃个饭再学