Anonia手机游戏项目创业软件详细设计说明书实例样本.docx
《Anonia手机游戏项目创业软件详细设计说明书实例样本.docx》由会员分享,可在线阅读,更多相关《Anonia手机游戏项目创业软件详细设计说明书实例样本.docx(110页珍藏版)》请在咨信网上搜索。
《Anonia》游戏详细设计阐明书 2024年9月 开发团队:Chem Block 学校:大连理工大学 重要开发人:鄢世阳 目录 1 引言 2 1.1 编写目 2 1.2 项目背景 2 1.3 定义 3 1.4 参照资料 4 2 总体设计 4 2.1 游戏剧情概述 4 2.2 软件构造 4 3 程序描述 5 3.1 界面模块 5 3.2 角色创立模块 30 3.3 交易模块 39 3.4 NPC模块 40 3.5 敌人模块 59 3.6 保存模块 89 3.7 音乐系统模块 91 3.8 测试要点 93 3.8.1 测试范畴 93 3.8.2 测试办法 93 文档名称:《Anonia》游戏详细设计阐明书 项目名称:Anonia艾诺尼亚历险记 项目负责人:鄢世阳 编写鄢世阳8月30日 校对所有小构成员9月1日 审核所有小构成员9月2日 批准刘苑星9月3日 开发单位:大连理工大学Chem Block团队 成员: 鄢世阳何达威刘苑星刘佳鑫李旭 1 引言 1.1 编写目 《Anonia》是一款开放式动作RPG游戏,它融合东西方奇幻世界背景,突破单一世界设定。本游戏以清新亮丽唯美风格为游戏画面,以国家之间冲突为游戏基调,强调创造一种让玩家互动生活虚拟世界,勉励玩家之间交流、对抗,实现以玩家为游戏真正创造者目。《Anonia》游戏设计初衷在于为青少年高压快节奏生活提供一种放松平台,这个阶段重要任务是在概要《Anonia》游戏设计书基本上,对概要设计中产生功能模块进行过程描述,设计功能模块内部细节,涉及算法和详细数据构造,为编写源代码提供必要阐明。 概要设计解决了《Anonia》游戏总体构造设计问题,涉及整个游戏构造、模块划分、模块功能和模块间联系等。详细设计则要解决如何实现各个模块内部功能,即模块设计。详细说,模块设计就是要为已经设定游戏模块各子系统设计详细算法,对实现细节作精准描述。将模块划分为界面、魔法、交易、战争等各种模块用算法和数据构造建立模块间联系,保证了游戏整体感。 1.2 项目背景 《Anonia》这款游戏是卡通渲染方式展示一种爱恨交织虚拟世界,她可以推动国内动漫游戏产业发展。国际动漫当前已形成了成熟产业链,它一方面通过卖动画票房和电视播出收入作为第一块收入,图书和音像收入为第二块,除了图书和音像制品以外,尚有大量衍生产品,重要体当前玩具、直销、商品和主题公园几大块。动漫作为一种新兴文化产业,从诞生之初就和高科技联系在一起,是高新技术发展产物。当今欧美、日、韩以强大品牌力量,高水准制作技术和健全市场运作成为动漫产业强国。美国、日本和英国动漫及其衍生产品已经成为国民经济中支柱性产业,韩国以超常速度发展动漫产业,规模仅次于美日。 年,全球数字内容产业产值预测将达 2228 亿美元,其中网络游戏业产值达800 亿美元,动画业产值达450 亿美元,与游戏、动漫业有关周边衍生产品产值则在5000 亿美元以上。 1)美国动漫产业。美国动画片通过长期发展,形成鲜明特点,在动画艺术上获得了辉煌成就,也是最初把动画片推向市场,并且形成产业规模国家。迪斯尼公司最具代表性,到 年已经制作了第44 部动画片,同步销售有关产品,形成一条完整动漫产业链。迪斯尼公司在海外也不断扩张,香港迪斯尼乐园已是全球第 11 个主题乐园。美国有 8 大动漫公司,是全世界最大动漫国家,这个行业每年收入超过 1000 亿美元。 2)日本动漫产业。日本动画片在欧美、东南亚以及国内均占有较大市场。当前全球播放动画节目约有60%是日本制作,漫画杂志和单行本发行量已占杂志和图书发行总量45%,动漫画互相渗入,日本电子游戏产品也得到了飞速发展,由此衍生出动画电影、玩具等产品,创下近1 万亿日元产业规模,同步也扩大了日本文化在世界影响力。 3)韩国动漫产业。韩国动漫产业在全球市场份额中不大,但发展势头强劲, 年产业规模仅为3200 亿韩元, 年将实现17000亿韩元目的。手机游戏被列入国家863筹划,中华人民共和国手机游戏市场规模为3.07亿元,全年手机游戏市场实现8.84亿元产值.诺达征询预测,随着WAP和JAVA/BREW等游戏业务进一步成熟,国内手机游戏市场规模达到13.28亿元,比增长56.7%,手机游戏市场将达到22.84亿元,比增长71.9%。,全球数字动漫产业产值已达2228亿美元,与动漫产业有关周边衍生产品产值则在5000亿美元以上,英国数字娱乐产业年产值占GDP7.9%,成为该国第一大产业。美国网络游戏业已持续4年超过好莱坞电影业,成为全美最大娱乐产业。日本游戏市场每年创造2万亿日元市值规模,动画产品出口值远远高于钢铁出口值。韩国动漫业产值占全球30%,已成为韩国国民经济六大支柱产业之一。从全球及重要国家来看,动漫产业已经成为一种庞大产业。 国内动漫总创收达117亿元人民币,国内动画片生产总量只有2.9万分钟,市场需求却在26.8万分钟,实际需求缺口达23万分钟,电视台严重感到动画资源局限性。在中华人民共和国青少年最爱慕动漫作品中,日本动漫占60%,欧美动漫占29%,而中华人民共和国原创动漫,涉及港台地区比例只有11%,明显落后于国外动漫产业发展步伐,整个中华人民共和国动漫产业仅处在初级发展阶段。在上半年,各地兴起了建设动漫产业基地,在有关扶持政策勉励下,投资动漫产业高潮。 1.3 定义 •Mysql:数据库管理软件 •Unity3D:跨平台游戏开发工具 •Android:运营环境 •C#:软件开发语言 •Visual Studio :编译工具 1.4 参照资料 《Unity3D\2D手机游戏开发》金玺曾著 2 总体设计 2.1 游戏剧情概述 主人公从高处坠落,醒来时发现自己身处在一种被白雪覆盖小镇,而自己是谁也不记得了。就这样,主人公为了找回自己失去记忆开始了一段奇妙旅行。 2.2 软件构造 软件使用Unity3D进行开发,运营平台是Android,并支持跨平台到其她各种系统平台。软件在PC端构架是.Net Framework 4.5。软件是以scence为基本,model上附着刚体性质,并与script想链接构成Prefab。 3 程序描述 3.1 界面模块 3.1.1底部物品栏 底部物品栏是手机RPG游戏必备要素,咱们使用Unity3DGUITexture功能进行编写。代码如下: using UnityEngine; using System.Collections; public class BottomBar :MonoBehaviour { private Vector2 defaultScreenRes;//Screen Resolution [System.Serializable] public class GUISetting { public Vector2 position; public Vector2 size; public Texture2D[] texture; } [System.Serializable] public class LabelSetting { public Vector2 position; public GUIStyle labelStyle; } [HideInInspector] public float currentCastTime; [HideInInspector] public float castTime; [HideInInspector] public bool showCastBar; public GUISetting expBar;//exp bar setting public LabelSetting expText;//exp text setting public GUISetting castBar;//cast bar setting private PlayerStatus playerStatus; // Use this for initialization void Start () { defaultScreenRes.x = 1920;//declare max screen ratio defaultScreenRes.y = 1080;//declare max screen ratio GameObject go = GameObject.FindGameObjectWithTag("Player"); //Find player playerStatus = go.GetComponent<PlayerStatus>(); } void OnGUI () { // Resize GUI Matrix according to screen size ResizeGUIMatrix(); if(!MessageBox.showMessageBox) { //Cast bar if(showCastBar) { GUI.BeginGroup(new Rect(castBar.position.x,castBar.position.y,castBar.size.x,castBar.size.y)); GUI.DrawTexture(new Rect(0,0,castBar.size.x ,castBar.size.y),castBar.texture[0]); GUI.BeginGroup(newRect(0,0,Convert(castBar.size.x,castTime,currentCastTime),castBar.size.y)); GUI.DrawTexture(new Rect(0,0,castBar.size.x,castBar.size.y),castBar.texture[1]); GUI.EndGroup(); GUI.EndGroup(); } //Exp bar GUI.BeginGroup(new Rect(expBar.position.x,expBar.position.y,expBar.size.x,expBar.size.y)); GUI.DrawTexture(new Rect(0,0,expBar.size.x ,expBar.size.y),expBar.texture[0]); GUI.BeginGroup(new Rect(0,0,Convert(expBar.size.x,playerStatus.expMax,playerStatus.status.exp),expBar.size.y)); GUI.DrawTexture(new Rect(0,0,expBar.size.x,expBar.size.y),expBar.texture[1]); GUI.EndGroup(); GUI.EndGroup(); //Exp text TextFilter.DrawOutline(new Rect(expText.position.x ,expText.position.y,1000 ,1000) ,Mathf.FloorToInt(playerStatus.status.exp).ToString() + "/" + Mathf.FloorToInt(playerStatus.expMax).ToString(),expText.labelStyle,Color.black,Color.white,2f); } // Reset matrix after finish GUI.matrix = Matrix4x4.identity; } void ResizeGUIMatrix() { // Set matrix Vector2 ratio = new Vector2(Screen.width/defaultScreenRes.x ,Screen.height/defaultScreenRes.y ); Matrix4x4 guiMatrix = Matrix4x4.identity; guiMatrix.SetTRS(new Vector3(1,1,1),Quaternion.identity,new Vector3(ratio.x,ratio.y,1)); GUI.matrix = guiMatrix; } float Convert(float maxWidthGUI,float maxValue,float curValue) //Calculate hp bar-mp bar { float val = maxWidthGUI/maxValue; float load = curValue*val; return load; } } 3.1.2命令菜单 命令菜单制作也是用了Unity3DOnGUI函数。 代码如下: using UnityEngine; using System.Collections; public class CommandMenu :MonoBehaviour { private Vector2 defaultScreenRes;//Screen Resolution [System.Serializable] public class ButtonSetting { public Vector2 position; public Vector2 size; public GUIStyle buttonStlye; } public ButtonSetting status,bag,equip,skill;//button setting // Use this for initialization void Start () { defaultScreenRes.x = 1920;//declare max screen ratio defaultScreenRes.y = 1080;//declare max screen ratio } // Update is called once per frame void OnGUI () { // Resize GUI Matrix according to screen size ResizeGUIMatrix(); if(!MessageBox.showMessageBox) { //when click button status if(GUI.Button(new Rect(status.position.x,status.position.y,status.size.x,status.size.y),"",status.buttonStlye)) { GUI_Menu.instance.OpenShortcutMenu("Status"); } //when click button inventory if(GUI.Button(new Rect(bag.position.x,bag.position.y,bag.size.x,bag.size.y),"",bag.buttonStlye)) { GUI_Menu.instance.OpenShortcutMenu("Inventory"); } //when click button equipment if(GUI.Button(new Rect(equip.position.x,equip.position.y,equip.size.x,equip.size.y),"",equip.buttonStlye)) { GUI_Menu.instance.OpenShortcutMenu("Equipment"); } //when click button skill if(GUI.Button(new Rect(skill.position.x,skill.position.y,skill.size.x,skill.size.y),"",skill.buttonStlye)) { GUI_Menu.instance.OpenShortcutMenu("Skill"); } } // Reset matrix after finish GUI.matrix = Matrix4x4.identity; } void ResizeGUIMatrix() { // Set matrix Vector2 ratio = new Vector2(Screen.width/defaultScreenRes.x ,Screen.height/defaultScreenRes.y ); Matrix4x4 guiMatrix = Matrix4x4.identity; guiMatrix.SetTRS(new Vector3(1,1,1),Quaternion.identity,new Vector3(ratio.x,ratio.y,1)); GUI.matrix = guiMatrix; } } 3.1.3死亡窗口 角色死亡时会显示死亡窗口,代码如下: using UnityEngine; using System.Collections; public class DeadWindow :MonoBehaviour { [System.Serializable] public class GUISetting { public Vector2 position; public Vector2 size; public Texture2D texture; } [System.Serializable] public class ButtonSetting { public Vector2 position; public Vector2 size; public GUIStyle buttonStlye; } private Vector2 defaultScreenRes;//Screen Resolution public GUISetting cautionWindow;//window setting public ButtonSetting buttonReturn,buttonQuit;//button setting public string sceneQuitGame;//name scene quit when you select quit button //Private variable private HeroController controller; public static bool enableWindow;//check enable disable window // Use this for initialization void Start () { defaultScreenRes.x = 1920;//declare max screen ratio defaultScreenRes.y = 1080;//declare max screen ratio GameObject go = GameObject.FindGameObjectWithTag("Player"); //Find player controller = go.GetComponent<HeroController>(); } void OnGUI() { // Resize GUI Matrix according to screen size ResizeGUIMatrix(); if(enableWindow) { //draw window GUI.DrawTexture(new Rect(cautionWindow.position.x,cautionWindow.position.y,cautionWindow.size.x,cautionWindow.size.y),cautionWindow.texture); //when click return if(GUI.Button(new Rect(buttonReturn.position.x,buttonReturn.position.y,buttonReturn.size.x,buttonReturn.size.y),"",buttonReturn.buttonStlye)) { controller.Reborn(); } //when click quit game if(GUI.Button(new Rect(buttonQuit.position.x,buttonQuit.position.y,buttonQuit.size.x,buttonQuit.size.y),"",buttonQuit.buttonStlye)) { Invoke("LoadScene",0.3f); } } // Reset matrix after finish GUI.matrix = Matrix4x4.identity; } void ResizeGUIMatrix() { // Set matrix Vector2 ratio = new Vector2(Screen.width/defaultScreenRes.x ,Screen.height/defaultScreenRes.y ); Matrix4x4 guiMatrix = Matrix4x4.identity; guiMatrix.SetTRS(new Vector3(1,1,1),Quaternion.identity,new Vector3(ratio.x,ratio.y,1)); GUI.matrix = guiMatrix; } void LoadScene() { Application.LoadLevel(sceneQuitGame); enableWindow = false; } } 3.1.4任务系统界面 作为rpg游戏里必要有任务系统,代码如下: using UnityEngine; using System.Collections; public class QuestWindow :MonoBehaviour { [System.Serializable] public class GUISetting { public Vector2 position; public Vector2 size; public Texture2D texture; } [System.Serializable] public class ButtonSetting { public Vector2 position; public Vector2 size; public GUIStyle buttonStlye; } [System.Serializable] public class LabelSetting { public Vector2 position; public GUIStyle style; public bool enableStroke; public Color strokeColor; } private Vector2 defaultScreenRes;//Screen Resolution public GUISetting questWindow;//window setting public ButtonSetting buttonAccept,buttonCancel;//button setting public LabelSetting titleFont,detailFont,rewardLabel,itemNameFont,targetLabel,targetFont; [HideInInspector] public HeroController controller;//script controller public static bool enableWindow;//check enable/disable window public static bool enableButtonAccept;// check enable/disable accept button private Quest_Data questData; private Item_Data itemData; private Monster_Data monsterData; [Multiline] public static string detailQuest; public static string titleQuest; public static Vector2 condition; public static Vector2 reward; private int questID; private string itemRewardName; private string conditionName; // Use this for initialization void Start () { enableWindow = false; defaultScreenRes.x = 1920;//declare max screen ratio defaultScreenRes.y = 1080;//declare max screen ratio GameObject go = GameObject.FindGameObjectWithTag("Player"); //Find player controller = go.GetComponent<HeroController>(); questData = GameObject.Find("QuestData").GetComponent<Quest_Data>(); itemData = GameObject.Find("Item_Data").GetComponent<Item_Data>(); monsterData = GameObject.Find("MonsterData").GetComponent<Monster_Data>(); } void OnGUI() { // Resize GUI Matrix according to screen size ResizeGUIMatrix(); if(enableWindow) { if(!controller.dontMove) controller.dontMove = true; //Draw window GUI.DrawTexture(new Rect(questWindow.position.x,questWindow.position.y,questWindow.size.x,questWindow.size.y),questWindow.texture); if(enableButtonAccept) { //Draw accept button if(GUI.Button(new Rect(buttonAccept.position.x,buttonAccept.position.y,buttonAccept.size.x,buttonAccept.size.y),"",buttonAccept.buttonStlye)) { SoundManager.instance.PlayingSound("Accept_Quest"); NpcSetup.resetMessageBox = true; NpcSetup.disableNext = false; MessageBox.showMessageBox = false; MessageBox.showNameTag = false; MessageBox.showFace = false; questData.StartQuest(questID); controller.dontMove = false; controller.dontClick = false; enableButtonAccept = false; enableWindow = false; } //Draw cancel button if(GUI.Button(new Rect(buttonCancel.position.x,buttonCancel.position.y,buttonCancel.size.x,buttonCancel.size.y),"",buttonCancel.buttonStlye)) { NpcSetup.resetMessageBox = true; MessageBox.showMessageBox = false; MessageBox.showNameTag = false; MessageBox.showFace = false; NpcSetup.disableNext = false; controller.dontMove = false; enableButtonAccept = false; enableWindow = false; } } //Title Quest if(titleFont.enableStroke) TextFilter.DrawOutline(new Rect(titleFont.position.x ,titleFont.position.y,1000 ,1000) ,titleQuest,titleFont.style,titleFont.strokeColor,titleFont.style.normal.textColor,2f); else GUI.Label(new Rect(titleFont.position.x ,titleFont.position.y,1000 ,1000),titleQuest,titleFont.style); //Detail Quest if(detailFont.enableStroke) TextFilter.DrawOutline(new Rect(detailFont.position.x ,detailFont.position.y,1000 ,1000) ,detailQuest,detailFont.style,detailFont.strokeColor,detailFont.style.normal.textColor,2f); else GUI.Label(new Rect(detailFont.position.x ,detailFont.position.y,1000 ,1000),detailQuest,detailFont.style); //Target Label if(targetLabel.enableStroke) TextFilter.DrawOutline(new Rect(targetLabel.position.x ,targetLabel.position.y,1000 ,1000) ,"Target",targetLabel.style,targetLabel.strokeColor,targetLabel.style.normal.textColor,2f); else GUI.Label(new Rect(targetLabel.position.x ,targetLabel.position.y,1000 ,1000),"Target",targetLabel.style); //Target if(targetFont.enableStroke) TextFilter.DrawOutline(new Rect(targetFon- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Anonia 手机 游戏 项目 创业 软件 详细 设计 说明书 实例 样本
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文