论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
软件与程序人生
›
后端开发
›
.Net
›
基于MonoGame重制《俄罗斯方块》游戏
基于MonoGame重制《俄罗斯方块》游戏
曹旭辉
金牌会员
|
2024-8-15 21:04:56
|
显示全部楼层
|
阅读模式
楼主
主题
962
|
帖子
962
|
积分
2886
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
两年前,我利用C#基于MonoGame编写了一款《俄罗斯方块》游戏,相关介绍可以参考【
这篇文章
】。最近,利用业余时间将之前的基于MonoGame的游戏开发框架重构了一下,于是,也就趁此时机将之前的《俄罗斯方块》游戏也重制一次,参加了许多我一直打算参加的功能,甚至包括提供跨平台的版本。
先说说这个游戏开发框架,我给它取名为Mfx(MonoGame Fx,Fx是Framework的缩写,但又不想跟MonoGame Framework重名),仓储地址是:
https://github.com/daxnet/mfx
。这个重构过的框架在团体结构设计上比其前任版本Ovow(
https://github.com/daxnet/ovow
)更为合理,去掉了一些不须要的功能,也参加了一些新的功能。业余时间有限,所以也没打算将它真正开发成一个完整的游戏引擎,就是能够支持我自己写的一些小游戏就可以了,所以,也不打算对它做过多介绍。
回到重制版《俄罗斯方块》游戏,先开源:【
https://github.com/daxnet/tetris-sharp-revised
】,在这个页面的Releases列表里,可以直接点击最新的发布版本,然后选择对应的操作系统的ZIP包举行下载把玩,现在
该游戏编译输出Windows、Linux和MacOS三个版本
(Linux我在Ubuntu 24.04 LTS Desktop下测试可用,MacOS没有试过)。当然,如果不想玩游戏,可以直接看视频:
与旧版本相比,新版文件尺寸更小,打包后尺寸为62MB,相比之前的107MB,减小了45MB,其实新版本自带的背景音乐更加丰富,资源大小也变得更大,但总尺寸是降落了,也是因为.NET从6升级到8后,本身也做了不少的优化。对于这样一个简单的游戏为何会有这么大尺寸?主要有两个方面的原因:各种资源需要占用一部分空间,另外就是在打包编译后的程序时利用了--self-contained开关,也就意味着将整个.NET 8都打包在了一起,玩家不需要安装任何.NET相关的运行库。那反过来想想,如果利用相同的这套技能开发了一个大型游戏,固然资源会占更多的空间,但是即便是几百MB甚至上GB,或许你也不会在意它的尺寸了。
下载并解压之后,双击TetrisSharp.exe(Linux下先chmod +x ./TetrisSharp,然后直接运行)即可开始游戏,点击【
NEW GAME】
菜单就能进入主界面开始游戏,【
CONTINUE
】菜单现在是不可用的,在游戏过程中,按下键盘上的ESC键,即可返回标题界面,此时CONTINUE菜单才可用,点击即可继承游戏。【
LOAD
】菜单也是不可用的,但在游戏的过程中恣意时刻退出游戏,游戏状态会被生存下来,下一次重新运行游戏时,LOAD菜单就会变成可用状态,点击即可载入上次生存的游戏状态。点击【
INPUT SETTINGS
】菜单可以进入按键设置界面:
红色字体提示当前正在设置的按键,此时只需要在键盘或者游戏手柄上按下对应的键,红色选中项就会跳到下一个项目。如果中途有任何按键设置错误,可以点击【
RESET
】按钮,重新开始重新设置按键。设置完毕后,点击【
SAVE
】按钮生存,或者点击【
CANCEL
】按钮取消设置。对于游戏手柄,现在好像并不是所有手柄都支持(我自己利用的是8BitDo M30),建议可以连上试试,切换一动手柄的模式(估计需要XBOX模式),如果不可,照旧先用键盘体验吧。
如上图所示,第一次运行游戏,默认利用键盘作为输入,按键界说如下:
方块下移:S
方块左移:A
方块右移:D
方块旋转:J
方块着落到底:K
暂停游戏:空格键
(隐藏:回到开始界面:ESC)
跟老版本相比,新版本在界面上举行了优化(如下上图为老版本,下图为新版本):
主要改进地方有:
棋盘变得更大:由原来的12x24改为了15x28
方块材质举行了调整
方块着落时会在棋盘上留下投影,方便定位
为方块快速着落新增独立按键,按下后直接将方块着落到最底端
界面配色和字体做了调整
显示已经利用过的方块数量
统计最高分,当分数突破最高分后会更新最高分
此外,在游戏操控方面也做了一些优化,按键控制更加灵活。由于修正了旧版本中的背景音乐加载问题,新版内存占用率大幅降落,为原来的50%左右,从400多MB降为了200多MB。总而言之,新版本更接近一个完整的游戏。
与老版本相同,新版也提供了自界说方块的功能,只不外新版利用了更为简洁的文本文件,而非之前的XML文件。在游戏目录下,找到blocks.txt文件,双击打开即可编辑。文件格式如下:
<ul>#开头行为注释行
每个方块的界说都是以block ""指令开头,end block指令竣事,中间包含1到多行方块变体(也就是旋转形态Rotation)的界说
每个方块变体占用一行,比如L形方块,它有四个旋转形态:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
曹旭辉
金牌会员
这个人很懒什么都没写!
楼主热帖
网络安全应急响应 - 03 - 日志分析与内 ...
Redis - 介绍与使用场景
Nmap抓包分析与绕过Windows防火墙 ...
Mysql 的Innodb引擎和Myisam数据结构和 ...
一招教你如何高效批量导入与更新数据 ...
【docker系列】docker API管理接口增加 ...
聊聊Spring事务控制策略以及@Transacti ...
用代码收集每天热点内容信息,并发送到 ...
微服务架构演进
Maven配置私有仓库
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
容器及微服务
云原生
分布式数据库
Postrge-SQL技术社区
运维.售后
数据仓库与分析
开源技术
快速回复
返回顶部
返回列表