视频连接:游戏开发入门系列(一):游戏开发概述
这是看了视频以及一个博主的笔记,自己总结的笔记留存使用。


视频梗概(提炼了一些有用的问题)

  • 课程的目标是什么?
    • 开始游戏开发之路
  • 游戏是如何开发的,开发流程是什么?
  • 开发游戏需要掌握哪些技术?
  • 我们应该如何学习这些技术?
  • 要如何学习这一系列的课程?
    • 保持对游戏的浓厚兴趣和激情。
    • 主动自学所有细节。
    • 通过课程了解专业技能概况,掌握学习方法。
    • 通过实战磨练和验证学习的成果。
  • 学完这一系列课程应该得到什么?
    • 一个粗略的游戏开发知识体系。
    • 对游戏开发方法,开发流程有了初步的了解。
    • 知道自己离真正的游戏开发者的差距,并且知道如何去提高。
    • 一堆练习,一堆demo和一个自己开发的小游戏
  • 什么需要你自己去巩固学习?
    • 语言的基础
    • 引擎的使用或者IDE的使用
    • 学校里、书本上、课堂上讲的都需要自己巩固
  • 课程中的练习有什么?
    • 课堂练习
    • 课后练习
    • MiniGame

游戏的技术发展(一些经典作品)

  • 原始阶段:pong
  • 红白机:魂斗罗
  • PS、Xbox
  • PC单击游戏:仙剑奇侠传
  • 局域网对战游戏:魔兽1,dota,红警,cs
  • 大型多人游戏:传奇
  • 页游:QQ农场
  • 手游:Angry Bird
  • VR,AR

游戏发展对技术的要求

  • 原始的游戏:编程能力和对游戏的认识
  • 游戏逐渐复杂,需求变多:程序设计能力、脚本编程技术、引擎技术(封装底层)
  • 大型3D游戏:图形图像编程、物理计算技术、动画技术、特效技术、场景及场景管理技术
  • 网络游戏:网络通信技术(例如:TCP和UDP,不丢包技术如何实现)、下载升级技术、同步技术(多人游戏时候如何做到一致)

游戏是如何开发的,游戏开发流程

职业分工

  • 原始阶段,游戏都是一个或者两个人开发的,既做美术,又做程序,同时自己设计游戏。
  • 随着游戏越来越复杂,团队越来越庞大,分工越来越精细,并且各自领域专业性研究更加深入:
    • 策划:主要工作是编写游戏背景故事,制作游戏规则,设计游戏交互环节,计算游戏公式,以及整个游戏世界的一切细节等:剧情、关卡、玩法、数值、系统(商城、好友列表)…
    • 美术:游戏中一些看得见的实物的表现力:模型、特效、动画、场景、UI…
    • 程序:根据策划设定的规则,驱动美术的表现资源,将游戏实实在在实现在电子设备上的人:实现需求、提供团队工具、修复程序中存在的问题、优化基础体验(例如:加载怪物很多的时候,怎么加载;为了避免卡顿,采用什么技术)…
      注:游戏程序员是先是游戏人再是程序员

开发流程

  • 讨论确定游戏基本内容、类型等,进行游戏立项。
  • 游戏程序员构建最基本的游戏框架(单机或网游、平台)(有些非常简单的游戏demo也可以跳过编程,直接使用游戏引擎)
  • 策划对游戏细节进行设计与构建(剧情、玩法、关卡、数值、系统等)
  • 程序、美术、策划三方不断的相互沟通完善游戏内容并不断的测试调优(好的游戏都是改出来的),这里策划还将为程序员留出来的接口做各种配置(由于项目需求变化过于频繁)
  • 游戏内容基本完成后,需要质检人员开始测试,程序员修复Bug
  • 游戏经过一定测试后,发布。同时交由运维人员做基本的维护,发布前期一定有Bug,还需要团队相互配合

简单总结

  • 需求产生
  • 设计选型
  • 程序实现、美术制作、策划配置
  • 循环调优

游戏开发需要哪些技术

  • 作为一个程序员需要的基本素质:包括掌握基本语言编程,深入了解语言特性,了解计算机相关基础,设计模式。
  • 构建一个游戏,需要了解不同平台的相关技术(特别是不同操作系统)。
  • 需要有一定的引擎知识,尽可能熟悉引擎各个功能的使用。
  • 常见的基本技术(lua等)。
  • 随着3D游戏的发展,需要对图形图像知识有一定深度的理解(特别是数学)。
  • 网络游戏需要掌握基本网络基础知识(TCP/IP,Socket,Http),了解同步机制。
  • 动画技术,基本的物理引擎,基本的场景管理技术。
  • AI技术。

游戏程序员负责的内容是什么

  • 实现策划需要(大部分是逻辑需求)
  • 提供内部工具,加快开发。比如当前引擎不支持某种NPC对象的高亮显示,无法拖拽资源到游戏里面等功能,需要程序员提供,提高开发效率。
  • 修复Bug。
  • 优化体验,也就是常说的性能优化,提高帧数,减小内存开销等。

目前规模较大的公司,程序员也分为多种(一般分为逻辑程序员和引擎程序员),完成的内容也有一定差别。
逻辑程序:一般属于频繁与策划沟通,直接对项目进行开发的。
引擎程序:一般是研究引擎功能,优化引擎(提升表现,提高性能等)。


游戏程序员是怎么炼成的

  • 夯实基础(非常重要)
    • 编程基础C/C++,C#,数据结构,算法。
    • 操作系统
    • 网络编程原理
    • 图形学原理
    • 程序设计基础(灵活性、耦合性、稳定性…)
  • 实践!多动手,从小目标到大目标(非常重要)
    • 选择一个游戏引擎,想办法把每个技术运用到实际小的demo中来尝试和理解。
    • 不一次性提出无法完成的大目标、量力而行、逐步完成。
    • 想办法进入业界,在正式项目中吸取经验。
  • 理解原理而不是停留在使用(新手和真正的开发者非常大的差别就在于此)
    • 保持好奇心,了解技术背后的原理(例如:unity3d中update顺序控制问题)
    • 掌握技术的优缺点,而不仅仅知道如何使用(例如:
      • 在技术选型的时候,为什么要选这个技术,而不是另一个;
      • 两个数据结构在什么时候使用更好,为什么?比如List和Vector;
      • 场景进行组织的时候为什么用八叉树,而不是用四叉树)
  • 多总结,多思考
    • 将自己遇到过的问题总结,方面遇到后再次查阅
    • 试着理解自己做的每一个工作对游戏的影响
10-04 13:27