游戏开发和软件开发的具体区别是什么?
其实游戏开发本质上是软件开发的一种,因为游戏开发也需要用编程语言。
这两者之间的区别就是侧重点不同,一个游戏开发出来实际上也是一款软件,如果你认为软件开发跟游戏开发是两种,那么我的观点是是前端的不同,后端都是实现一些逻辑的功能。
软件开发
无论是桌面应用程序、Web应用、游戏亦或是手机APP,都属于软件开发的范畴。桌面应用程序比如网易云,浏览器等等,一般多用C#写界面,看起来会更加友好。Web应用的前端是html、css和JavaScript结合实现,手机APP则是Android、object-C、Kotlin,当然H5也可以开发APP。nainaiteacom
服务器端则是你擅长的语言去实现逻辑功能,并不是说我一定要利用java实现或者利用PHP实现,只要前后端统一好API接口,明确数据传输的格式等等。
游戏开发
游戏开发是软件开发中比较特殊有一类。如果你一直从事的都是游戏开发,那么你后面如果想再转别的方向其实不太好转。现在很多团队在开发游戏时都会使用游戏引擎,在游戏引擎的基础之上再利用编程语言进行开发。
比如虚幻四引擎支持C++、JavaScript、C#进行开发,小米枪战就是用虚幻四引擎开发。unity3D引擎支持JS、C#进行游戏的开发,cocos2d支持C++、lua和JavaScript开发游戏。看来游戏引擎对JavaScript语言比较友好。
我学习过一段时间unity3D引擎开发游戏,开发过一些简单的小游戏。以坦克大战为例,把地图、树、地形等设计好之后,把一个坦克模型放进地图中,利用C#编程控制这个坦克,当然你得手动设置一些地方,不过我现在忘记了。这样就不需要想app一样写个前端,只需要代码控制各个组件即可。
同感。可惜不能。cocos2d-x里面的粒子只有二维坐标。而U3D是三维的。虽然可以解析粒子的配置文件(Prefab可以明文看),但是工作量等于重写一套牛x的粒子系统。估计没有几个人有这样的能力和时间。
创建windows平台项目 一、 搭建windows开发环境 官网上显示cocos2d-x支持win7、winxp、vista系统但我只在win7上用过以下说明均是在win7系统上的编译器使用vs2010。 1、 安装vs2010 2、 安装Visual Assist X可选 3、 执行build-win32bat编译cocos2d-x 4、 运行cocos2d-x根目录下的install-templates-msvcbat将cocos2d-x模板加入vs模板库。 5、将\Debugwin32目录下的所有dll文件拷贝至Windows\system32\ (iconvdll libcocos2ddll libcocosDenshiondll libcuridll libEGLdll libgles_cmdll libxmldll pthreadVCE2dll zlib1dll )6、 双击cocos2d-win32vc2010sln进入vs编译环境 二、 新建win32项目 1、在“解决方案”上单击右键选择“添加”-〉“新建项目”。 2、选择“左侧Cocos2d-x模板”在右侧列表中选择“Cocos2d-win32 Application”输入项目名称“Cocos2dDemo”点“确定”。3、在弹出的对话框中点击“下一步”。 4、如果需要使用Box2D引擎则选中否则不要选。点击“finish”创建成功。 三、 编译运行 1、右键Cocos2dDemo项目选择“生成”进行编译。 2、右键Cocos2dDemo项目选择“设为启动项目”。然后F5或者点击菜单栏的运行键 运行。四、 创建新的解决方案 新建项目有两种方式一是直接在cocos2d-x解决方案中添加新项目上面已经介绍过了。当你刚开始接触cocos2d-x还在尝试写demo时用这种方式可以快捷的创建demo而且方便查看例子中的代码。另一种方式是创建一个新的解决方案方法如下 1、“文件”-〉“新建”-〉“项目” 2、进入新建项目的窗口选择“左侧Cocos2d-x模板”在右侧列表中选择“Cocos2d-win32 Application”输入项目名称“Cocos2dDemo”点“确定”。然后执行“下一步”。 3、使用Box2D引擎则选中否则不要选。点击“finish”创建成功。 4、单击左下角的属性标签或者选择“视图”-〉“属性管理器”打开属性管理器5、在属性管理器中双击“MicrosoftCppWin32user”弹出属性页在里面设置VC++目录即可。这样该设置对所有VC项目都有效见下图。 6、在“包含目录”中, 加入下列项目 (D:\android\cocos2d-20-x-203\cocos2dx\platform\third_party\win32) 7、在“库目录”中, 加入下列项目(D:\adroid\cocos2d-20x-203\Debugwin32)(发布时用release目录下的!!) 8、上面的第4、5、6、7条也可以通过如下方法解决: 定位到%USERPROFILE%\appdata\local\microsoft\msbuild\v40可以通过运行或直接在windows资源管理器的地址栏中输入使用其他文本编辑工具修改MicrosoftCppWin32userprops或MicrosoftCppX64userprops文件中的相关字段。以下是我的文件内容 <IncludePath>D:\android\cocos2d-20-x-203;D:\android\cocos2d-20-x-203\cocos2dx;D:\android\cocos2d-20-x-203\cocos2dx\include;D:\android\cocos2d-20-x-203\cocos2dx\platform;D:\android\cocos2d-20-x-203\cocos2dx\platform\win32;D:\android\cocos2d-20-x-203\cocos2dx\platform\third_party\win32\OGLES;D:\android\cocos2d-20-x-203\external\Box2D;D:\android\cocos2d-20-x-203\CocosDenshion\include;D:\android\cocos2d-20-x-203\cocos2dx\platform\third_party\win32;D:\android\cocos2d-20-x-203\cocos2dx\kazmath\include;$(IncludePath)</IncludePath><LibraryPath>D:\android\cocos2d-20-x-203\Debugwin32;$(LibraryPath)</LibraryPath> 第4至8条的作用是加入解决方案所依赖的头文件和库文件以保证项目的正常编译运行。 五、 如何删除vs里的cocos2d-x模板 1、 打开如下目录 (Example as default install) 1VS2008: C:\Program Files\Microsoft Visual Studio 90\VC\vcprojects\ 2VC2008Express: C:\Program Files\Microsoft Visual Studio 90\VC\Express\VCProjects 3VS2010: C:\Program Files\Microsoft Visual Studio 100\VC\vcprojects\ 4VC2010Express: C:\Program Files\Microsoft Visual Studio 100\VC\Express\VCProjects 2、 删除此目录下的 Cocos2d-x文件夹 3、 删除前缀为 CCAppWiz (080 or later) 或 CCXAppWiz (072 or earlier)的文件
将项目由win32移植到android平台 一、 快速搭建android开发环境 1、将服务器上的eclipse、java、android sdk、android ndk、cygwin、cocos2d-x文件夹拷贝到本地请注意保存的路径为英文、不包含空格、且不要过长。 2、 运行eclipse添加android-sdk的路径。(preferences->Android:SDK Location) 3、 添加ADT(Help->Install New Software:Work with) 4、添加java环境变量。 新建变量JAVA_HOME变量值为java目录的绝对路径。 在path中添加 %JAVA_HOME%\D:\android\Java\jdk160_20\bin; %JAVA_HOME%\D:\android\Java\jdk160_20\jre\bin; D:\android\Java\jre6\bin; 5、运行一次Cygwinbat 6、修改\cygwin\home\用户名\bash_profile文件添加NDK_ROOT=/cygdrive/d/android/android-ndk-r8b export NDK_ROOT 7、 修改\cocos2d-20-x-203\create-android-projectbat中的如下路径 set _CYGBIN=e:\cygwin\bin set _ANDROIDTOOLS=e:\android\android-sdk\tools set _NDKROOT=e:\android\android-ndk-r8 二、 新建android项目 1、 运行create-android-projectbat创建新的android项目例如项目名称为Cocos2dDemo。 2、 将win32下完成的cpp和h文件拷贝到\Cocos2dDemo\Classes 3、将win32下使用的资源拷贝到\Cocos2dDemo\projandroid\assets 4、将cpp文件的路径、使用的头文件的目录加入到Androidmk文件。 5、打开Cygwincd 到/Cocos2dDemo/projandroid目录下 6、执行/build_nativesh进行编译 7、在eclipse中编译打包。 三、 补充 1、20以上版本的引擎基本无法在android模拟器上运行建议在xcode和vs上调试好直接在真机上运行。 2、20以上版本的引擎要求android的开发和运行环境都要22以上的sdk。
将项目由win32移植到ios 一、 创建ios项目 1、 安装XCode 2、执行install-templates-msvcbat将模板添加到XCode 3、打开xcode选择Create a new Xcode project选择cocos2d-x模版 4、点击next填入项目名称Man 5、找到Man的主项目在这里新建一个iOS文件夹。点击create创建完成 6、删除Resource和Classes下的多余文件Helloworld的代码和资源 7、右键点击Resource 选择Add Files to "Man" 7、将Man主项目文件夹下的Resource文件夹中的资源添加到当前工程。注意选择create folder references for any added folders只是添加一个引用 8、同样的方法添加源文件和头文件到Classes下 9、点击Run编译运行 二、 补充 1、Mac 平台的OS X需要106及以上版本 2、IOS平台需要40及以上版本 3、IOS真机支持iPad 1、iPad 2、iPad 3、 iPhone 3GS、iPhone 4、iPhone 4S、iPhone 5、iphone6、iPod Touch 3 and iPod Touch 4 不支持iPhone and iPhone 3G。
需求分析
五个界面基本上就是整个宣传页的全部内容,通过滑动这几个页面可以看出,我们要实现这个页面,大致需要完成下面几项内容:
1实现上述五个页面的切换。
2实现5个页面的入场和出场动画。
3添加背景音乐
4屏幕适配
5添加微信分享的API
接下来,我们一项一项给大家介绍,完整的代码可以在这里进行下载:
/cms/uploads/soft/141023/4196-141023154059zip
开发环境与新建项目
如果没用过Cocos2d-JS的朋友们,可以到cocos官网上去下载,此处我们用的是30final,或者,我们可以下载Lite版本的Cocos2d-JS,lite版本可以很方便的根据需求去下载所需要的模块,可以很大的减少代码的体积,可在此下载,我们需要用到的模块有coreactionsmenuprogress-timer,在该页面中选择Customized Version然后勾选上述几个模块,并点击下载。
此处我们使用cocos 命令行来创建新的工程
$cd cocos2d-js/tools/cocos2d-console/bin
$/cocos new weChat -l js --no-native
$cd weChat/
$/cocos run -p web
环境搭建并不是这篇文章的重点,更详细的信息可以参考:《搭建 Cocos2d-JS 开发环境》。
主界面及其页面切换框架的实现
程序的入口代码在mainjs中,用编辑器打开并修改为下面的代码。
ccgameonStart = function () {
ccviewadjustViewPort(true);
ccviewenableAutoFullScreen(false);
var mode = ccsysisMobile && windownavigatoruserAgentindexOf("MicroMessenger") != -1 ccResolutionPolicyFIXED_HEIGHT : ccsysisMobile ccResolutionPolicyFIXED_WIDTH : ccResolutionPolicySHOW_ALL;
ccviewsetDesignResolutionSize(640, 831, mode);
//load resources
ccLoaderScenepreload(g_resources, function () {
ccdirectorrunScene(new MainScene());
}, this);};ccgamerun();
关键点解析如下:
1设置浏览器meta来适配屏幕,引擎内部会根据屏幕大小来设置meta的viewport值,会达到更好的屏幕适配效果。
2针对手机浏览器和PC浏览器启用不同的分辨率适配策略。
3预加载声音等资源。 ccLoaderScenepreload会生成一个“加载中 x%”的界面,等待资源加载结束后,调用第二个参数传入的匿名函数。 对于基于html的游戏,页面是放在服务器端供浏览器下载的,为了获得流畅的用户体验,ccLoaderScenepreload让浏览器先把远程服务器的资源缓存到本地。需要预加载的资源定义在src/Resourcesjs文件中。
4启动游戏的第一个场景。
主界面分为2个部分,第一个部分是不随着屏幕移动而移动的向上箭头和音乐按钮,第二个部分是根据用户滑动屏幕而改变的场景。
我们先根据需要,构建出需要的函数,并一一实现他,这里我们使用ccSceneextend()来扩展出一个scene,并在这个scene中构建出我们需要功能,并一一实现他。
由引擎提供的ccSceneextend方法,让js能实现高级面向对象语言的继承特性。 onEnter方法是场景初始化完成即将展示的消息回调,在onEnter中必须调用this_super();来确保Scene被正确的初始化。
用于初始化UI的函数 initUI()
用于初始化touch事件的函数 initTouch()。
用于切换页面的函数changePage()和记录当前页面的参数currentIndex
用于控制箭头显示隐藏的函数toggleArrow()
用于控制音乐按钮回调的函数
var MainScene = ccSceneextend({
listener: null,
accelListener: null,
currentIndex: 0,
sceneList: [],
ctor: function () {
this_super();
ccspriteFrameCacheaddSpriteFrames(resfirstPage_plist);
},
onEnter: function () {
this_super();
thisinitUI();
thisaddTouch();
},
initUI: function () {
},
toggleMusicCallback: function (sender) {
},
togleArrow: function (status) {
},
addTouch: function () {
},
changePage: function (index, next) {
}
});
接下来我们一一来实现。
首先,我们来实现音乐按钮与箭头,我们在initUI()中添加如下代码。
var bg = new ccSprite(resbackground_png);
bganchorX = 0;
bganchorY = 0;
bgscaleX = ccwinSizewidth / bgwidth;
bgscaleY = ccwinSizeheight / bgheight;
thisaddChild(bg, 0);
thisarrow = new ccSprite("#arrowpng");
thisarrowsetPosition(ccpAdd(ccvisibleRectbottom, ccp(0, 50)));
var posY = thisarrowy;
var arrowAction = ccrepeatForever(ccsequence(ccspawn(ccmoveTo(08, ccp(thisarrowx, posY + 30))easing(cceaseIn(05)), ccfadeOut(1)), ccdelayTime(08), cccallFunc(function () {
thisarrowy = thisarrowy - 30;
thisarrowopacity = 255;
}, this)));
thisarrowrunAction(arrowAction);
thisaddChild(thisarrow, 1);
thismenuItemToggle = new ccMenuItemToggle(new ccMenuItemImage("#musicpng"), new ccMenuItemImage("#music_selpng"), thistoggleMusicCallback, this);
thismenuItemTogglesetPosition(ccpAdd(ccvisibleRectright, ccp(-thismenuItemTogglewidth / 2 - 30, 140)));
var togglemenu = new ccMenu(thismenuItemToggle);
togglemenuanchorX = 0;
togglemenuanchorY = 0;
togglemenux = 0;
togglemenuy = 0;
thisaddChild(togglemenu, 1);
我们在屏幕中,添加了一个背景的sprite,并且,将这个背景进行缩放,以让其在各种情况下都布满屏幕,并且我们为箭头设置了一系列动画,让其能够循环播放,Cocos2d-JS,为了方便广大开发者,提供了丰富多彩的动画(actions)。下面,我们先简单的介绍一下几个常用的action的API。
ccrepeatForever(action) 无限循环某个action
ccsequence(action1,action2,)顺序执行括号里面的action
ccspawn(action1,action2,)同时执行括号里面的action
ccmoveTo(duration,targetPoint)从当前位置在duration(秒)时间内移动到点targetPosition的action
cceaseIn(rate) 以rate为ease参数执行easeIn的action,一般是这样使用的actioneasing(cceaseIn(rate))
fadeOut(duration) 在duration时间内从屏幕淡出的action
ccdelayTime(duration) 延时duration时间的action,通常用于等待一段时间后再播放某个action
cccallFunc(function) 用于执行action的回调,通常在某个action结束后需要执行某段函数的话,可以使用它。
通过上述的简单介绍,是不是对action有了一个初步的了解了呢,我们实际来操作一下:
我们需要一个箭头,往上走并慢慢减速和透明,最终消失,然后在原来的位置出现重复下去,所以我们可以归纳为,移动+淡出-->回到初始位置-->移动+淡出。这样我们很清晰就归纳出如何去写这个action了,我们使用ccspawn(ccmoveTo(),ccfadeOut())就构建出了移动+淡出这个效果,然后使用cccallFunc()设置了这次action播放完毕要修改的位置回到初始位置,接着我们使用ccsequence()来顺序执行这两个action,这样一来,一次action就编写完成了,最后我们只需要将这个action使用ccrepeatForever()就完成了我们需要的重复播放。
细心的读者可能会问了,代码中的位置设置,为什么是ccpAdd(ccvisibleRectright,ccp())?这是cocos为了让大家更方便的做屏幕适配所定义的9个点,这9个点会根据不同屏幕大小来动态设定,例如ccvisibleRectcenter,这个点的位置,无论在什么分辨率的屏幕下,都是在屏幕的正中央,这样我们就可以根据这个点的位置来做相对布局,已达到适配屏幕的目的,例如上面的代码thisarrowsetPosition(ccpAdd(ccvisibleRectbottom, ccp(0, 50)));就是将arrow这个sprite,放在屏幕的底部的正中央,然后再在y轴上加50个像素,这样,无论屏幕的大小,都能保持在屏幕的底部的正中央向上50个像素。这也是我们做相对布局的基础。后续的布局,我们都会根据这些点的坐标来设置。
要制作一个棋牌类游戏,可以按照以下步骤进行:
1 游戏规则设计:确定游戏种类(如象棋、围棋、国际象棋等)和规则,包括棋盘、棋子、移动规则、胜利条件等要素。
2 游戏界面设计:设计游戏的界面,包括棋盘、棋子、游戏控制按钮等,根据需要可以使用图形、动画等技术来增强用户体验。
3 游戏逻辑实现:使用编程语言(如Python、Java、C++)编写游戏逻辑代码,包括棋盘的初始化、棋子的移动、胜利条件判断等功能。
4 用户交互设计:设计用户与游戏的交互方式,包括棋子的选择、移动、悔棋、重新开始等功能,可以通过鼠标点击或者触摸屏操作来实现。
5 多人对战功能实现(可选):如果需要实现多人对战的功能,可以在游戏中加入网络功能,让玩家可以通过网络连接进行对战,可以使用网络通信协议(如TCP/IP)来实现;另外,也可以采用本地对战的方式,让多名玩家在同一设备上进行对战。
6 测试和调试:在完成游戏开发后,进行测试和调试,确保游戏的功能和性能良好,并进行Bug修复。
7 上线发布:将完成的游戏打包成可执行文件或者安装文件,并发布到相关的应用商店或者游戏平台上,供玩家下载和使用。
值得注意的是,如果你没有相关的编程技能和开发经验,可以考虑借助相关的游戏开发引擎(如Unity、Cocos2d-x)来开发游戏,这样可以节省开发时间和成本。
可以选择去机构学,也可以自己找资料自学。自学的话,要先规划好自己要学哪些知识,从哪里入手,有困难如何解决。机构学的话,就要选一个靠谱的机构。
主要学的内容如下:
1游戏程序设计:C++程序设计入门;基本数据类型和输入输出;流程控制语句;数组、指针和引用、函数;程序结构和书写规;范结构体和联合体、类;继承与多态;异常处理与程序调试。
2算法与数据结构:算法分析;数据结构;基本算法;STL的概念与使用;静态库与动态库;XML库的使用。
3Win32程序设计:Windows程序入门;Windows消息;GDI绘图游戏工具与MFC;网络编程基础。
4游戏数学和智能应用:游戏中的坐标系;矢量、矩阵;几何碰撞;物理模拟;人工智能与寻路算法。
52D游戏技术与应用:2D游戏技术概论;游戏地图系统;GUI系统;战斗系统设计;任务系统;优秀的声音引擎BASS;Cocos2D-X引擎;Box2D物理引擎。
互联网行业目前还是最热门的行业,学习IT技能之后足够优秀是有机会进入腾讯、阿里、网易等互联网大厂高薪就业的,发展前景非常好,普通人也可以学习。
想要系统学习,你可以考察对比一下开设有IT专业的热门学校,好的学校拥有根据当下企业需求自主研发课程的能力,南京北大青鸟、中博软件学院、南京课工场等都是不错的选择,建议实地考察对比一下。
祝你学有所成,望采纳。
1、服务器端区分连接终端类型和平台版本不难,主要是数据接口的设计和负载能力。比如米聊,对所有终端内部的通信、存储、转发机制是样的。那你核心还是服务器端的技术储备和能力。
2、Talk box的通信机制实现起来不难,但还是前面的这个问题,就是服务器端的技术,同时语音的压缩和播放是否有自己的或者适合的引擎,因为Talk box 可以做到每秒2K的数据量超过移动网络的话音通信质量。
3、游戏的跨平台,建议还是使用跨平台的引擎。Cocos2D 之后衍生的 Cocos2D-X要到年底才能比较完善的支持多平台(主要是目前Android平台Cocos2D-X还是需要用JAVA和C混编,要求比较高)而3D也有类似的可选择产品。
4、是否有必要上来就考虑夸平台,这是个疑问。目前我们真的还没有看到哪个产品上来就提供网络游戏多平台支持的,因为各个平台目前盈利模式和收费渠道有所不同,所以你很难直接用iOS上的费率要求Android用户也认账,除非是直接针对海外市场。而目前iOS Android WP7这些平台上最成功的网络游戏还没有超过10万人在线的,前面问题中100万 1000万的这个前提至少半年甚至1年内不存在。
5、回合制游戏,我们要求做弱联网就是GPRS下必须可玩,如果一定是长连接,请评估自己通过优化后能得到的最小数据通信量。如果做手机网络游戏只能WIFI环境,或者断线后游戏进程没有等待或者恢复机制。那基本上不太可能或者真正的或者持续的成功
6、目前北美Grossing 前30名,无论iPhone 还是iPad,传统概念的网络游戏几乎都是不存在的,只有弱联网的棋牌、农场、经营类,我们不认为MMO、大型联网游戏、3D网络游戏短时间内会有足够的市场空间。Android平台由于70%的终端还是里程碑时代的性能,所以建议产品选型的时候慎重,考虑跨平台同步实现的时候慎重,网络连接的带宽需求设计慎重。
0条评论