前言
曾经有一个梦想,一个人开发个网游,拿点小流水,然后在家乡养老,做爱做的事情。现如今,笔者已经把前面的事情完成——一个人完成一款网游。
这条道路,可谓艰难险阻。在此,笔者还是建议年轻人不要轻易踏上这条路。如果你被逼得走上这条路,不得不实现类似的梦想。笔者希望可以帮助大家扫清前面的路,在旅途上,走起来顺畅一些,距离彼岸近那么一点点,当然,实现梦想只能靠自己了。
一、追求的目标
这是一场艰难的持久战。我们需要好好谋划,驾驭好我们的脑子,毕竟很多时候,脑子不听使唤。但脑子有个癖好,给定目标,努力奋斗,达到目标,奖励自己。这时,脑子就会情不自禁地感动,喜悦和充实。以此不断地循环,才可以走完这条漫漫长路。
在这里,我们的目标是一个人开发一款手机网游。为了让目标简单点,咱就选比较火热的棋牌游戏——斗地主吧。然后给这个目标加个期限:两个月。由于是零基础,所以讲解会比较啰嗦。
二、目标拆解
1.面临的困境
一款手机网游开发,主要涉及到客户端和服务端。客户端主流设备主要是iOS和安卓,由于移动设备写代码很困难,所以,需要在pc或者mac上开发写代码。也就是整个项目涉及众多平台:iOS系统、安卓系统、Linux系统、Mac系统(或者windows系统)等。而各个操作系统,差异性很大,不同的编程语言,不同的框架。
2.开发平台的选择
选择标准:涉及的设备越少越好。
因为在移动设备没有现成的开发工具,所以只能在电脑上开发这个项目。
选择Mac系统做开发平台:
- 只有Mac设备才能发布iOS的app;
- 游戏服务器主流选择Linux系统,Mac系统与Linux系统有些共同特点。比如,支持shell终端,文件系统等。
- 在Mac上,有苹果公司开发的Xcode开发工具。给移动开发带来不少便利。
所以,客户端开发和服务端开发,都在Mac上进行。如果没有Mac设备,可以在PC上安装黑苹果系统(网上搜索),当然PC设备需要Intel的CPU。
3.客户端引擎(框架)的选择
选择标准:跨平台,易使用,有开发者人群,有开发社区维护等。
开发一个游戏引擎,需要耗费大量的财力,精力和时间,我们只能选择现成的游戏引擎。
在国内,客户端端主要流行unity3d和cocos2dx。unity3d是商业软件,插件和编辑器众多,但不开源,比较笨重;cocos2dx免费开源,轻巧快速开发,但3D功能简单,开发工具不多。
对于我们棋牌项目,选择轻巧的cocos2dx。
4.服务端引擎(框架)的选择
选择标准:运行稳定,多核使用,开发者人群,易使用等。
服务端的游戏引擎比较小众,很多游戏公司使用自己的框架。
对于我们棋牌项目,选择轻巧的skynet。和cocos2dx一样,都是国产的开源框架。
5.主编程语言的选择
选择标准:简单容易上手,跨平台,最好一个开发语言做全部的事情。
在选择开发语言之前,先盘点一下我们手上的资源。
人员:孤军奋战
时间:两个月期限
粮草:四箱泡面
所以,我们要用一种编程语言开发客户端和服务端。最好是一份代码,客户端和服务端都通用。
开发语言太多了,老毛病——选择困难症又犯了。没办法,只好选择排除法。
- Java语言:很抱歉,你被乔布斯鄙视了,你跑不了iOS。
- C#语言:一个幸运儿,被unity3d捧红了。但不太受开源世界欢迎。并且买unity3d的钱够买几箱泡面了。
- C/C++语言:真金白银的王老五,支撑着整个软件帝国。能跨平台开发,全靠它的功劳。但是,开发逻辑业务太笨重了。作为十年奋战在C++开发前线的笔者,也不可避免会出错。作为服务端,即使是一个BUG,那也是很致命的。所以,只让它做底层,逻辑业务选择其他的,特别是服务端。
- python语言:古老的脚本语言,居然在人工智能开发领域火起来了。效率比较糟糕。不太适用移动开发。
- golang/erlang语言:erlang语言也是古老的脚本语言,为电信服务设计的,代码看起来影响视力,不太受欢迎。golang专门为分布式服务器设计,有一批追随的人群。最重要的是,它们两都不支持客户端。
- js语言:在谷歌浏览器的js v8引擎腾空问世后,诞生了node。从此,js重新焕发了春光,开始通吃前后端,过上有酒有肉的生活。但是,node对多核,并发处理业务不太强,宛如一根筋式地干活。
排除所有以后,在这个项目,选择lua语言:
- lua是嵌入式语言,小巧,简单易用,易于绑定底层接口。可以与C/C++相爱相杀,厮守终生。
- cocos2dx和skynet都支持lua。lua在游戏开发很流行。
- 由于lua的虚拟机vm很小,单个进程可以运行成千上百个vm。在多线程开发中大有好处,提供一个线程安全的独立vm环境。lua也支持协程,为服务端开发提供极大好处。
- lua支持热更新,快速部署更新。
三、坚定的道路
通过上文的分析,我们被逼着踏上了这条道路:
一个人在Mac上,使用cocos2dx-lua和skynet开发斗地主。
自己约的炮,含泪也要把他打完!
以上图片来源网络搜索,若有侵权,请告知,立马卸载
个人开发者,若有软件外包,请联系我,QQ:743712205
技术讨论群:277615647
有疑问加站长微信联系(非本文作者)