普通业务功能的开发,和游戏方向的开发有什么差异吗

2020-07-02 12:01:41 +08:00
 Renco

了解下情况,游戏开发的语言比较常用的是哪些。Java 初级开发可以尝试着转游戏方向吗。

4689 次点击
所在节点    程序员
32 条回复
kop1989
2020-07-02 12:06:43 +08:00
服务器端的话都差不多,只是侧重点不同。因为游戏要求高并发,低延时,抗破解。
客户端(不管是单机游戏、联机游戏还是网络游戏)的话之前是偏向于 c++,目前不知道了,因为大家都在用第三方引擎,只浅尝辄止过 unity,不敢班门弄斧了。

不过游戏行业普遍比较累。属于劳动密集型。
sunny352787
2020-07-02 13:52:58 +08:00
服务器有用 Java 的,实际上现在的游戏逻辑也都是 CRUD,区别只在于游戏服务器的架构没有一定之规,基本一个游戏一个样,不像其他写 Java 就 SSH 那点东西,TCP 、RPC 什么的基本都得知道一点

不过你要是初级开发的话,就不用想太多了,到哪都是读写数据库,想来玩玩就试试吧
DiverO
2020-07-02 14:13:25 +08:00
Unity 手游
客户端:C#,lua
服务器:C++,lua(go)
coderluan
2020-07-02 14:27:45 +08:00
服务器端差别不大, 业务功能开放和游戏开放本身差别其实很大, 越是复杂的游戏差别越大, 毕竟逻辑 /算法 /技巧大多都是不通的, 不过初级转的话问题不算太大, 毕竟一般都是用现成的引擎, 理解的运行的逻辑就能上手, 别的慢慢学就行了.
VDimos
2020-07-02 14:30:47 +08:00
游戏服务器用 c 艹的比较多吧,游戏本体的话,2d 小游戏很多用前端开发的,3d 的话很多引擎可以用。
初级 java 跨游戏,步子太大了。
boyhailong
2020-07-02 14:33:44 +08:00
没啥区别吧 都是实现逻辑 curd
shpkng
2020-07-02 14:35:07 +08:00
@VDimos 小厂不会用 C++的
amwyyyy
2020-07-02 14:38:17 +08:00
有差别吧,我记得之前看到一家游戏公司的招聘要求,上面有一条,业务开发经验不算工作经验。
tgy3313
2020-07-02 15:49:21 +08:00
没记错的黑色沙漠服务器后端业务逻辑用的就是 java
paoqi2048
2020-07-02 16:08:07 +08:00
@shpkng 不是直接使用 C++,是导出接口给脚本用
takemeaway
2020-07-02 16:17:18 +08:00
都一样。 只不过游戏多数更倾向于 socket
moyixuan
2020-07-02 16:54:18 +08:00
如果想做游戏开发,应该从什么方面入手,同 Java 开发
wujieyuan
2020-07-02 17:01:28 +08:00
@moyixuan 百度一下 Cocos
qmzhixu
2020-07-02 17:01:50 +08:00
我觉得区别还是挺大的,玩法需要的东西,要是没接触过,就很难转变,和常规的 crud 不一样
joesonw
2020-07-02 17:21:10 +08:00
1. 数据怎么同步
2. 跨服怎么做(聊天?)
3. 热更新怎么做
4. 重连逻辑怎么做
xzc2677
2020-07-02 18:00:38 +08:00
服务器: 一般是 C++底层 + 脚本语言游戏逻辑(Python, Lua 比较多)。Java 的不是很了解,但是也有服务器用 java 开发。
客户端:讲讲熟悉的 Unity,一般是 C#做框架(底层) + 脚本语言游戏逻辑(也是 Python Lua 较多)。
以上不包括小程序游戏,小游戏一般会用 Javascript/Typescript 。有个引擎叫 Cocos,还有个叫白鹭。

