MoonBit 游戏开发赛道

谈笑风生 1262 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 两种命名法了

#45 ·

po 的企业微信被 gank 了都不能去听会议了

老实等其他反馈了

#46 ·
Srotseiticar Srotseiticar

image

勇者

看着变成霓虹武士了...

#47 ·

QQ20241031-32414|video

今晚把大世界加上了,碰撞箱还没优化好 xd

5 天前的 po 会想到自己能做出这样的东西吗 (当然还有好多东西没加就是了)

地球 online 真好玩啊

交 pr 去

❤️
1
#48 ·

po 发现写 hitbox 的时候犯蠢了..不是 xy 轴重合,y 轴重合就进战斗了 ()

不过还有的改,慢慢来了

作为前期小怪来说血也有点多了,慢慢优化了

什么 gamejail 策划

❤️
1
#49 ·

被降维打击 2.0 了

好强的美术😭😭😭

果然一个人是干不过一个团队的

不过可以学习一下血条的绘制,这个入场方式我也打算做的

希望下周结束前能完善吧

#50 ·

在想要不要做成可获取技能的

本来好困的但突然就有了神秘动力
不要再卷了😡,po 的奶茶钱啊

借助 AI 之力了

#51 ·

最后反而纠结怎么卷美术忘记初心了😣

主要不知道怎么画血槽,也搜不到 health bar 之类的东西

还是优化下逻辑吧

#52 ·

IDEA:
既然叫 108 个魔王了,boss 关就设计成可以复活 + 伤害继承好了

然后让初始的 0 级 0 加成角色正好重复 108 次就打败魔王了

不觉得很酷吗

❤️
1
#53 ·

内耗 ing

在想基本都是随便体验下的情况下有必要拉长流程吗
不然随便加点怪就可以当成品了

#55 ·

优化好难

❤️
1
#56 ·

QQ2024116-3222|video

加了个类似战斗入场动画的东西 (?

总之是个占位符

然后优化了下代码结构啥的,现在至少不是一个函数飞来飞去了 XD

果然应该先学好 rust 再来搞的

动力还是得开始写了才有

magic_wand_grin❤️
3
#57 ·

image
对着 ai 抄了个城堡,然后画了快 2h
最后发现效果还不咋样,完全卷不来美术啊

总之先接着写了

今天 po 被自己一个神秘 bug 蠢到了,因为 match 进去后不会第一时间出来,所以傻掉了

🤩️❤️
3
#58 ·

QQ2024117-202254|video

总之是这个效果 (

想卷进前 5 有点难,得抓紧周末了

火箭发射

❤️
1
#59 ·

布什哥们
小比赛也能阴兵过境的啊😨

昨天改了下底层逻辑结果今天都在 segment fault 了
不懂,po 不及时提交 git 导致的

❤️
1
#60 ·

QQ2024118-15163|video

大概就酱紫了,之后就是新建文件夹就好了

不想卷美术啊乌乌

❤️
1
#61 ·
Srotseiticar Srotseiticar

感觉没有其他的小游戏那么快速,其他的都容易理解就是了

不知道评比的时候自己能不能把深度挖出来,感觉上限挺高的

像素艺术!

❤️
1
#62 ·

我超忘记看存储了
只有 64kb,我现在已经用 49 了😭

还有一堆没写完,音效也没做
寄寄寄

#64 ·
Srotseiticar Srotseiticar

体验感受
好难 ()

#65 ·

好多 ddl 战士
今天看到 8 个 pr,哈人

应该来得及改完吧

#66 ·

不知道門会撑到什么时候,总之在最后一天前还是来点更新吧

这几天被现实杂事打压了,所以没太多动静,然后因为存储问题 (一个城堡绘制占了快 10kb) 改了不少东西,估计要放弃设计更多敌人的实现了,毕竟还要加音效

总之加了下背景用的树,然后加了个碰撞体积 (?之类的
pl 赛道那边好像出大问题,希望不会影响我的奶茶钱

所以門友给给 star 不要日后断了念想(雾)

QQ20241111-18498|video

#67 ·
Srotseiticar Srotseiticar

今晚加一下动画帧,每次执行完操作都是 0 帧起手有点怪

防御还没想好怎么加动画,先摆一会

大地图的话打算做成类似杀戮尖塔那种 (?,就是每条线可以引出不同的线之类的,放一些问号当宝箱

升级技能还没想好,不过也没有太多的空间让我搓动画了

boss 就用之前的南瓜仁算了

#68 ·

美术都好卷

放弃了放弃了放弃了放弃了放弃了放弃了

#69 ·

QQ20241113-1448|video

最后 36 个小时还是不放弃一下吧

因为压根卷不过美术,po 只好挖一挖玩法了

然后直接抄了下 undertale,感觉蛮适合我的界面设计的

我怎么没早想到呢.jpg

总之先抄了一般的骨刺障碍,受限于 mbt 不完善的随机数实在不想动脑了

然后自己写了下伪随机,开头刷新可以看出每次都会出现不同的状态 (关注 1 行和 2 行的敌人)

至于骨炮和躲避黑块什么的,感觉挺好写但要花上一段时间吧,音游那种真写不来 (也没存储了)

希望玩法能占不少分,看现在排行榜上新上的几个美术爆炸的我都不知道在玩啥)

❤️
2
#70 ·

肉鸽性大概就体现在路线设计上吧,抄了下尖塔那种可以直接连到另一条线上的,每关之间的连接都是通过随机实现的

之后每次战斗内的特殊关卡也加个随机性,已经离一开始的 rpg 远去了~

然后选择完节点后就会封路加该列全部删掉

大概,不过路线实在太短了也不好塞太多东西额啊啊

太可恶了邪恶兔子

#71 ·

这个首页和商店美术爆炸,但进去之后不知道我在干什么,也没目标,最后 boss 也只能打掉一个就没了,进去之后界面好乱

这个应该是要做成那种互动解密?但看半天 README 也不知道引导在哪里...美术也挺好看的

这个完全卡死在某个页面了,不懂,而且 README 看的文字玉玉症了

这个虽然是复刻游戏,美术挺好看的

剩下两个大佬的 tankel 和沙漠之魂都是太难了自己没打到后面去(什么时候能让我看看试玩)

其他的就是复刻经典小游戏,而且美术都和我差不多

总之就是很酸😡,我的美术在哪里让它上前来
好好去深度玩法了

#72 ·

把 pr 提了,明天再加小玩法

自己的上限大概就这样力

tankle 发演示视频了,果然还是好难

❤️
1
#73 ·

QQ20241113-181635|video

随机关卡和随机难度都实现了,这下可以叫肉鸽了🤤

❤️
2
#74 ·
Srotseiticar Srotseiticar

我觉得我抄挺还原了.jpg

#76 ·

😵‍💫什么神仙一天速成写的代码也好看

我写的什么屎山

点进去看先是独立开发者又是神秘真人头像的

原来是给 core pr 过的 dalao
豁然开朗 (雾

#77 ·

2e55826af3c1f1420de8b53f414c1702

结果出来了,自己遗憾离场列

要是再早一个月做的话说不定会好点,不过满算下来 1 周能这样已经很心满意足了

这几个的可玩性和完成度都比自己高上不少,也没啥好酸的

(色噪真的可玩吗)

总之 po 和大家下个主题见

wave_gif❤️
6