游戏程序设计大赛一等奖:《太吾绘卷》

  • m
    mendel
    https://www.zhihu.com/question/294824127/answer/499202943

    茄子:这个是和我个人经历有一点关系。我跟一位教土木工程的教授关系非常好,他是我的老师,传授的不止是专业,还有斗蛐蛐的事情。他有一间房子,专门用来养蛐蛐,把这个兴趣传染给我之后,我去打理那些蛐蛐儿的时候就会特别留心,也跟着教授去认、去捉、去玩,读《促织经》,以及历史上各种关于蛐蛐的文本。古人是很会找乐趣的。蛐蛐可能不适合现代都市里的人,但是它是古代很多人的一种娱乐方式。就像在游戏里我们把琴棋书画、木工石匠的技能单列出来,同时也想集中说一说蛐蛐的有意思的事情。如果有人懂得这方面的知识,他就会知道,我们对于历史资料的考证和运用,不光是在武学,古代人的生活技巧什么的,这些东西都是非常考究的,不是一个拍脑门觉得“这个好,我们加在里面吧”这样的东西。
  • 厨具战士
    只要vim学得好,再多if几秒写出来。
  • 秋开
    做到一半跑路的程序员怕不是要后悔死。
  • w
    whzfjk
    数据都排在表里,还想怎样。规则不人力凹还能从天上掉下来?
  • n
    normalli
    逆练c语言还行
  • f
    fuochai
    我喷不出来了,只能说这人真的强啊
  • 秋开
    真的有爱,这还是在程序员跑路的情况下,自己硬着头皮搞出来的。985建筑专业考研都不用考数学,我记得他们大一只学高数上就完事了,作者美术的设计功底绝对一流,但编程应该是他原本最不擅长的方面。

    就这样还能搞出来,没啥好喷的。
  • f
    fuochai
    我说的喷也不是恶意的喷啦,就是那种因为好笑而“喷了”的喷
  • 偶像程序员POI
    我有点期待这作者几年后的第二部作品了
  • 1
    12th博士
    那这游戏怎么开创意工坊,除了改图基本上啥也干不了啊
  • L
    Lunamos
    这里面80%都是段子,用过Unity的应该都知道。
  • 秋开
    理解,大家也都是尊敬为爱好做实事的人。
  • m
    museqsou
    当然是重构。
    unity本身就对mod不友善,现有的mod就是用unity mod manager直接hook函数。只要函数不改名移动命名空间,那么版本更新hook还是能生效。
  • t
    tatara
    这里面的段子有点多,尤其是几个QQ截图的,制作人确实是很莽很绿皮但也没夸张到这种地步
  • m
    museqsou
    群众只管段子效果。不过侧面说明了C#作为快速开发语言的易学性和unity这个引擎的易用性
  • L
    Lunamos
    其实这种UI-based游戏用Unity做还是挺难受的。看一眼这游戏的界面,就感觉用Web的开发工具做应该比较简便,之后用Electron之类包装成桌面程序。
  • s
    sjbssd
    呜哇,难得看到书记赶晚集
  • g
    goreen
    {:1465_1691:}我觉得就算把段子摘出去···作者这个IF不带注释的循环也相当绿皮科技了····
  • m
    museqsou
    但是我个人觉得,作者之前有过RM的经验,用面向过程的思路去做unity可能会更简单点。用web思路做没有OOP思想写js估摸更乱。
  • k
    kal_008
    以前上大学教授也讲到过有些人用大量if语句来处理的神人
    可是上万的if根本就不是一个次元了,这脑子里面是要怎么过啊
  • m
    museqsou
    其实if循环判断在游戏里是很正常。拿简单的例子来说,回合制战斗本身就是个大循环函数,这个循环结束条件是触发特殊胜利条件或者一方全灭。写这个函数,好看优雅点的或许会用到委托模式,或者把子函数析出提高代码的可读性。但是你把整个代码一坨全写在这个函数里还是能实现的。
  • q
    quadrozeke
    It just works.
  • g
    greendayu
    说不定上万的if语句是用meta程序/脚本生成的
  • 神勇无敌饶铁牛
    waggggh
  • L
    Lamic
    里面很多都是段子,拆包是脱壳后反编译吧,反编译后怎么可能还带注释。Unity的脚本是承载在Gameobjecrt上的,main封装到框架里面,所有逻辑都在写在main函数里面是不可能的。没有抽象,没有继承这个有可能,一般新手程序都不会注意这些

    —— 来自 HUAWEI NXT-TL00, Android 7.0上的S1Next-鹅版v2.0.3
  • m
    marine_01
    在S1你是看不到游戏程序员发言的,因为都在屏幕后对着帖子冷笑。。。
  • 中已矣
    想起来你坛不是有个自学成才怀才不遇的大师么,不知道做出了点什么
  • 无爱二次元
    发外野吧
  • L
    Lunamos
    你说的是这位吗?
    https://www.saraba1st.com/2b/for ... ead&tid=1562659

    一年没来过了,有点想念。
  • 洗刷刷
    知乎怎么编故事越来越厉害了...源码是不讲究,也没你编的那么玄乎啊
  • r
    rayaxu
    那个帖子里被说成那样,也难怪不来了。。。

    —— 来自 samsung SM-G9500, Android 8.0.0上的S1Next-鹅版v2.0.3
  • L
    Lunamos
    他以前也经常被这样说,早就有抵抗力了吧。结果从那次起再也没出现。
    希望只是戒了S1吧。
  • t
    tgzeror
    神了
  • 汪达
    那位老哥我记得不是放出过一个SRPG游戏引擎么,如今即便是开源引擎也有相当丰富且成熟的选择了,市场哪需要那么多引擎,更何况又是非常小众的SRPG,只能说前景太惨烈。
  • w
    w酱
    说实话unity的ugui还是可以的,ui动画和交互搞起来也很容易,锚点布局文字排版界面深度都好搞,重要的是足够轻量,除了单线程资源加载是坑,很多时候会因为加载和gc造成界面响应爆卡,不过预加载也能解决掉,ui也不用研究数据驱动各种binding,prefab抽象化一下就可以自己按心情架构了,unity这种类似ECS架构的ui本来也和web路子不一样。后面各种角色和ui的animation混起来,又堆出一堆状态机的时候,我不认为web ui框架这时候会合适

    webui就没那么轻量了,electron搞不好打个包比unity还吃资源,js的各种框架也像魔法一样,写游戏是挺噩梦的,并没有c#或者lua好用。


    顺便说一些unity搞起来的大坑, text 解析极慢而且gc爆表,csv数据过大而且滥用还不如全预制到scriptableobject, prefab没有预载实时生成导致掉帧,在主线程存盘导致freeze, 协程贼坑难以管理,gameobject tick时写的逻辑太多,估计开发者都有遇到吧

    那个大数据表的话,大概这么搞能好点, 数据写excel里,编译时候全序列化到scriptableobj,数据类型预定义在里面, 肯定能快很多,但是估计二进制文件没法做mod,unity的文件结构太不友好了
    —— 来自 OnePlus ONEPLUS A5010, Android 9上的S1Next-鹅版v2.0.3
  • L
    Lunamos
    Unity用得少,但也被它坑过几回。Web只是看起来比较好写吧,随口一提,坑肯定也不少。
    个人来说我如果要从头写这么个游戏,肯定是直接opengl开始撸,全部原生C++就完了。界面直接改改imgui就够。这种没有3D、光照、物理,也不需要设计关卡的东西,用Unity有太多无用组件和流程,显得笨重了。想方便点可能WPF都可以。不过WPF效率可能不够,也不方便跨平台。
  • w
    w酱
    只用ugui就可以了,unity 2d模式下那些没用的组件一辈子都用不到吧,一般的物理也就用来射线查一下当前坐标用。。。无用组件又不引入场景,更没有操作流程
    我以前搞过那种pure ugui的游戏,自己重写了image和rawimage做2d组件和uv animation,所有资源全放在unity外面,就引入一个ui类库和自定义的资源包读写库,再加一个tween动画库,还是很轻量的,光照动画物理组件全抛弃,比wpf效果好,除了ui布局是基于editor的yaml场景编辑起来实在太恶心

    —— 来自 OnePlus ONEPLUS A5010, Android 9上的S1Next-鹅版v2.0.3
  • l
    liuyuan23
    我们以前公司网游,UI直接MFC生拖出来的,当时新来的程序看到后直接沉默...
    后来会了QT,感觉也很万能啊,撸个编辑器不在话下
    imgui mygui这种开源的确实也是很方便,个人认为用来给自己的项目搞个轻量级可视化编辑器还行,不过这UI库本身不自带编辑器,虽然开源,但编辑UI还是蛋疼..
    想到了天国的cocostudio,当时cocos里唯一能用的gui框架还是够用的了...至少相比其他几个模块而言
  • 失身招领处
    资本都上门了,还不得造造势,吹捧一番吗?
    这般夸大个人的努力和天赋不是好苗头啊

    —— 来自 Xiaomi MI 8, Android 8.1.0上的S1Next-鹅版v2.0.3
  • 中已矣
    都是半路出家,气运还是有区别啊
  • m
    museqsou
    unity用的少,但是按照c#的经验,数据表不是应该用excel做然后excel to json吗。json序列反序列也方便,mod改起来也方便,union也方便。
  • w
    w酱
    看excel有多复杂吧,不复杂的我也肯定选择json就是了,比csv和xml快,没毛病

    几万行带结构体和字典还要在运行时实时parse的时候json性能并不好吧,初次加载可能就要几秒,所以我觉得还是拆分了当做资源好,写一套scripableobj基类,继承啥的规划好,excel读出来直接按分类序列化成assets,最后打包进bundle,这东西巨快而且能序列化各种内部类型,能序列化引用类型,能在editor的playmode自己实时改,能写编辑器脚本做可视化。除了不好做mod,也不能在playmode下序列化到文件,不过unity本身就不好做mod,大不了再挂一层lua来hot fix逻辑





    —— 来自 OnePlus ONEPLUS A5010, Android 9上的S1Next-鹅版v2.0.3
  • d
    deviljz
    用lua-cjson,速度飞快
  • d
    deviljz
    顶楼这好多段子编的属于反编译的反字都不知道怎么写的水平,程序员看了尴尬的要死
  • M
    Mr_raindrop
    有点兴趣,哪儿可以看到源码啊?