我认为游戏和普通的功能业务开发差别较大的地方有
1. 热更新非常非常重要,不管是服务器还是客户端。
2. 配置的灵活性(游戏玩法),几乎任何新玩法都需要可以被策划随意的配置(不然真就改死你)。
3. 不要想破脑袋去考虑扩展性,复用逻辑(仅针对玩法),因为可能过一天,整个玩法就大改,也可能再过一天,你这个玩法就没了。
4. 游戏玩法可能比业务流程复杂很多很多很多(不同游戏类型可能有差别)。
5. 往往没有(或者仅有有限的)单元测试。
6. 强度真的大。
7. 客户端最好要懂图形学。
sunny352787
2020-07-02 18:08:55 +08:00
人家都说了自己是个 java 初级开发...数据同步热更新跨服图形学这些轮得到他写吗...
sunmes
2020-07-02 18:28:58 +08:00
游戏开发还要分两种,客户端和服务端.
(姑且认为业务开发就是网站开发)

服务端:
服务端和业务开发基本没区别,反正也是和数据库相关的打交道.
使用 HTTP 短连接的就基本完全一致了.
Socket 原生的也基本会有各种类库框架处理一些细节问题.
服务端的游戏逻辑和业务逻辑基本一致,用户角色,行为操作.

客户端:
客户端区别相对大一些.
通用的,比如涉及到 Android,iOS 这类平台化的差异,不过大部分游戏引擎都具备跨平台,所以实际上这块需要了解的可能并不需要太多.
然后一定的计算机图形相关的知识--纹理,混合,Shader 等等.

其它的就是和具体的游戏引擎相关的了.基本上就是引擎使用的熟练度问题。

和业务逻辑的主要区别大概就是需要考虑"显示"的问题
位置大小,动画效果,时序...

//=======================
基于 Java 语言的 有一个名为 “Libgdx”的游戏开发框架,可以自行尝试下.
直接官网下载 gdx-setup.jar
运行即可生成项目。(可以配置 Maven 镜像)
示例项目就是显示一张图。

你可以尝试:
给这张图增加按键监听,按下方向键,图片可以根据对应的方向键移动。
嗯,大概游戏开发整体都是类似“事件驱动”.

//=======================
游戏引擎(或者说框架)的概念可以自行查阅。游戏开发基本离不开 游戏引擎。

游戏引擎几乎个个语言都有。
但是有名的(或者说正式用的)引擎似乎就那么几个,大公司应该是有自己的自研引擎?

C/C++的游戏引擎应该相当多,不过我就了解过一个 SDL (Simple DirectMedia Layer)
(OpenGL 或者 DirectX 的 SDK 基本就是原生的 C/C++.)
移动端也有用到的我了解的大概就一个 Cocos2dx .
还有就是 Unreal(虚幻)了,这个引擎相当重量级...

JS 的游戏引擎也很多,尤其 H5 出来了这些年了.
比如 Cocos-Creator,白鹭 Egret,LayaBox 等等(这几个都是国内的,国外也是有不少)

Java 目前似乎就 Libgdx
针对桌面版的基本就是 OpenGL 的一些封装,比如 Lwjgl(Libgdx 桌面实现就是基于这个的)

C# Unity
Unity 感觉几乎就是移动端游戏开发的王者.

其它的一些 Lua -- LÖVE,Ruby - RPGMaker ? Python Cocos ?

Cocos 这个框架的一些概念还是很通用也很不错的,可以去官网文档看看.
Director- >Layer -> Node


//=======================
如果是想要从事游戏开发的工作,可以招聘网站上搜索下各引擎的招聘信息.
了解下有哪些,然后选一个进行对应的学习.(我没搜索过,但是目前感觉基本就是 Unity 的天下)
Renco
2020-07-02 19:01:32 +08:00
@sunmes 谢谢大佬的答复!
cwjokaka
2020-07-02 21:11:27 +08:00
Java 可考虑学 Mina/Netty 来开发游戏服务器

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/686506

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX