原文地址:https://mellinoe.wordpress.com/2017/01/18/net-core-game-engine/
作者:ERIC MELLINO
翻译:杨晓东(Savorboard)

译者序

通过翻译这篇文章,我感受到了 .NET Core 真正的魅力,它真的是无所不能,相信在以后,.NET Core 一定会大放异彩,而.NET的 开源也会吸引越来越来的开发者参与其中。

同时,就像作者所说,这赋予给了 .NET Core 另外一种道路和生命,感谢这个路上的先行者。

正文

很多人对于 .NET Core 都很关心,但是通常我们都在谈论关于控制台应用程序和服务器端应用程序。在这篇博客中,我们将探讨 .NET Core 的另外一个用途,并展示我如何从头构建一个3D平台的游戏引擎,编辑器和游戏。作为一个 .NET 团队中的开发,我已经和社区做了很多的讨论并且已经看到了关于这方面的内容。我希望通过这篇博客能够阐述 .NET Core的功能,并且激励更多的人来做这方面的探索。

在第一篇博客中,我将介绍我的游戏(Creazy Core),一个类似街机的3D 平台的游戏,在这个游戏里,你通过控制一个球来穿越各种障碍物。这也许看起来很宽泛,稍后的博客中中,我将对关于游戏的引擎,编辑器和更多技术细节来做更加详细的介绍,如他们能够融合并工作起来。

免责声明:这只是一个从头开始构建的单人开发的游戏。很明显,这个游戏没有任何商业用途,我不能保证在观看原始的作品时候不会受到伤害。

Creazy Core

https://github.com/mellinoe/CrazyCore

Windows.zip

OSX.zip

Ubuntu-1604.zip

这是一个独立的程序,你只需要下载对应平台的 ZIP 文件包,然后运行 Creazy Core 可执行程序。如果你在 Ubuntu 上运行,则有一些先决条件。

译者注:使用 dotnet CreazyCore.dll 运行程序。 macOS 可以直接运行。

这个游戏的机制就是利用力学来控制一个小球,在一个3D 的世界里运行,游戏世界起初很简单,后来逐渐会有更加复杂的力学会引入进来,游戏环境和障碍物也越来越复杂,由于你的进步,游戏会变得越来越难,直到最后会有一些“疯狂的”力学机制加入。

为什么使用 .NET Core ?

首先,这是一个使用 .NET Core 的另外一种伟大的方式。它打破了 .NET Core 原有的路线来探寻一个新的场景。虽然我可能会有点偏见,但是我认为使用 .NET Core 来做游戏是有很多优势的:

  • 开源。您可以查看,修改和优化整个栈的任何部分。
  • 优秀,针对多平台设计的优化的运行时。这意味着当在不同平台上发布时,不必担心兼容性。
  • 它是.NET。 您可以使用任何.NET语言和所有伟大的可以用的工具以及调试经验。
  • 面向未来。.NET Core正在快速发展,并且每天都在合并进来性能优化的代码。另一方面,CoreRT项目将是用于构建游戏的一个非常有趣的技术。虽然还没有准备好迎接黄金时段,但是提供大量优化的,预编译的二进制文件的能力将对游戏非常有用。

游戏引擎架构

同其他游戏引擎一样,这里也是由大量不同的组件构成的,这使得实时3D 游戏引擎成为可能。我希望我在后续的博客中能够更多的探讨关于这方面更加详细的内容。但是为了给出游戏引擎中涉及到的一些功能和概念,这里我强调一些重要的事情。

  • 引擎是基于组件的,它具有与 Unity 非常相似的编程模型。
  • 同时支持 Direct3D11(Windows)和 OpenGL (所有平台) 的图形。图形是针对无关平台的上层api抽象层,它叫做“Veldrid”。
  • 同时支持 XAudio2(Windows)和 OpenAL(所有平台)的音频。有另外一个(更轻量)抽象层,它允许 API为引擎中的3D位置音频提供支撑。
  • 由 OpenTK 库提供窗口化和输入的处理。
  • 使用很棒的 BEPUphysics 库来处理实时的 3D 物理特效。
  • 自定义的序列化系统和资源管理器,用于存储各种资源,包括:
    • 二进制资源(模型,纹理,音频)等。
    • 实体和组件状态。
    • 场景构成以及链接器。
    • 元数据信息,比如玩家的进度以及最高分数等。
    • 项目设置。

