XNA是早期DX SDK支持的C#游戏开发环境,虽然现游戏开发大多是以Unity3D,Unreal 4为主,但是许多独立游戏开发者,特别是2D游戏,依然使用XNA进行开发,

纠其原因,猜测是C#开源且有了跨平台实现。

这可以从许多独立游戏的Switch移植版看出端倪,使用XNA开发游戏依然有一定的优势。

首先是在VS2017中编写XNA,配置见这篇文章。

http://flatredball.com/visual-studio-2017-xna-setup/

简单总结

1.安装XNA 4.0的运行时,SDK等,再安装VS2017的工具链XNA Game Studio 4.0.vsix

2.复制XNA 4.0的模板

C:\Program Files (x86)\MSBuild\Microsoft\XNA Game Studio

到VS2017目录中
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\XNA Game Studio

3.

注册全局缓冲

cd C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin
gacutil /i Microsoft.Build.Framework.dll
gacutil /i Microsoft.Build.dll
gacutil /i System.Collections.Immutable.dll
gacutil /i Microsoft.Build.Utilities.Core.dll

  

这样就可以在VS2017中使用XNA 4的工程模板了。

不过有个小问题,就是不能像VS2010一样生成字体文件了,创建不了,没有字体选项,不知道是哪的问题,

不过因为中文字体一般会使用bmfont渲染,对我来说暂时没影响,网上搜了一圈似乎没找到Freetype的C#实现,自己移植太花时间精力,估计所有人都一样所以才没什么人搞吧。

========================================

接下来是FNA,FNA是一个与XNA使用几乎完全相同的XNA 4跨平台实现,因为命名空间和实现相同,所以你可以在不修改XNA工程的情况下,直接切换成FNA使用。

Mono Game似乎也是这样,但是暂时还没用过。

FNA我在Win7下简单测试,一切正常。

写本文时FNA最新版本为19.02

安装与依赖见这个wiki

https://github.com/FNA-XNA/FNA/wiki/1:-Download-and-Update-FNA

简单来说,下载源码

https://github.com/FNA-XNA/FNA/releases

编译出FNA.dll

下载预编译依赖库

http://fna.flibitijibibo.com/archive/fnalibs.tar.bz2

在你的新工程里引用一下DLL,重新编译就能运行了。

值得一提的是,FNA是开源的XNA实现,可以参考源码实现,果然未来属于开源,对着源码调式就是舒服。

XNA、FNA以及在VS2017中编写XNA的更多相关文章

  1. 在VS2017中编写Python程序

    最近开始了python的学习,在搭建完python环境之后,在选择IDE的时候陷入了困境,首先选择的是PyCharm但是用着还是不习惯,毕竟用VS开发了几年了,突然换软件总感觉有点不适应,就想到了强大 ...

  2. 踩坑事件:windows操作系统下的eclipse中编写SparkSQL不能从本地读取或者保存parquet文件

    这个大坑... .... 如题,在Windows的eclipse中编写SparkSQL代码时,编写如下代码时,一运行就抛出一堆空指针异常: // 首先还是创建SparkConf SparkConf c ...

  3. 如何在windows中编写R程序包(转载)

    网上有不少R包的编译过程介绍,挑选了一篇比较详细的,做了稍许修改后转载至此,与大家分享 如何在windows中编写R程序包 created by helixcn modified by binaryf ...

  4. html中编写js的方式

    第一种:引用外部的js文件 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http ...

  5. 在ubuntu linux 中编写一个自己的python脚本

    在ubuntu linux 中编写一个自己的简单的bash脚本. 实现功能:终端中输入简单的命令(以pmpy为例(play music python),为了区别之前说的bash脚本添加了py后缀),来 ...

  6. 在ubuntu linux 中编写一个自己的bash脚本

    在ubuntu linux 中编写一个自己的简单的bash脚本. 实现功能:终端中输入简单的命令(以pm为例(play music)),来实现音乐的播放.注:本人ununut中安装了audacious ...

  7. robot framework笔记(一):环境配置(基于python3)+在pycharm中编写及运行robot脚本

    (一)使用pip安装robotframework框架和seleniumlibrary库 pip install --upgrade robotframework pip install --upgra ...

  8. 如何在Ruby中编写微服务?

    [编者按]本文作者为 Pierpaolo Frasa,文章通过详细的案例,介绍了在Ruby中编写微服务时所需注意的方方面面.系国内 ITOM 管理平台 OneAPM 编译呈现. 最近,大家都认为应当采 ...

  9. Laravel 项目中编写第一个 Vue 组件

    和 CSS 框架一样,Laravel 不强制你使用什么 JavaScript 客户端框架,但是开箱对 Vue.js 提供了良好的支持,如果你更熟悉 React 的话,也可以将默认的脚手架代码替换成 R ...

随机推荐

  1. xshell下mysql数据库只导出表结构不导出数据

    操作系统:linux: 使用软件:xshell.winscp 进入系统之后输入命令: mysqldump -u 用户名 - p 密码 -d 数据库名 > aaa.sql 注意字符间的空格. 之后 ...

  2. APK签名说明

    在 Android 系统下, 一些公司会将自己做的APK进行管控,授权签名后方可使用. APK所属的软件公司会提供签名包,例如: 第一步:是要检查所操作的 PC 机是否安装 JDK,如果没有安装,请安 ...

  3. VS2017编译SNMP++步骤记录

    1.下载地址:https://www.agentpp.com/download.html 三个都下 2.新建解决方案 TestSnmp 3.下载后解压到解决方案文件夹(注意,解压后的 snmp++的版 ...

  4. editplus注册码

    EditPlus5.0注册码 注册名 Vovan 注册码 3AG46-JJ48E-CEACC-8E6EW-ECUAW EditPlus3.x注册码 EditPlus注册码生成器链接 http://ww ...

  5. Python设计模式 - UML - 定时图(Timing Diagram)

    简介 定时图也是一种交互图,用来描述对象或实体随时间变化的状态或值,及其相应的时间或期限约束.定时图应用较广,并不局限于软件工程领域. 定时图侧重与时间线相关的值或状态的改变,这些改变可能来自于收到消 ...

  6. oracle 按表数据新增一行

    在功能实现时,能尽量用一个sql语句直接实现业务逻辑的话,就不要去写C#代码,便于维护. 以下sql的逻辑是:给明细表新增一条数据,前提是传入的债券代码存在与债券表,否则不新增.此sql返回受影响行数 ...

  7. python_字符编码

    一 了解字符编码的知识储备 1.计算机基础知识 2.电脑存放组成: 硬盘 - 内存 -(二级缓存.一级缓存.cpu寄存器)- cpu # cpu交互的是用户能识别的数据:字符# 硬盘中最终存储的数据: ...

  8. MySQL主备

    服务器基本环境: 两台centos6.4.iptables  diabled .selinux  disabled 两台的hosts解析 #yum install mysql -y  //这个一定要装 ...

  9. Java并发编程之同步

    1.synchronized 关键字 synchronized 锁什么?锁对象. 可能锁对象包括: this, 临界资源对象,Class 类对象. 1.1 同步方法 synchronized T me ...

  10. Eclipse+Servlet+jsp+MySql

    一.JSP和Servlet的简单介绍: Java开发Web应用程序时用到的技术主要有两种,即Servlet和JSP,Servlet是在服务器端执行的Java程序,一个被称为Servlet容器的程序(其 ...