一 引言 8
1.1编写目的 8
1.2适用范围 8
1.3定义、首字母缩写词和缩略语 8
1.4读者范围 8
二 基本功能 8
2.1 文字绘制的功能如何实现?是否支持描点功能? 8
2.2 画图的功能如何实现?都支持哪些图片格式? 8
2.3 音乐播放功能如何实现?都支持哪些音乐格式?是否支持暂停播放功能? 9
2.4 定时器如何使用?定时器个数有限制吗?使用的时候有哪些实现注意的?定时器会延迟吗?定时器忘记删除会有什么后果? 9
2.5 手机的按键、触摸屏事件如何接收?支持长按键和组合键功能吗?触摸屏是否有move事件? 9
2.6 游戏运行过程中是否会被打断?打断时候和游戏恢复时候是如何触发的,需要处理哪些事情? 10
2.7 游戏如何收费?都有哪些收费方法,有什么区别?是否有包月收费接口? 10
2.8 游戏的入口函数是什么?如何退出游戏?游戏中按挂机键,是否会收到按键事件? 10
2.9 手机可以使用的内存通常有多大? 游戏运行过程中如何获取内存剩余信息? 10
2.10 如何进行文件操作?功能上是否有限制? 11
2.11 文字都支持哪些编码? 支持UTF-8编码不?是否支持unicode转GB2312? 11
2.12 SDK支持浮点运算吗?是否有三角函数?是否有绘制圆、椭圆和弧线等接口? 11
2.13 SDK有随机函数吗? 11
2.14 SDK是否可以联网,进行socket通信? 11
2.15 图片是否可以进行翻转?有相关接口吗? 12
2.16 bmp图片在运行的时候占用多大的内存? 12
2.17 有发送和读取短信的接口吗?有打电话的接口可以使用吗? 12
2.18 SDK运行的手机主频有多大? 12
2.19 编译生成的mrp文件大小有限制吗?通常大小是多少? 12
2.20 是否有获取unicode编码长度的函数? 12
2.21 SDK中最终可以运行的是什么样子的文件? 13
2.21 是否可以获取屏幕缓冲区?缓冲区内存有多大?是否可以对屏幕缓冲区进行赋值操作? 13
2.22 如何使用输入法? 13
2.23 是否支持自己创建空白的图片缓冲区?是否可以获取创建图片的句柄或者画笔? 13
三 SDK使用注意实现 14
3.1全局变量使用注意事项 14
3.2局部变量使用注意事项 14
3.3 8bit bmp图片使用注意事项 14
3.4 bmp图片宽高注意事项 14
3.5 SPR平台游戏音乐使用问题 14
3.6 C语言标准库函数使用问题 15
3.7 mrc_exit函数使用注意事项 15
3.8 本地UI窗口创建使用注意事项 15
四 常见问题原因和解决方法 15
4.1 游戏中为什么会出现花屏?有什么解决方法? 15
4.2 游戏中为什么会出现死机和重启?有什么解决方法? 16
4.3 游戏中内存申请为什么失败? 16
4.4 编译的时候为什么会提示Authorization timeout? 16
4.5 运行mrp文件的时候为什么会提示不到can't find sdk key? 17
4.6 为什么使用
串口线无法抓到trace信息? 17
4.7 为什么在模拟器上运行的游戏非常流畅而在手机上运行时候速度非常慢?有什么解决方法? 18
4.8 测试二次确认通道的时候,现在都需要等很久,30秒以上才能收到短信,上个月不会,是不是SDKv1.0.3.23有什么改变导致的?试了2张卡,一张全球通,2秒就收到短信,一张神州行,要30秒才收到,都不是错误指令。 18
4.9 积分查询时,手机出现假死的现象,如何解决? 18
4.10 i18n的SGL_LoadString函数,在飞航模式下会有问题。 18
4.11编译时出现“Undefined symbol mrc_appEvent”的error错误信息,怎么处理? 19
4.12分包的游戏,在编译SPR版本的时候,提示“Endianness mismatch”,可能是什么问题? 19
4.13展讯的手机,是否需要做积分上传? 19
4.14道具收费,发送成功以后,需要等待用户确认,还是自动返回游戏? 20
4.15 mpr工程文件里的RAM值如何填写? 20
4.16 手机上怎么样进行调试? 20
4.17 mrc_bitmapGetScreen这个函数什么作用?会不会产生新的内存? 20
4.18 编译SPR版本时,出现“Error: L6218E: Undefined symbol main (referred from kernel.o)”的错误提示,如何处理? 20
4.19 游戏偶尔会出现一个问题,购买东西,购买成功了,但是短信没有回复,之后购买东西都是网络延迟,退出游戏后才能收到短信。 21
4.20 在每次之前,都调用mrc_initChargeOverSea(&tPayCtrlInfo),会不会有问题? 21
4.21 编译时加入"loader=c"有何区别?在哪里添加这串代码? 21
4.22 游戏在测试的时候会出现死机,我们这边的手机可以一直玩,没有出现死机。内存检查没发现遗漏,运行时也一直剰200K左右的内存,有可能是什么原因? 21
4.23目前分包游戏英文模式或者飞航模式无法进去游戏问题。 22
3、SGL_LoadString(STR_LAN_VALID)这个步建议省去,或者 22
4.24 有没有控制背光灯的接口函数?游戏中是否能禁止关闭背光灯,屏幕常亮? 23
4.25 个别型号的SPR手机,长时间不操作,暗屏后恢复,图片会花屏,甚至手机会重启,什么原因? 23
4.26 分包和文字分离的游戏,模拟器读取语言包时出错,可能是什么原因? 23
4.27 模拟器打开MRP包时,提示连接WAP错误,对话框内容为“wap.skmeg/dsmWap/error.jsp”,如何处理? 24
4.28 分包的游戏,MTK版本的文字正常,但是SPR版本的文字却显示不正常,可能是什么原因? 24
4.29 使用mrc_bitmapShowFlip函数,在真机上能够正常运行,在模拟器上编译却会提示“unresolved external symbol _mrc_bitmapShowFlip”,可能是什么原因? 24
4.30 现在做的TMG2_ZY2是二次确认通道么,如果不是,该怎么测试二次确认画面? 24
4.31 假如我用mrc_bitmapNew创建了一个图片缓冲区,当我不
再使用里面的内容时,应该怎样释放掉呢? 25
4.32 如何获取游戏在真机中的内存使用情况? 25
4.33 用trace软件抓trace的时候,出现"Get PS Frame failed"错误,是什么原因? 25
4.34 模拟器上的打出的trace信息与真机上相等吗? 25
4.35 如何通过抓trace查看收费时的收费通道是否正确? 25
4.36 rand()函数需要每次都给不同的参数做种子是吧? 25
4.37 如何从MRP头里读取MRP包的版本号? 25
4.38 同样尺寸大小的24位BMP和8位BMP内存相差多少? 26
4.39 我想在TRACE线查看的到的信息中打印信息,用什么函数? 26
4.40 怎样查看游戏的代码量? 26
4.41 一个自带字库的游戏,用AUX M868手机进入,然后按挂机键退出游戏。再次进入的时候,所有使用自带字库的文字都无法显示。 26
4.42 在mrc_exitApp里加了自动保存的游戏,在AUX M868中,按挂机键退出,不会自动保存存档。 26
4.43 购买测试SKY-MOBI平台的测试手机时,有什么要求吗? 27
4.44 mythroad平台可以后续安装吗? 27
4.45 编译MRP时,出现“Authorization String:Authorization failure! ”的错误提示,可能是什么原因? 27
4.46 游戏在金立p300手机上,在玩的过程中,收到短信,手机会自动重启,可能是什么原因? 27
4.47 static const Image imgInfo[1] = { {"village.bmp",160,100} }; 这个这样定义全局变量,赋的初始值会不会丢失? 27
4.48 用mrc_soundSet加载的声音,那个内存是怎样释放的? 28
4.49 480x320的屏幕,模拟器上设定了以后,还是显示不全,怎么办? 28
4.50 手机屏幕LCD暗屏,会不会导致mrc_resume事件? 28
4.51 mrc_checkChargeExOverSea函数检测是否注册的时候,总是返回已注册,可能是什么原因? 28
4.52 用分包合成的mrp包文件,在模拟器上无法运行。 28
4.53 mrc_getTextWidthHeight获取GB码及Unicode码字符串得到的宽、高一致吗? 29
4.54 游戏自Applist启动时,提示“not enough memory” 29
4.55 部分游戏vigor-v629机型外部事件结束以后,手机画面信息残留问题。 29
4.56 计费短信发送成功判断。 29
4.57 在模拟器上编译正常,交叉编译的时候,却提示“Error: L6218E: Undefined symbol new_gameC1 (referred from mr_src_mygamecanvas.o)”的错误,可能是什么原因? 29
4.58 怎样查看游戏MRP包的SDK的版本号? 30
4.59 我们这个平台,存储一些游戏相关的数据,一般都是直接写文件吗? 30
4.60 斯凯平台MRP运行的真机如何获取? 30
4.61游戏过程中,插入USB线,在存储提示界面按“返回”,继续游戏,稍侯显示“USB移除”导致游戏花屏。 30
4.62 游戏过程中调用mrc_exit死机重启? 30
4.63 模拟器下提示:The program 'D:\Sky_SDK\Sky_SDK\simulator\' has exited with code 0 (0x0). 31
4.64、一些游戏中的对话框,做得
比较漂亮,还带有圆角的,这个是怎么实现的? 31
4.65、用VS2005模拟器,编译的时候mrc_drawTextLeft报错,如何处理? 31
4.66、VS2005环境下,如何添加自己的LIB文件? 31
4.67、mrc_strcmp是否支持UNICODE值比较? 31
4.68 使用vs2005运行自动生成的helloworld时,模拟器上显示“242: cann`t find sdk key”,是什
么问题? 31
4.69 Sky-mobi平台可以使用pow函数吗?可以使用stdlib.h里面的函数吗? 32
4.70 ACC文件读取,执行以下流程mrc_getSoundTotalTime获取的文件时间为无效时长: 32
4.71 屏幕缓存如何操作?如果使用自己建立屏幕缓存? 32
4.72 使用mrc_platTextNew新建一个文本窗口,按右软键退出文本框时,手机重启,可能是什么原因? 33
4.73 把编译好的mrp包放在applist目录下,列表里却看不到这个游戏,什么原因? 33
4.74如何在写文件的时候,追加文件内容? 33
4.75 为什么我获取一段的文字的宽高,不管我把字体大小设置成MR_FONT_MEDIUM,还是MR_FONT_SMALL,获取到的宽高都是一样的? 33
4.76 游戏是不是大多都采用256的BMP图片? 33
4.77 用mrc_textWidthHeight(str, SFFalse, MR_FONT_SMALL, (int32 *) &fntw,(int32 *) &fnth)在SPR
展讯手机上获得到的宽高fntw和fnth都是0? 33
4.78 MTK上每个指针变量本身占用多少字节空间? 34
4.79 编译好的mrp包,如何放到真机上测试? 34
4.80编译时提示“Error: C3028E: <argument 1 to 'mrc_unicodeTextWidthHeight'>: implicit cast of pointer to non-equal pointer”,这是什么错误? 34
4.81 mrc_readFileFromMrpEx函数的第三个参数为什么是“uint8 ** filebuf”,为什么要用二级指针? 34
4.82 mrc_readFileFromMrpEx函数,第一个参数packname填NULL时,是不是就会从默认包去了? 34
sdk4.83为什么我在mrc_init(void)中声明字符串char *string="\x0\x48\x0\x0";它会提示错误 error C2143: 语法错误 : 缺少“;”? 35
4.84 mrc_readFileFromMrpEx打开的文件如何关闭? 35
4.85资源编译打包的时候,对bmp是不是有压缩? 35
4.86 短信中心号码为空时,mrc_scoreConfirm()函数返回成功是BUG吗? 35
4.87 对一个全局的结构体数组进行初始化的时候,如果要保留里面的数据,是不是每个结构体成员都要const呢? 35
4.88 游戏用了自带字库后,会额外占用多少内存? 36
4.89 MTK平台能打开的文件数目有限制吗? 36
4.90 mrc_bitmapShowFlip()如何画透明? 36
4.91 请问mtk和spr都有多少种屏幕规格啊? 36
4.92 mrc_bitmapLoad( 29, "menu.bmp", 0,0, 240, 320, 240);这句话我再一个方法内执行很多次,就是不释放,内存会一直累加吗?还是始终在29的那个缓存内操作不产生额外的内存。 36
4.93 自带字库的字库生成工具中有个设置字号和一个设置big medium small,这两个有什么区别? 36
4.94如果绘制的
字符不在字库范围了,是显示异常,还是程序直接死了? 37
4.95斯凯平台上面有没有类似MessageBox的提示框?这个函数,显示的Dialog是全屏的吗?有没有可以指定显示区域?能不能在弹出之后,在一定时间过后自动消失呢? 37
4.96模拟器支持声音吗? 37
4.97注册不生成sid文件是哪里原因啊?生成sid文件不是我程序里控制吧?换卡重新注册,程序应该在哪里控制? 37
4.98程序在手机上显示的名称,能随着手机语言切换自动变吗? 37
4.99 我们平台如何读取文件? 38
4.100 为什么游戏中调用mrc_initDefaultChn,游戏就挂掉了? 38
4.101 mrc_open,如果文件名是带路径的,且路径中的目录是不存在的,会不会把目录创建出来呢? 38
4.102 mrc_c2u,这个函数内部需要申请内存,需要使用者释放内存吗? 38
4.103 mrc_getLen函数能否在文件被打开时获取该文件的长度? 38
4.104 在模拟器上,我新建一个文件,缺省情况下会放到哪个目录? 39
4.105 斯凯的SDK支持响铃(手机内置铃声)吗? 39
4.106支持播放MID的同时振动吗? 39
4.107 MTK版本的游戏完全正常,SPR版本进入游戏,还没显示游戏主界面的时候,手机就自动重启,可能是什么原因? 39
一 引言
1.1编写目的
该文档主要将SKY SDK基本功能和开发中遇到的常见问题做出简要描述,让各个CP工程师通过查看该文档,能快速熟悉SDK相关功能以及到常见问题的解决方法。
1.2适用范围
本方案主要针对使用SDK的游戏应用,其他应用可参考实现。
1.3定义、首字母缩写词和缩略语
SDK:杭州斯凯网络科技有限公司的游戏开发环境。
1.4读者范围
各CP公司开发人员;本公司开发人员也可以参考。
二 基本功能
2.1 文字绘制的功能如何实现?是否支持描点功能?
1、绘制文字可以通过调用mrc_drawText或者mrc_drawTextEx函数来实现;
2、不支持描点功能,提供画点函数mrc_drawPointEx。
2.2 画图的功能如何实现?都支持哪些图片格式?
1、画图功能可以通过调用mrc_bitmapShowEx或者mrc_bitmapShow来绘制16bit和24bit的bmp图片,通过mrc_bmpShow函数绘制8bit bmp图片;
2、目前我们的SDK只支持bmp格式的图片,在进行mrp打包过程中,编译器对24bit的bmp图进行压缩成16bit的图片;
3、对于16bit的图片,SDK只支持565格式的;
2.3 音乐播放功能如何实现?都支持哪些音乐格式?是否支持暂停播放功能?
1、音乐播放功能通过调用mr_playSoundEx或者mrc_soundPlay函数来实现,通过调用mrc_soundStop或者mr_stopSoundEx函数来停止播放音乐;
2、目前SDK支持mid、wav和mp3等格式音乐文件;
3、SDK不支持音乐暂停播放功能,停止音乐播放以后,重新播放的时候是从头开
始播放。
2.4 定时器如何使用?定时器个数有限制吗?使用的时候有哪些实现注意的?定时器会延迟吗?定时器忘记删除会有什么后果?
1、在使用定时器之前,先需要通过调用mrc_timerCreate来创建一个定时器,然后通过调用mrc_timerStart函数来启动定时器,最后通过调用mrc_timerStop函数来停止定时器,当不再使用某定时器的时候,通过调用mrc_timerDelete函数来删除定时器;
2、定时器的个数没有限制;
3、在使用的定时器的时候,需要注意定时器的时间单位是毫秒,而不是秒,定时器时间不要小于80毫秒,时间太小不会提高游戏运行速度,反而会有负面影响;
4、由于SDK平台只有一个线程在运行,整个运行过程都是串行的,只有当前的函数执行完成以后才会触发定时器事件;
5、由于定时器是通过队列管理的,当不使用的定时器没有被删除,那么定时器队列会越来越大,会影响定时器调用时间的,因此不使用的定时器需要调用mrc_timerDelete函数来删除定时器。
2.5 手机的按键、触摸屏事件如何接收?支持长按键和组合键功能吗?触摸屏是否有move事件?
1、当触发按键和触摸屏事件的时候,SDK会回调mrc_appEvent函数,开发者需要自己实现mrc_appEvent函数来处理按键和触摸屏事件;
2、SDK中按键事件有两种类型,分别为按下事件和弹起事件,没有长按键事件,也没有组合键事件,开发者可以通过定时器来模拟实现长按键事件和组合键事件;
3、SDK中触摸屏事件有两种类型,分别为按下事件和弹起事件,没有move事件。(新的移植版本已支持move事件)
2.6 游戏运行过程中是否会被打断?打断时候和游戏恢复时候是如何触发的,需要处理哪些事情?
1、游戏运行过程中,当手机来电话、短信等事情,SDK会被打断;
2、当SDK被来电等外部事件打断以后,SDK会回调mrc_pause函数,开发者需要根据具体情况实现mrc_pause函数,例如停止播放音乐;当外部事件处理完成以后,SDK会回调mrc_resume函数,开发者需要恢复游戏,例如播放音乐和刷新游戏界面;当游戏被外部事件打断的时候,定时器会被自动暂停,当游戏恢复的时候,定时器会自动恢复。
2.7 游戏如何收费?都有哪些收费方法,有什么区别?是否有包月收费接口?
1、SDK中封装了游戏收费方法,在启动游戏的时候,调用mrc_initChargeOverSea函数来初始化收费模块,在收费的时候通过调用mrc_ChargeExOverSea来收费,退出游戏的时候通过调用mrc_releaseChargeOverSea来是否收费模块资源;
2、目前游戏的收费有两种,分别是注册收费和道具收费,它们的根本区别是注册收费的时候,SDK会在磁盘上写sid文件,而道具
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论