码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • GAMES104-如何构建游戏世界


    游戏都有啥?
    可交互的动态游戏物体(Dynamic Game Object)
    静态物体(Static Game Object)
    环境,地形系统(Sky+Vegetation+Terrain)
    其他物体(Air Wall+Trigger Area+Ruler+Navigation mesh)

    核心:GameObject(GO)
    里面的数据有两种
    a.Property,对应字段
    b.Behavior,对应方法

    简单的办法,直接用普通的class,然后继承这个class
    但是往往没有这么清晰的父子继承关系,有大部分重叠的逻辑

    现代引擎:组件化(Component Base)
    比如FPS游戏,枪里面的各个配件就是这个思想

    class GameObjectBase
    {
    	List<ComponentBase> components;
    	virtual void Tick();
    }
    
    class ComponentBase
    {
    	virtual void Tick();
    }
    
    //... 各种功能组件继承 ComponentBase
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    如何让游戏运行起来?
    Tick 各个 Component
    管线式 Tick ,各个系统整体 Tick,不是每个 GameObject 单独 Tick
    优点:
    1.无需等待,每个系统专心负责自己的职责,批处理
    2.充分利用CPU(相同的数据尽可能放在一起)


    如何让游戏物体可以交互?
    各个 GO 需要彼此之间通信
    1.硬编码(Hard code)
    2.事件(Events),解耦合,自己只需发送,无需关心接受不了

    难点:
    物体之间的绑定
    比如人开车,人需要跟车一起动
    需要有不同 GO 的 Tick 顺序处理,父节点优先
    同理 Events 也需要有顺序处理,绝对不能混乱!!如果用户输入一致,逻辑一定不能乱
    需要通过第三方传递消息,第三方来控制组件的依赖关系


    如何管理各个GO?
    都有 unique ID,作为唯一标识
    也都有 position
    通过场景管理进行空间管理
    a.暴力算法,只适合小游戏
    b.网格法,简单,不适合分布不均匀的游戏
    c.四叉树,管理空间
    d.高级的办法,BVH、BSP、Octree、SceneGraph

    需要根据不同的游戏类型,做不同的处理


  • 相关阅读:
    【达摩院OpenVI】视频目标渐进式Transformer跟踪器ProContEXT
    如何建立扫描光源
    后台管理不可忽视,华为云会议最新支持管理员分权分域
    常用技能点:Java中数组复制的三种方式
    【MATLAB源码-第45期】基于matlab的16APSK调制解调仿真,使用卷积编码软判决。
    week9|查阅文章 Mac os M2芯片 arm64架构|安装paddlepaddle问题
    深入POD
    (Research)泛癌单细胞分析揭示肿瘤微环境中癌相关成纤维细胞的异质性和可塑性
    Vue---8种组件传值方式总结,总有一款适合你
    一行代码可以做什么?
  • 原文地址:https://blog.csdn.net/qq_33064771/article/details/128195482
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号