美文网首页
《消亡的海》游戏开发日志 01

《消亡的海》游戏开发日志 01

作者: 杰克有茶 | 来源:发表于2019-11-29 19:58 被阅读0次

    写在前面

    我是一名初学的游戏开发者,写日志有三理由:

    1、分享过程,希望能帮到其他开发者

    2、暴露问题,让大佬指出我的问题所在

    3、希望受到监督

    游戏简要构思

    《消亡的海》(暂命名)是一款RPG游戏,我心目中对游戏的各项元素排名:剧情 > 战斗(核心玩法) > 商业 > 技术架构,因此我会以一个自己原创短篇小说作为剧情支撑。游戏整体玩法大致是传统日式RPG,但战斗模式不想做成回合制。所以我会先做出一个无战斗的游戏,再在后期加入战斗(因此战斗发生的模式会像轩辕剑、八方旅人那样的遭遇式)。

    技术架构

    开发平台选择Unity,核心语言就是C#了。

    由于游戏本身不大,所以用单场景+多单例模式,组件构造大致如下:

    主要的单例有:

    ①ControlManager.cs,玩家的操作行为写在这里;

    ②UIManager.cs,控制切换场景(由于我是单场景,这里切换场景指的是切换Panel)UI组件变换、生成预置体等;

    ③GameCore.cs,不继承Mono,游戏所有数据都在这个单例中;

    ④PrefabCollection.cs,以及其他的Collection单例,收集Unity的绑定组件,方便找到调用的地方。

    为了后期便于管理,我把类分为两大类:

    1、Unity类,我称为UI类,即继承Mono的类,例如PrefabCollection.cs、AnimationManager、HUDWindowCollection.cs(场景组件),统一由UIManager.cs进行管理;

    2、原生类,我称为数据类,即不继续Mono的类,例如Dialog.cs、City.cs,统一由GameCore.cs(GameCore也是原生类)进行管理。

    实现UI类和数据类分离(MVC模式吧),统一由ControlManager.cs来控制GameCore和UIManager。

    实例化

    我打算不考虑玩家内存大小,因为游戏本身不大,所以在每次实例化类时,都会先Copy一份实例,这样做起来比较方便玩家进行不同存档。例如:

    对话类(class Dialog) 将所有实例化的对象加入List,从而在GameCore直接调用 深复制对象

    关于深复制(之前踩过的坑)

    如下图,我原本以为nums1.a应该是5,但实际上它变成了8,因为nums2和nums1指向的是同一个内存地址。所以如果要复制一个独立的新对象,一定要深复制。

    尾:先写这些吧,最近要先写小说,写小说也是开发的一部分。

    相关文章

      网友评论

          本文标题:《消亡的海》游戏开发日志 01

          本文链接:https://www.haomeiwen.com/subject/bhogwctx.html