近中期3D编程研究目标
近几年一直在用业余时间研究3D编程,研究的中期目标是建立一个实用的开源3D编程框架。3D编程技术最直接的应用是开发游戏,所以3D编程框架也就是3D游戏开发框架。在我看来,游戏是否好玩的关键是能否为玩家提供足够的“丰富度”,一个好的游戏应该是一个随着玩家的行为不断揭示新内容的世界。
然而相对于早期的经典游戏,当代游戏在丰富度上的表现总是不能让玩家完全满意。以策略类游戏英雄无敌为例,在最为经典的3代作品中玩家可以在12个各具特色的种族间自由选择,在尚算佳作的4代中玩家可以选择8个种族,5代6个种族,6代、7代则更少(选择额外种族需要购买DLC)。以此为代表,当代的策略类游戏大多只有3-4个势力可供免费选择,玩家们感到游戏的画面越来越精致,但游戏的内容却越来越少。
事实上,画面的进步正是游戏丰富度下降的重要原因,更好的画面要求更多的单位细节,而更多的单位细节意味着更多的开发时间和经费,在总成本不变的情况下,商业游戏开发者只能通过减少单位种类来平衡成本。讽刺的是由于硬件设备和玩家接受能力的限制,牺牲游戏丰富性所换来的单位细节往往不能被完全发挥。
厂商们也在尝试各种变通的方式增加游戏的丰富度,比如使用随机生成的地图和具有自主能力的AI为玩家提供新鲜感;比如为玩家提供基础建筑元素,由玩家按照自己的意愿建造场景;比如将游戏的重心放在玩家的联机互动上,用人类的不确定性弥补游戏丰富性的不足。
某种程度上,这些替代方案取得了成功,为厂商节约了大笔的设计经费。但是这种由计算机随机产生或由玩家不确定性产生的丰富度并不能作为游戏本身的内涵,缺少“核心丰富度”的游戏难以在创作者和玩家之间产生连接,并生成牢固的游戏文化。
商业化游戏的另一个问题是过度的重复开发,由于人择原理的作用,每个游戏公司的小世界都需要包含最基础的“魔化野狼”、“强盗头领”之类大众单位,这些小世界的相互隔离导致每个开发团队都必须重复前人已经进行过的开发,这一点大大增加了独立游戏开发的难度。同时并存的多个小世界也会给玩家造成认知上的矛盾,比如玩过魔兽世界的玩家会疑惑“暗夜精灵”究竟应该住在森林里还是住在地底世界,又比如玩王者荣耀的玩家会很困惑荆轲到底是男是女。
在我看来,相比于分裂的商业化开发,开源精神能够为创造具有足够丰富性的游戏世界提供一种根本的解决方案。可以建立一个保存各种游戏单位的图片、模型、声音、动画、文本、数值信息的开源单位数据库。对各种大量重复的单位提供一个基于投票的最优解决方案,对具有分歧的单位则保存不同的副本设计,开发者可以选取其中的一部分数据作为自己的单位数据库支持自己的游戏开发。
建立这样的数据库一方面可以降低中小型开发团队和独立开发者的开发成本,另一方面可以借助开源的力量构建出单一厂商所无力承担的超大型游戏世界(比如仙侠小说中数量惊人的材料、法宝设定)。
要建立一个这样的开源数据库需要两方面的准备,一是要编制一系列零基础的Web*数据库教程,让更多非专业编程者参与进来;另一方面则要全面的了解主流的游戏开发模式,设计出足够实用的数据结构。
如无意外,六个月到一年的时间可以完成这两方面的准备,愿世界和平,留给我足够的时间。
近中期3D编程研究目标的更多相关文章
- UWP简单示例(二):快速开始你的3D编程
准备 IDE:Visual Studio 2015 了解并学习:SharpDx官方GitHub 推荐Demo:SharpDX_D3D12HelloWorld 第一节 世界 世界坐标系是一个特殊的坐标系 ...
- UWP简单示例(二):快速开始你的3D编程
准备 IDE:Visual Studio 开源库:GitHub.SharpDx 入门示例:SharpDX_D3D12HelloWorld 为什么选择 SharpDx? SharpDx 库与 UWP 兼 ...
- 开始3D编程前需注意的十件事
http://www.csdn.net/article/2013-06-21/2815949-3d-programming 原文作者Vasily Tserekh是名3D编程爱好者,他发表了一篇博文&l ...
- QT Graphics-View 3D编程例子- 3D Model Viewer
学习在Graphics-View框架中使用opengl进行3D编程,在网上找了一个不错的例子“3D Model Viewer”,很值得学习. 可以在http://www.oyonale.com/acc ...
- Qt 3D的研究(十):描边渲染(轮廓渲染)以及Silhouette Shader
Qt 3D的研究(十):描边渲染(轮廓渲染)以及Silhouette Shader 之前写了两篇文章,介绍了我在边缘检測上面的研究.实际上.使用GPU对渲染图像进行边缘检測.前提是须要进行两遍渲染.前 ...
- WPF 3D编程介绍
原文:WPF 3D编程介绍 上一篇文章简单的介绍了WPF编程的相关的内容,也推荐了本书.今天要来讲一下在WPF如何开展3D编程. 使用的xmal 和C#开发的时候:需要使用如下的关键要素: 1:摄像机 ...
- 3D编程模式:依赖隔离模式
大家好~本文提出了"依赖隔离"模式 系列文章详见: 3D编程模式:开篇 本文相关代码在这里: 相关代码 目录 编辑器需要替换引擎 设计意图 定义 应用 扩展 最佳实践 更多资料推荐 ...
- Autofac的AOP面向切面编程研究
*:first-child { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom: 0 !impor ...
- USB编程研究之二(常见设备类型的GUID)
在USB编程之前要事先了解一下GUID的概念. 应用其他网页中的定义: 全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装.在许多流行软件应用程序(例如 Web 浏览器和媒体 ...
随机推荐
- PHP面试系列 之框架(二)---- 常见框架的特性
题:PHP框架有哪些,你用过哪些?各自的优缺点是什么? 考点: (1)PHP框架的差异和优缺点 1.Yaf框架 使用PHP扩展的形式写的一个PHP框架,也就是以C语言为底层编写的,性能上要比PHP代码 ...
- windows系统安装erlang
1.什么是erlang erlang是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境.Erlang是一个结构 ...
- 知乎TensorFlow入门学习记录
知乎地址:https://zhuanlan.zhihu.com/p/30487008 import tensorflow as tf a=tf.placeholder(tf.int16) # 接受的数 ...
- Python 自动化paramiko操作linux使用shell命令,以及文件上传下载linux与windows之间的实现
# coding=utf8 import paramiko """ /* python -m pip install paramiko python version 3. ...
- 【星云测试】开发者测试(3)-采用精准测试工具对springcloud微服务应用进行穿透测试
1.微服务简介 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务.这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接 ...
- Web | JavaScript的引用数据类型强制转换类型
我在这里主要的想提下的是JavaScript中的引用类型进行强制转换类型.因为对于基本数据类型的变换大多都是雷同的,很容易熟知,但是引用数据类型有一点小插曲. JavaScript的引用类型主要为对象 ...
- Python 基础 高阶函数
python 把函数作为参数 如果传入abs 作为参数 def add(x,y,y): return f(x) + f(y) add(-5,9,abs) 根据函数的定义,函数执行的代码实际上是. ab ...
- 用Google Cloud Plateform使用ansible创建新实例
谷歌大法好,退aws保平安 ---假设自己现在有一个电脑(本机),先用谷歌云创一个服务器(主机) ,再通过ansible在谷歌云上创建一个服务器(节点)并进行控制 先把自己的公钥加到元数据里面,在go ...
- Windows搭建SFTP服务器
1.项目需要搭建一个SFTP服务器,网上搜了一下,用的是freeSSHd软件,网上查一下我用的是1.3.1版本https://freesshd.updatestar.com/网址自己下载即可. 2.安 ...
- 执行mongod其他实例出现的问题
windows环境下,配置其他mongo实例,会出现一些问题 1.配置路径不对,执行bat文件时出现闪屏 根据提示创建C:\data\db\ 目录(因为mongodb默认在/data/db下创建数据库 ...