GameDesign 板


LINE

身为在业界的老鸟,我也很赞同,不必设限该用则用,不该用则不用。但如果是刚入行的程式,我会建议多去试不用singleton的写法,知道有不同的做法後,再来选择用singleton,跟不思考就用,能获得的成长是不一样的。 ※ 引述《cjcat2266 (CJ Cat)》之铭言: : ※ 引述《littleshan (我正在想要换什麽)》之铭言: : : 先感谢分享,但这边提出一些不同的看法。 : : Singleton 本身并不会降低耦合,实际上它造成很强烈的耦合。 : 感谢分享,我也想要提出一些意见提供参考 : 刚踏入业界的时候,我也是非常小心地遵从教科书上的教诲 : 大部分 "缺点多" 或者 "不建议使用" 的系统设计方式一概不碰 : 与老鸟们合作一段时间之後,反而有不太一样的见解 : 我们家的共识是,全域变数用起来心里会有疙瘩,没错 : 但是当其方便性够值得的时候,还是就安心用下去吧 : 当然,前提是得保有纪律,不落入教科书提及的众多圈套中 : 我们在乎的方便性不单只是程式写起来简不简洁 : 是否在debugger里面的watch window能方便检视也很重要 : 过去我有几次提出不同重构singleton的方法 : 同事们往往都一语中的: "Good luck getting that in the watch window." : 上篇推文有提到,不用singleton那manager类型的物件怎麽管理? : 放在MainGame物件里面? 那单一MainGame物件到头来也是个singleton呀 : 追朔游戏的最上层,总是会有某种形式的singleton存在 : 所以说要死都不用singleton又显得有点绑手绑脚 : 如果硬是要只有MainGame这个类别才准许有singleton : 其实对watch window稍微不太友善 : 首先要在watch window里面输入g_mainGame : 然後要嘛要手动展开g_mainGame找到想要检视的manager : 要嘛得多存个g_mainGame.m_myManager在watch window : 当MainGame规模变大、如此手续重复次数变多,watch window使用效率就下降了 : 又如果为了抽象性,还把众多manager藏到的更神秘的地方 : 那在一个随便的break point要去挖资料还得更费工夫 : 我们的做法是,manager类型的直接用全域变数没关系 : 像是InputManager, NpcManager, ObjectManager : 我们都直接用赤裸裸的全域变数g_inputMgr, g_npcMgr, g_objManager : 好处是不管游戏停在哪个break point : 我要看NPC的清单,然後检视特定NPC的资料 : 只要在watch window输入g_npcMgr就好,不用从别的出发点爬过去 : + g_npcMgr : |--+ m_aNpc[kMaxNpcs] : |--+ m_aNpc[0] : | m_name "my NPC" : | m_health 90 : |--+ m_aNpc[1] : ... : 当遇到全域变数相关的问题时 : 我们的做法是见招拆招,目前没有遇到什麽瓶颈 : 该重构时就重构吧,过度担心反而开发起来绑手绑脚的 : 一个游戏的开发方向与路程永远是未知领域 : 系统架构没有最佳解,想要做出 "最正确" 与 "最完美" 的架构,反而是另外一个陷阱 : 能够实作出目标游戏机制的架构,就是个可行的架构 : 老话一句: : "Make games, not game engines." : (除非你是在开发Unity或Unreal XD) : 以上是我对singleton的一点看法 : P.S. 这不代我认为全域变数可以随便用 : 该有的纪律还是要有 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.140.15.194
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/GameDesign/M.1505219101.A.C76.html
1F:→ coolrobin: 说实话,其实你可以推文... 09/12 21:10
2F:→ dreamnook: 同意1F xD 09/12 22:44
3F:→ Schottky: 这字数大概要推到第四行了,我认为回文并无不妥 09/12 23:27
4F:推 chchwy: 赞成回文 之前GameDesign版推文成章的风气太严重了 09/13 18:47
5F:推 cjcat2266: 这样说来好像也对喔 09/14 00:37
6F:→ grezod: 够精辟的观念回文很好啊 推文反而容易被忽略 10/05 02:52







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP