cocos2dx游戏开发教程,cocos2d用什么语言开发游戏

http://www.itjxue.com  2023-01-20 00:56  来源:未知  点击次数: 

#Cocos2dx手游开发#7 游戏开发流程总览

欢迎前往个人博客 驽马点滴 和视频空间 哔哩哔哩-《挨踢日志》

在Cocos2dx+Lua游戏的开发流程中,涉及到的环节有:

如果要用一句话概括策划人员,那就是

策划人员在游戏产品的开发过程中,担任了绝对核心的职位。他们在初期确定了 产品的类型 、 产品的目标人群 、 产品的玩法 、 产品的风格 等一些列内容。并在后续的产品开发过程中,担任着把控游戏产品的方向、美术的风格、游戏内部各个系统的具体设计。

在产品开发过程中,策划人员需要对接的对象有:

围绕着游戏开发流程中涉及的内容,我会不断的完善这个文档对于的模块。

欢迎前往个人博客 驽马点滴 和视频空间 哔哩哔哩-《挨踢日志》

cocos2d x教程入门怎么学?哪里有好的cocos2d x入门教程

【麦可cocos2d

x跨平台游戏开发】应该比较适合你的。

内容共分为5个阶段:

第一阶段主要了解、认识游戏开发,并为游戏开发做好准备工作;

第二阶段则学习如何使用cocos2d-x引擎进行进行游戏开发,它包含了cocos2d-x引擎各个方面的基础知识点;

第三阶段则学习游戏开发中一些常用的技术,包括网络,安全,优化,编辑器等运用,以及结合移动设备的特点和当前的市场环境,将游戏做得受欢迎;

第四阶段则主要针对游戏引擎本身进行分析,以满足游戏开发中的各种扩展需要,甚至是开发和完善引擎本身;

第五阶段就主要结合实际的商业项目,让大家掌握游戏开发的全过程,包括策划,构架,管理等,以便能独立完成商业及游戏项目。

怎样制作基于Cocos2d-x的SLG游戏

创建项目

如果要说到环境搭建,那又该是一篇长篇大论了,所以这里我就不说了,不清楚的同学到网上问度娘吧,会有很多不同系统不同版本搭建的结果的。

Cocos2d-x创建项目的方式一直都在不停的改动,所以这里我觉得很有必要给大家介绍下如何创建项目。

创建3.2的项目其实很简单,打开终端(Windows是cmd)进入到引擎文件夹目录,然后输入以下命令就可以创建。

cocos new SLG -p com.cocos2dx.rs -l cpp -d /Users/cocos2d-x/workspace/cocos2dx/cocos2d-x-3.2/projects

如下图:

p1

说明:

new:new后是项目名

-p :-p后是包名

-l :-l后是语言(cpp指c++)

-d :-d后是项目生成路径

如果一切无误,那等待几分钟以后你就可以在给定的目录下找到新建的项目了。打开项目工程后,下面我们就可以开始游戏的制作了。

前期准备

打开工程后,运行程序,你会发现它不是一个空的项目,在Classes和Resource文件夹下Cocos2d-x已经给出了一些实质性的东西,当然这些不是一定都有用的,它们存在的目的是为了给我们展示一个典型的Cocos2d-x的例子。

除了AppDelegate.h 和 AppDelegate.cpp文件,这两个文件夹下其他的东西都是可被删除的(不过在删除之前,可以先看一下HelloWorld类,了解下它的类结构、类方法,以便对Cocos2d-x进行初步的学习,也方便初学者依葫芦画瓢再写一个类似的场景)。AppDelegate类是创建项目时自动生成的一个类,它控制着游戏的生命周期,是Cocos2d-x游戏的通用入口文件,类似于一般 Windows 工程中main函数所在的文件。

打开AppDelegate.cpp文件,在游戏加载期的最后一个applicationDidFinishLaunching()函数中我们可以设置第一个启动的游戏场景,如下:

auto scene = GameScene::createScene();

director-runWithScene(scene);

GameScene是我们新建的一个游戏场景,下面会讲解。

分辨率适配

在我的游戏中,首先第一件事还是做分辨率适配,这是个恒古不变的定律。现如今市场中各种屏幕尺寸和分辨率的移动设备层出不穷,为了更好地适应这些设备,游戏的分辨率适配是十分有必要的。

在农场游戏中,很最要的一点就是实现大地图背景的拖动、放大缩小等操作,所以可想而知,我们的地图不是全部都显示在屏幕内的,也就是说,我们不能像之前的方式那样把整个显示内容做适配,我们应该留有一定的边距供玩家拖动。如下图所示:

p2

同样是在applicationDidFinishLaunching函数中,我们添加如下一段代码对游戏做分辨率适配,以便它能更好的适应不同的运行环境。

glview-setDesignResolutionSize(480.0f, 320.0f, ResolutionPolicy::FIXED_HEIGHT);

std::vector searchPath;

searchPath.push_back("H_1920");

FileUtils::getInstance()-setSearchPaths(searchPath);

director-setContentScaleFactor(1440.0f / 320.0f);

分辨率适配的原理,建议大家阅读一下:Cocos2d-x 多分辨率适配完全解析这篇文章,虽然它不是针对最新版Cocos2dx引擎,但它还是能很清楚的告诉你分辨率适配的原理和方法。

还有要说明的一点是,我们的游戏地图的高为1920,分辨率适配时则只设为了1440,意思就是说,我们本该全在屏幕内的内容留出了4分之一的高度在屏幕外。

编辑游戏地图

模拟经营游戏中,游戏地图多为拼接而成,这里我们用瓦片地图编辑器(Tiled Map Editor)来制作游戏的地图,它可以把编辑后的地图文件保存为TMX格式的文件,能被Cocos2d-x很好的支持。瓦片地图(Tile Map)不但生成简单,而且可以灵活的用于引擎中。关于瓦片地图的介绍可参考瓦片地图一文。

接下来我们开始创建地图。

运行TiledMap编辑器,新建一个地图文件。填写如下对话框:

p3

在地图方向选项内,可以选择正常、45度(传说中的2.5D)和45度交错,这里我们选择45度。接下来需要设置地图大小,这里的数值是指有多少格tile元件,并不是像素,这里我们选择30×30的地图。

最后是确定tile元件的大小,根据美工提供的地面元件大小设置,这个教程里,我们使用128×64的大小。

在地图大小一栏中,你可以看到最终的地图大小为3840 * 1920。

点击确认之后,你可能已经发现了,这个游戏地图它是菱形的,如下图所示。

p4

这里你可能会想,为什么要菱形的啦,选择45度交错建一个接近矩形的不行吗?呵呵,其实这样也是可以的,只不过啦,Cocos2d-x引擎中默认是不支持45度交错的,如果需要在引擎中加载这种交错的地图必须自己修改引擎代码(看到这,是不是整个人都不好了),而且在修改过后还不能正确的得到地图的大小,需要自己编写计算大小的公式代码。鉴于这一点,我在想,难道《全名农场》、《请叫我海盗》等游戏地图的四个角都不能被点击操作都是因为这个原因吗? 哈哈,就当是我想多了吧。其实菱形就菱形吧,其他的游戏也都这样,可以在菱形地图的下层贴一层背景来掩盖这一现象。

接下来,我们还是回到正题开始拼接地图吧。选择地图-》新图块,然后填写如下所示的对话框。

p5

选择浏览按钮,将准备好的图块文件载入编辑器。接着设置图块的宽度和高度(默认情况下是一个tile元件的大小,但),根据图块文件中图块的大小来设置。边距、间距什么的,可不做修改,0就好。

最后选中相应的图块,拖动到渲染区拼一个理想的地图。

p6

暂时我们就只简单的拼一个地图就可以了,后面再根据游戏需要,设置一些必要的对象和属性。

加载地图资源

新建一个GameScene场景,加载游戏地图。不过在此之前,请把编辑好的tmx和图块文件拷贝到Resource文件夹下。GameScene的结构和HelloWorld差不多,照着HelloWorld类依葫芦画瓢就可以建一个。你可以先看看它是如何实现的,再实现自己的类。这里就不多说了。

在Cocos2d-x中使用TMX,有以下流程供你参考:

首先用地图编辑器编辑你的地图,导出成TMX 格式。

将导出的TMX 文件和相关图片放在工程的Resoure文件夹下。

使用Cocos2d-x中TMXTileMap 类的create方法创建地图对象,TMX 文件的解析是引擎内部完成的,所以我们不需要担心。TMXTileMap 是Node 的子类,因此只要添加到场景中即可。

通过TMXTileMap,可以获得其他相关对象,比如单个瓦片(属Sprite类),比如对象组(ObjectGroup类),比如层(TMXLayer类)等;你可以通过TMXLayer类修改,删除或者添加某个网格位置的瓦片,这样可以动态的修改地图了,你还可以进行其他的操作,相关的API 我们后面使用到了再做讲解。

在GameScene类的init函数中添加如下的代码创建游戏地图:

mapLayer = LayerColor::create(Color4B(78,127,41,255));

this-addChild(mapLayer,-1);

auto map = TMXTiledMap::create("mymap4.tmx");

mapLayer-setContentSize(map-getContentSize());

mapLayer-addChild(map, 10);

auto treeSprite = Sprite::create("1.png");

treeSprite-setAnchorPoint(Vec2(0, 0));

treeSprite-setPosition(Vec2(0, 0));

treeSprite-setScale(2);

mapLayer-addChild(treeSprite, 11);

代码中新建了一个带颜色的背景层,背景层的尺寸等于加载的TMX地图大小。接着把地图和如下的一个遮盖层(其实就是为了防止菱形的地图看起来那么突兀而添加的一层)依次添加到层上。

(责任编辑:IT教学网)

更多

推荐管理维护文章