找回密码
 立即注册
楼主: 六月清晨搅

[笔记] 如何评价《太吾绘卷》的程序代码?

[复制链接]
发表于 2021-3-18 06:36 | 显示全部楼层
云码农何其多。
发表于 2021-3-18 06:39 | 显示全部楼层
以下图片多为段子梗图,仅供娱乐请以其他答主专业回答为准。
----------------------------------------------------------------------------


文案,不愧是中文系的




(实际只有一万多啦)






























完美的诠释了绿皮编程,作者是逆练C语的奇才


以及关于游戏里为什么这么多蛐蛐的内容。。。
蛐蛐:谢谢茄子


虽然以上有很多是段子,但程序员跑路,主创半路出家是真的。
好消息是重构已经在计划中了,但是预计未来一段时间还是靠作者爆肝更新吧。




游戏bug修复与更新一览




和别的答主结合一下差不多就是实际情况了


微博上有人找到了作者采访








作者表示蛐蛐是不会删的,这辈子不可能删的,以后还要让玩家转世成蛐蛐,让我们敬请期待吧


蛐蛐神赐福
祭天喽




你们记得这个教在哪吗

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-3-18 06:40 | 显示全部楼层
这些在网上叫嚣着“代码差”,“水平不行”的,我有三个问题想问一下:
1.你用过Unity吗?
2.你知道Unity的编译是怎么实现的吗?
3.你有一点起码的对商业引擎的常识吗?
我们来看一下Unity官方文档对其编译系统的解释:
IL2CPP & Mono - Unity首先,Unity使用的C#本身就不完全是C#,其内部配件使用的UnityEngine.Object早已脱离了C#的托管范畴,Unity的底层都是由C++实现,甚至新出的2018中又多了Burst编译器,跟别提Dll,Lua这些奇奇怪怪的东西,可以说是一个大杂烩开发环境。在编译过程中,开发者可以选择发布到Mono虚拟机,也可以选择发布到IL2CPP代码,具体细节我不知道,不过我们可以假设他是IL2CPP代码,在代码最终变成Native C++的时候,中间已经过了数层自动重构和优化了。
注释?注释打包进游戏?大神大神,告辞告辞
只有一个main?还是顶上说的,都是机器编译的码,肯定会有很多深层的改动,优化,你随便找个别的游戏来解包然后公布出来看看?你解个腾讯网易的游戏也行,解个国外Unity PC游戏也行,然后发出来,先不说代码是不是都一个样,反手索赔个几亿人民币了解一下?三年以上了解一下?
谣言止于智者,最可怕的是,这种消息在一些Unity开发大群里还传的很开,还有好多人相信??我真的对目前国内的游戏开发行业的发展很是担忧。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-3-18 06:44 | 显示全部楼层
看到这个问题马上去拆了一下包
先unity游戏的主逻辑基本是在Assembly-CSharp.dll这个文件中的,所以只需要分析这个文件即可。
令我意外的是,太吾绘卷将这个文件进行了加密,所以并不能直接获取源码。但其实所用的方法还是对mono进行了一定的修改,而且修改的地方也是比较常见的一个地方。所以直接逆向分析一波拿到了解密的秘钥和使用的算法之后,就可以使用很常见的一些反汇编进行查看了。
实际上并没有网上所传的那么糟糕,以创建游戏的代码为例:






虽然有些地方确实有一堆if,但起码不是所谓的只有一个main函数吧,虽然我个人写代码也写的不好:P
当然反编译器展示出来的逻辑也并不是原始的逻辑,所以到底真的是不是一堆if,也确实说不清楚。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-3-18 06:45 | 显示全部楼层
太吾绘卷通过对代码打广告的方式,成功给游戏打了广告
发表于 2021-3-18 06:49 | 显示全部楼层
仿佛看到了当年的自己,就靠一个帮助手册在文曲星上写游戏的时候,也是这样的嘛。
而且重要的是,后面学多了,各种规范效率去耦合设计思想,反而做不出游戏了…
时代变了,一个人撸不动了…
作者相当厉害的,代码丑不重要,出产品才是牛逼。这都是爱啊!
发表于 2021-3-18 06:57 | 显示全部楼层
给你们讲个故事吧。


从前有个乡下的小男孩,特别喜欢抓蛐蛐。但他和别的小孩不一样,心地善良的他抓到蛐蛐也不玩弄,好吃好喝(自认为)招待后就放掉。时间长了,家乡附近的蛐蛐都认识了他。


“你知道茄子么?”


