MoonBit 游戏开发赛道

谈笑风生 1234 views 71 replies
#6 ·

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

😡为了奶茶钱!

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

#7 ·

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

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

ぜーんぶ弾けなーい!

#8 ·
Soyo34325 Soyo34325

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

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

🥰️❤️
2
#9 ·

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

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


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

🥰️❤️
5
#10 ·

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

❤️
4
#11 ·

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

ぜーんぶ弾けなーい!

❤️
1
#12 ·
Soyo34325 Soyo34325

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

wave_gif❤️
3
#13 ·

我超😭😭😭,引到大的了

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

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

wave_gif❤️
5
#14 ·

#弱质氵

因为是速成的没怎么看文档,昨天突击的时候大半时间卡在了怎么模拟出按键的粘滞感 (不会按住就飞走),打算做 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 帧判断一次是否能执行按键
虽然实现了单点支持但还是没有粘滞,一直按着还是可以移动

😡被自己红温的时候去查了 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 类型,不能直接按位操作,看着有点复杂

老实去读文档先了

#15 ·

桀桀|video

今晚战果

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

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

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

❤️
1
#16 ·
Srotseiticar Srotseiticar

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

❤️
1
#17 ·

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

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

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

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

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

門友有什么想法也可以说说🤤

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

❤️
1
#18 ·

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

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

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

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

#19 ·
Srotseiticar Srotseiticar

men|video
再也不画像素画了😭

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

至少有个样子了,狠狠 Konami

明天应该能有 0.0.2 了

#20 ·

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

吃个饭再学

#21 ·

上课寂寞无聊 🔞
一个人偷偷敲代码 🔞
激情月兔 🔞

桀桀|video

其实就加了个欢迎界面,优化了下战斗界面
都是参考的上面那个
在想首页怎么画一个城堡,但光是复刻一把剑进去就累坏 po 了

( ;`д´; )
还好没有投入 gamejail,不然自己会完全栽在美术上了

等晚上回去把 icon 移动到正确的位置就可以 0.0.2 了

❤️
1
#22 ·

po 小睡一会起来画像素画了

image

花了个 mini 版的才发现得放大

心死了

参考的是这个,貌似是免费使用的,要是不让用我再小修改吧

你为什么不是四色你为什么不是四色你为什么不是四色😡

#23 ·

image

羊咩冲锋枪
門友觉得哪个可爱点

❤️
1
#24 ·

今晚进度

激烈的 ppt 平移动画

test|video

还是有不少 bug,比如判断出伤是用的等于平移结束后的那一帧,所以会有概率丢伤

然后对面动的时候还是可以按按键

明天再修了,今天只敲了半小时,速度越来越快力 (`ヮ´ )σ`∀´) ゚

后面肯定要设计不同的攻击,不过咩咩就咩咩冲击好了

#25 ·

花了一个小时解决 map 的问题

🫠Option 是个什么鬼类型啊
我只是想单纯的取一下 map["xxx"] 的值
但是官方给的文档又没说,最后还是去 lib 的 readme 才知道怎么取值的

hmm 是为了实现可选参数,但让 map 多此一举还是好怪 ()

慢慢适应了,可能是我还没到能熟练使用吧

❤️
1
#26 ·

写上头了
0.0.2 咧,交个 pr 去

xxxdd|video

还有一些小 bug 等着修,底层大概就这样了
先睡了
因为设置了暴击差点被一头创死,所以给高了基础血量,之后平衡会改的

比如预期敌人的下一步行动会显示在血条左侧 (剑和治疗的作用
然后还有一些反击手短,都是 ai 的时候考虑了

❤️
1
#27 ·

好像只有大佬的 tank 有很多 star,其他的都没多少 star
主要是就我一个没做完就求 star 吧

发动社团之力😈

wave_gif❤️
3
#28 ·
Srotseiticar Srotseiticar

哈哈哈第二个,好傻好可爱,就喜欢这种傻乎乎的

#29 ·
Srotseiticar Srotseiticar

啊?Tank 很多吗,我这边看才三个,btw 我不是做 Tank 的(

#30 ·
Srotseiticar Srotseiticar

这是 modern 编程语言里面很正常的一个东西,Rust 就是全套在 Option 里面的,因为你 get 取到的值不一定是安全的,你给的 index 很可能定位不到值,这时候就会出现 Runtime Error,Option 等于给出了一个到底有没有取到值的包装。

👍️❤️
4
#32 ·
Lamepse Lampese

原来这样 (oT-T) 尸
写完再好好学习 pl

#34 ·
Srotseiticar Srotseiticar

image

为嘛我的浏览器上面会出现这种情况,之前玩坦克大战也是一样

image

ぜーんぶ弾けなーい!

#35 ·
Srotseiticar Srotseiticar

哈哈哈哈,在 Safari 上面玩上了!

感觉挺有意思的,已经 Star 了

ぜーんぶ弾けなーい!

#36 ·

现在是惯例的 po 深夜 codeing 时间

要🎃了,所以今天的目标就是画一个🎃怪,顺便加一下主角形象

至于怎么等比例放大,还在想)

你为什么不是四色你为什么不是四色

❤️
2
#37 ·
Srotseiticar Srotseiticar

image

....你还是就留个头吧
忘了身体也要颜色了

image
然后对比起来是真的小啊,还是得等比例一下

#38 ·

image
不仅没放大还不可名状了..

今晚应该就是搭轮子了

#39 ·

image
也没大多少,放弃了

咩咩就要小小的

#40 ·

去玩了会游戏

然后花 10 分钟解决了自己的弱质问题

image
总之 ok 了

#41 ·
Srotseiticar Srotseiticar

image

超级巨大咩咩毁灭世界

image

超级巨大南瓜 (存疑) 毁灭世界

#42 ·
Lamepse Lampese
Lampese:

我这边看才三个

就是说的佬团队做的沙漠之魂 ()

Lampese:

btw 我不是做 Tank 的

记岔了,这几天就在学着那个样例 tank 写有点晕晕

#43 ·

🤔越来越屎山了,不可避的问题
项目里变量乱飞,还没复用结构体

现在的问题是 mbt 里支持类似 go 的 func 当 map 值吗
像下面这种

var book map[string]func()

func test() {
	fmt.Println(
		"test")
}
func tst() {
	fmt.Println(
		"test")
}

func main() {
	book = make(map[string]func())
	book["ss"] = test
	book["sss"] = tst
	book["ss"]()
}

主要每个敌人的 ai 都是独立的,动画也是,不能用一个::概括全了

❤️
1
#44 ·
Srotseiticar Srotseiticar

放弃了,单文件写单文件的

po 已经单文件里同时出现了 draw_bits 和 checkOutmap 两种命名法了