为了构建不同级别的游戏,我编写了一个单独的编辑器 程序,它重用了引擎的各个组件。编辑器是一个独立的3D 程序,你可以查看和修改游戏资源,组合游戏实体,构建完整的场景,以及管理项目中的配置选项。

以下视频链接到 YouTube ,请***观看。

就想一个典型的编辑器一样,游戏本身可以在应用程序内测试,并且各种游戏状态可以实时调整。编辑器还具有项目发布,调试,代码热插拔等功能。

以下视频链接到 YouTube ,请***观看。

上面的视频显示了一些很酷的事情,你可以在编辑器中调整东西。

编辑器其中一个最有用的功能是,它可以在多个平台运行,因为它也是使用的 .NET Core 开发。这使得他可以非常容易的进行一些修改和测试并且方便的应用到游戏中去。

开源库

下面是我这个项目中使用到的库,以及这些库是做什么的。所有对.NET 游戏相关感兴趣的都可以看看这些库,他们非常酷!

  • SharpDX -封装Direct3D11和XAudio2。这些技术仅限于Windows,并且在引擎中默认使用。SharpDX已经支持PCL配置文件,因此它可以在.NET Core上原封不变地使用。
  • OpenTK -封装OpenGL和OpenAL的(对于上面的替代),以及窗口化和输入。这个库相当大,相当老; 编译为.NET Core它还需要再做一些工作。
  • ImageSharp -跨平台的加载图像的库。这是用来加载游戏中使用的所有纹理。James 对这个项目做了非常伟大的一些工作。
  • BEPUphysics -实时3D物理特效。这是一个非常酷并且精心设计的库。它最近搬到了GitHub,v2.0计划了一些非常有趣的功能。
  • dear imgui -Immediate模式的UI,使用图形用户界面的编辑器,并为 Creazy Core 提供了菜单。我使用 C# 移植的一个 C++ 库(ImGui.NET)。
  • SharpFont - TrueType字体加载及渲染。这用于引擎中的一些2D文本组件呈现。
  • Newtonsoft.Json -我想大家都知道这个库。我使用它来序列化我引擎中的所有自定义数据类型,包括实体,组件及场景数据。

谢谢阅读!我希望这篇文章已经阐明了.NET Core 在今天可以做的一些事情。在下一篇文章中,我将详细介绍如何在引擎中处理3D渲染。它是引擎中最复杂的部分,但也是开发中最有趣的一部分。敬请关注!


本文地址:http://www.cnblogs.com/savorboard/p/net-core-game-engine.html
本译文仅用于学习和交流目的。非商业转载请注明译者、出处,并保留文章在译言的完整链接。

转载于:https://www.cnblogs.com/savorboard/p/net-core-game-engine.html