“我知道我知道!我超喜欢的他的。我想被他抓去然后xxxxx再xxxxxxx最后哔哔哔哔!啊!想想就刺激!”


“对啊,对啊。我也好想!”


小男孩一天天长大,他发现世界上的人并不像他一直那么喜欢蛐蛐,他决定做点什么改变大家的想法。唯一想到的办法就是做游戏。


做游戏的道路并不是那么顺利,有各种各样的困难,他想尽办法解决,但是还是没想到。有一天他的程序员跑了,跑的时候还留下一段话。


“我TM是来做游戏的!不是来给蛐蛐打广告的!”


没有办法的男孩只能一点点学编程,一点点开始自己写。
人有人的神,蛐蛐自然也有他们的神。蛐蛐的神得知了这个消息,就找到了人的神。


“让他成功吧,我愿熄灭我的神火,推到我的神位,赠予你我的神力。”


“你失去了这些,只能当一个普普通通的人。”


“那就当他老婆好了!”
发表于 2021-3-18 07:02 | 显示全部楼层
问题:代码中是否有几十万个if。几十万个if是否是playmaker生成的。
结论:由于加密加上30号重构了代码,可能无法考证了。使用工具将playmaker转换成了c#代码,确实会生成if,swtich语句,但是是否和反编译后相同这个不确定。
过程:
给个特写
总状态机
Emmm。这个就不赘述了。
那么我就想看看。是不是使用了playmaker之后,就会生成几十万个if/else呢?
首先打开我的项目,这个项目是用playmaker做的逻辑。
导出,生成一个PC项目。
下载Reflector,试用14天
打开项目Manager下面的Assembly-CShape.dll
画风是这样的
选择{} – 这部分是我自己写的代码
和原代码对比一下,基本相同(反正我也没注释XD)
但是花了半个小时,并没有找到Playmaker生成的代码,也没有找到很多if/else的地方
那么我就在怀疑解包的真实性,于是找了两个人不同的解包过程,发现这部分函数名基本相同。俗话说得好,一千个程序员有一千个函数名,所以这肯定是同一个游戏的包没跑啦。
人工搜索的方法是不行了,于是将解包之后的源代码导出。
打开我心爱的VS Code
花式搜索状态关键值,未果。
这可怎么办呢。难道这次考证就要失败了?
这时候,又是万能的全球最大程序员同性交友网站救了我
这样生成出来的代码,应该和反编译的代码半斤八两了。
果然。
可以看到,每一个状态都对应了一个if,swtich。如果状态多一点的话,if也会越多。
但是几十万个if/else的情况可能也有,假如说这个游戏的角色有几百个的话,每个角色有几千个状态,很多状态类似就可以直接粘贴复制,最后就。好吧我编不下去了
那么这个地方由于个人水平有限就无法继续了,由于30号更新的游戏,重构了代码,可能这个考证永远也无法完成了23333

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-3-18 07:02 | 显示全部楼层
1.没有Main
用Unity做游戏基本都继承MonoBehaviour,当然没有了!
2.没有注释
这个,反编译还能有注释吗?求大神带我飞!
3.变量全是字符串,if/else居多
说明程序员水平有限,而且很有可能大量运用了类似playmaker这样的插件来做的,所以反编译过来就是这个样子
4.动画大
2d游戏你不优化那动画肯定大啊,还用说?
流程运行?
在PC上Unity要是播放个300MB的“GIF动画”都搞不定,这游戏引擎也别做了!


5.太多无力吐槽了,游戏据说是好游戏,但是炒作也别太过火了!
发表于 2021-3-18 07:11 | 显示全部楼层
问题已举报,用反编译手段破解商业项目代码并公开本身就涉嫌侵犯知识产权,情节严重有可能涉及犯罪。一群人还自以为聪明煞有介事地讨论为啥这么多if的问题,真是快要笑掉大牙了......


拜托你们先去好好学习一下法律知识好么?不要踩线了都不知道,有本事去反编译一下Windows内核然后放上来,看看最后会有什么结果。


为啥这么多人阅读理解都不及格......这件事情违法的点在于:


公公公公公公公

开开开开开开开

代代代代代代代

码码码码码码码



自己在家里搞反向工程本身不违法,但是公开破解过程在网上散播还觉得自己很牛逼,这些人的法制意识得多淡薄,平时生活得过得多憋屈才会这么想要别人关注啊~


要是以后每次出了个稍微好一点的国产游戏都这么搞一轮,那简直就是在给国内本来就糟糕的独立游戏环境雪上加霜。我相当支持开发组采取法律行动,此风不可长。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-20 03:44 , Processed in 0.090802 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表