游戏开发服务器端需要看哪些书籍(有cc++,c#,数据库基础)

游戏开发服务器端需要看哪些书籍(有cc++,c#,数据库基础),第1张

1、最先看下你会的语言的网络编程就好,先熟悉下。

2、然后就可以看看专业的网络游戏编程的书就好,任何一本都可以。

3、书的语言要与你将要从事的游戏开发相关才行。否则看了也白看。

建议你学习unity3d吧,挺有意思的。也能开发服务器程序。

另外学习下mysql网络编程也好。在亚马逊搜下就行。

游戏的开发制作,除去美术设计外,就是通过游戏弓擎完成对游戏玩法的实现。想要学习游戏软件开发,可以去专业的培训机构进行学习,游戏引擎的使用,会编程是基础,例如unity3D就需要学会C sharp语言。

游戏引擎

目前行业内常用到的游戏开发引擎有两款: unity3D与UE4 (虚幻4)。而许多大公司可能还会开发自己的游戏引擎。

Unity3D

一个多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。无论是手游、端游、网游,都可以通过unity3D完成开发。在Unity3d中, 工程师们可以轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容。

扩展资料

制作

游戏制作一般主要分为两大块,即程序开发、美术设计。程序开发主要包括服务器端开发、客户端开发。

而美术设计包括场景、角色、次时代、特效、动画等部分,要完成一个优秀的游戏作品,每一部分都需有专业人才负责。

制作时长

对于大型的游戏,一般需要几十个人的团队制作几年;而小游戏则可能只需一个人制作几天。

一般的大型游戏制作都会由游戏开发公司来完成,小型的游戏则有可能由业余团队或者个人完成,如RPG制作大师此类软件就可以让不懂技术的人做出电脑游戏。

Unity3D中的多线程。线程是一个相当复杂的话题,但如果掌握了它,就可以从容的使用多个硬件处理器或处理很难划分管理数据块。

如在场景中用A算法进行大量的数据计算,变形网格中操作大量的顶点,持续的要运行上传数据到服务器,二维码识别等图像处理,如果同时你要处理很多事情或者与Unity的对象互动小可以用thread,否则使用coroutine。

线程是在程序中与其他线程同时运行的进行。在多处理器的计算机上可以做到多个线程的真正的同步,更多的线程取决于有多个处理核心。

Unity3D编程时,总有个主线程执行你的代码,也可以创建额外的线程和主线程同时运行。而Unity中,你仅能从主线程中访问Unity3D的组件,对象和Unity3D系统调用。任何企图访问这些项目的第二个线程都将失败并引发错误,这是一个要重视的一个限制。

所以当你写代码时,你认为一个函数开始并达到它执行的点后返回,同样你做的东西又在另外一个函数中执行,但又没有发生单龚厕夹丿蝗搽伟敞连相应的变化。操作系统决定你代码的执行,任何时候,你的代码只能暂时”休眠”掉,然后让另外的代码开始运行。

Unity3D中的多线程及使用多线程

在这个例子中,在第一个线程将A的值加载到CPU寄存器中准备+1后被中断,第二个线程来读取A的值,并减去1000,这时A应该是-950,现在第一个线程重新开始,它在寄存器中的50+1的结果存储于A,A变成了51,而-950已经丢掉了。

从根本上说,要在用多个线程在同时对变量或内存访问时,要采取很多预防措施来确保不会发生这样的事。所以Unity决定从另外线程访问这些变量或者内存是无效的,只是为了避免所有系统和框架对象出现问题。所以要确保一次只有一个线程来修改变量,这不意味着你不能用多线程工作,你可以用”排序”来解决这个问题。

C#中有lock这个关键字,以确保只有一个线程可以在特定时间内访问特定的对象,这里说对象是因为。法锁定一个类型值(value type)或原型(primitive)。

int a = 50;

object guard = new object();

void ThreadOneCode()

{

//一些代码在这

lock(guard)

{

a = a + 1;

}

//其余一些代码在这

}

void ThreadTwoCode()

{

//一些代码在这

lock(guard)

{

a = a - 1000;

}

复制代码

所有都锁定在guard内,保证同一个时间只有一个线程通过guard访问它,你可以使用任何合适的对象。现在你可能会有各种各样的问题,比如你要锁定的不止一件事,可能是互相嵌套的。那我们该怎么办呢

我们这个类叫Loom,让你可以轻松在另一个线程运行代码,这里有两个要注意的功能:

RunAsync(Action)-在另一个线程上运行的一组代码

QueueOnMainThread(Action,[可选]float time)-运行在主线程的语句(可选延迟)

用LoomCurrent访问Loom-创建一个看不见的GameObject用来处理游戏主线程的互动,下面这个例子用Loom来更新一个网格所有的顶点乘的结果。

//缩放一个网格在第二个线程

复制代码

unity3d用的C#和开发Winform、ASPnet的C#是不一样的,主要是作为一种脚本语言来进行场景中对象的控制和和业务逻辑的实现,所以如果有任何一门面向对象编程语言的经验,那熟悉一下C#的基本语法就可以开始编程了,这里的重点恰恰不是需要C#的特性而是需要熟悉面向对象语言的共性以及Unity3D脚本编程的特点特别是Scripting API(当然您如果重点在插件开发、服务器端开发等方面,那就另说)。

重点不是记忆而是应用和理解,实际上常用的场景对象并不多,并且像美工、程序员、构架师等不同的开发角色需要掌握的重点也不一样,就算是美工还分场景、模型、地形等不同的重点,所以硬要去记住所有的对象参数再进行开发是不现实的,何况unity3D的一大优势在于第三方插件极其丰富,当你使用不同的插件时又需要了解插件的各种参数,有的插件参数多达几十项。所以重点在于使用和理解,先从核心的和你当前开发急用的方面开始,最后你会发现参数虽多,实际上分类就那么些,比如控制transform的、控制shader的、控制gui的、控制rendering、控制network的……你最终会对这些参数形成一个大纲,然后即使是没用过的插件参数也可以顾名思义的立刻会用了。

这个很不好说啊,按目前实际工作来看最多的是脚本类的编程吧,然后还有服务器端编程、插件编程、shader编程……,不是说那个方面需求多就是重点,比如基础的脚本编程,门槛很低,以后能胜任的人会越来越多。依我看如果想走得远,需要对各类编程都了解,特别是能整合不同方面的开发、能做构架(这样就可以让老板看你脸色了,呵呵)。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 游戏开发服务器端需要看哪些书籍(有cc++,c#,数据库基础)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情