棒!使用.NET Core构建3D游戏引擎相关推荐

  1. 3D游戏引擎入门课程——场景管理

    目录 写在前面 场景管理 场景管理概述与BVH 场景组织结构:场景树,八叉树和BSP树 场景树 八叉树 BSP树 场景管理实例 OGRE场景管理 OSG场景管理 Panda3D场景管理 写在前面 本专 ...

  2. html5 3d游戏引擎演示,HTML5、JavaScript 3D游戏引擎和框架

    由于很多人都在用JavaScript.HTML5和WebGL技术创建基于浏览器的3D游戏,所有JavaScript 3D游戏引擎是一个人们主题.基于浏览器的游戏最棒的地方是平台独立,它们能在iOS.A ...

  3. 3D游戏引擎剖析【较全面】

    转自:http://blog.csdn.net/is01sjjj/article/details/430125 第1部分: 游戏引擎介绍, 渲染和构造3D世界 介绍 自Doom游戏时代以来我们已经走了 ...

  4. html5 3d游戏引擎演示,Top 10:HTML5、JavaScript 3D游戏引擎和框架

    由于很多人都在用JavaScript.HTML5和WebGL技术创建基于浏览器的3D游戏,所有JavaScript 3D游戏引擎是一个人们主题.基于浏览器的游戏最棒的地方是平台独立,它们能在iOS.A ...

  5. 转:3D游戏引擎技术剖析

     转自 http://blog.csdn.net/jbjwpzyl3611421/article/details/12681047 3D游戏引擎技术剖析 分类: Unity3D2013-10-13 1 ...

  6. 从《Doom》到《Dunia》 回顾3D游戏引擎发展历程二

    Quake III / id Tech 3 就像AMD与Intel,Nvidia与ATI,10年前,游戏引擎的战争主要集中在Quake III(现在被称为id Tech 3)与Unreal之间. 顾名 ...

  7. 3D游戏引擎原理简介

    作者:Luke Hodorowicz 翻译:乐晨光 (2001/9/28) 本人对3D也不甚了解,译文动机一则是内容所致兴致昂然,二则锻炼英译中技能.由本人水平及经验有限,文中绝对不乏大量误解与误译, ...

  8. html5 游戏引擎 2017,Top 10:HTML5、JavaScript 3D游戏引擎和框架

    由于很多人都在用JavaScript.HTML5和WebGL技术创建基于浏览器的3D游戏,所有JavaScript 3D游戏引擎是一个人们主题.基于浏览器的游戏最棒的地方是平台独立,它们能在iOS.A ...

  9. 【直播预告】7月18日3D游戏引擎免费公开课答疑,參与送C币!

    喜讯喜讯! 为了酬谢广大学员.CSDN学院特推出iOS和3D游戏引擎开发免费技术答疑公开课,让您度过一个充实的暑假~ 參与本次公开课,即有机会获得50C币! 答疑公开课时间:7月18日 晚7:30-9 ...

最新文章

  1. 设置参数cocos2d-x 2.x 进度条CCProgressTimer
  2. 项目中用到的Linux命令
  3. html5-常用的通用元素
  4. 前端学习(763):变量属性函数方法的区别
  5. JavaScript中带有示例的Math.max()方法
  6. 苹果CEO库克薪酬达员工1500倍;曝英特尔将开放x86内核授权;TensorFlow技术主管皮特・沃登离职|极客头条
  7. Python-Matplotlib可视化(10)——一文详解3D统计图的绘制
  8. 阶段3 2.Spring_03.Spring的 IOC 和 DI_9 spring的依赖注入
  9. C语言日志库zlog的简单配置及使用
  10. AdaBoost 人脸检测介绍(5) : AdaBoost算法的误差界限
  11. Spark数据分析及处理
  12. OpenCV + CPP 系列(九)颜色空间
  13. [压位DP]Hdu 6149——Valley Numer II
  14. 在springboot中使用jsp,设置webapp目录时的操作步骤
  15. 红米2a android5,红米手机/小米手机2S/2A三机对比图赏
  16. 使用 NumPy 来模拟随机游走(Random Walk)
  17. 计算机网络行业规范的主要内容,计算机网络专业论文
  18. 华远地产:在稳健中穿越周期 | 一点财经
  19. 笨办法学python在线阅读_笨办法学python全集.pdf
  20. 大创 电动自行车充电桩

热门文章

  1. 控制上网!!!(版本之1.1) 当前时间从网络取得。
  2. 【SQL】通过rowid查找及删除重复记录
  3. 【Oracle】DG三种保护模式及切换方式
  4. 20-21-2网络管理quiz4
  5. ora-12505报错解决方法(转)
  6. VS2010调试窗口一闪而过解决方法
  7. 安装Sql server 2008遇到无法安装.net 3.5的问题解决办法
  8. postgresql查看死锁及解决方法
  9. 如果REST应用程序应该是无状态的,那么如何管理会话?
  10. Win11如何设置滚动条 Win11滚动条设置教程