基于二维表的游戏模型 HIC工具链在游戏中的应用.

Slides:



Advertisements
Similar presentations
单元二:面向对象程序设计 任务二:借书卡程序设计.
Advertisements

第三讲 面向对象(上).
JAVA 编 程 技 术 主编 贾振华 2010年1月.
项目7 面向对象高级.
项目6 通用堆栈.
校园信息管理系统 河北科技大学网络中心 2000/4/10.
四資二甲 第三週作業 物件導向程式設計.
徵收苗栗市福全段147、1588及文心段10、11地號等4筆土地之
项目:贪吃蛇游戏设计 工作任务一:系统设计(system design) 工作任务二:豆类(Bean)设计
讲 义 大家好!根据局领导的指示,在局会计科和各业务科室的安排下,我给各位简要介绍支付中心的工作职能和集中支付的业务流程。这样使我们之间沟通更融洽,便于我们为预算单位提供更优质的服务。 下面我主要从三方面介绍集中支付业务,一是网上支付系统,二是集中支付业务流程及规定等,
按按按高互動遙控教學系統.
中国人民公安大学经费管理办法(试行) 第一章总则 第四条:“一支笔” “一支笔”--仅指单位主要负责人。负责对本 单位的经费进行审核审批。
设计模式可以帮助我们改善系统的设计,增强 系统的健壮性、可扩展性,为以后铺平道路。
第二章 JAVA语言基础.
類別與物件 Class & Object.
第7单元 面向过程编程—— 继承与多态.
Ch07 介面與多重繼承 物件導向程式設計(II).
创意源自激情,技术成就梦想 畅翼创新俱乐部 2012年春俱乐部第三次技术培训 赵程.
AOP实践 演讲人:陈思荣.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
Go语言就业指南 岳东卫 技术总监 讲师的CSDN博客地址
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
第八章 C#高级编程.
Signutil.
Derived Class 前言 衍生類別的定義 單一繼承 public, protected, 和 privated 基底類別
Java 程式設計 講師:FrankLin.
本單元介紹何謂變數,及說明變數的宣告方式。
第六章 继承性和派生类 胡昊 南京大学计算机系软件所.
程式設計實作.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
Java程序设计 第9章 继承和多态.
辅导课程六.
C#面向对象程序设计 $7 继承和多态性.
第6章 继承和接口设计 6.1 继 承 6.2 多态性 6.3 抽象类 6.4 接口 6.5 接口在集合排序中的应用.
視窗程式設計 (Windows Programming)
例外處理與 物件序列化(Exception Handling and Serialization of Objects)
郑晟 昆明理工大学 云南省计算机技术应用重点实验室
C/C++/Java 哪些值不是头等程序对象
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第六章 属性、索引器、委托和事件.
第7章 繼承/多型/介面 注意: 本投影片僅供本書上課教師使用,非經同意請勿上網轉載或供拷貝.
SOA – Experiment 2: Query Classification Web Service
辅导课程八.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
$9 泛型基础.
C#程序设计基础 $3 成员、变量和常量.
保留字與識別字.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
微信商城系统操作说明 色卡会智能门店.
授課管理系統 如何複製第一學期課表至第二學期
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
第二章 Java语法基础.
資料結構簡介 綠園.
静电场中的无限大问题 物理无限远: 1、并非仅指场点到“无限远” 处的位移为无穷大
第九章 物件導向-進階.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
企業籌資更便捷 大眾投資更穩當 新版公開資訊觀測站操作介紹 2013年10月.
臺北市99學年度 輔導分發選習國民中學技藝教育學程 就讀高中職實用技能學程宣導說明會
项目4.4: 工作表格式化 项目描述 能力目标 与WORD一样也对EXCEL的数据单元格设置边框和底纹,使工作表更加美观漂亮;若使用条件格式还能将符合条件的单元格数据指定格式,以便更好地比较和分析数据;设置页面布局、打印范围、打印参数将工作表打印出来。 掌握对单元格设置边框和底纹的基本操作与应用,
本章主題 C++的程式結構 資料型態與宣告 算術運算 簡易的輸入輸出指令 程式編譯(Compile)的過程與原理.
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
辅导课程十二.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
大綱 一.受試者之禮券/禮品所得稅規範 二.範例介紹 三.自主管理 四.財務室提醒.
第2章 Java语言基础.
學生通訊錄 Excel 試算表的基本操作 06 「通訊錄」是群體中進行聯 絡、互通訊息很重要的資料。 製作一份精美且資訊豐富詳 實的通訊錄,對於 Excel 來 說是一件適合的作品。
判斷(選擇性敘述) if if else else if 條件運算子.
第二章 Java基本语法 讲师:复凡.
Presentation transcript:

基于二维表的游戏模型 HIC工具链在游戏中的应用

把CSV导入Haxe,然后…… 编译成C#、Java、Flash、HTML5、C++、PHP、Python…… 基本功能

原始Excel表

生成C# // 每行生成一个静态字段 // 每个工作表生成一个类 public class Quest { public static readonly BasicQuest Bq1; public static readonly BasicQuest Bq2; public static readonly BasicQuest Bq3; public static readonly BasicQuest Bq4; public static readonly BasicQuest Bq5; public static readonly BasicQuest Bq6; public static readonly DailyQuest Dq5001; public static readonly DailyQuest Dq5003; public static readonly QuestType ZhuXian; public static readonly QuestType ZhiXian; public static readonly QuestType RiChang; } public class BasicQuest { public QuestType Type { get; } public string Name { get; } public bool Deletable { get; } public int BestLevel { get; } public string Description { get; } public BasicQuest Precondition { get; } public int MaxLevel { get; } public int MinLevel { get; } } public class DailyQuest ... public class QuestType

日常开发流程 游戏设计师 游戏工程师 修改xlsx文件 保存xlsx文件 (插件自动导出csv文件) 运行构建脚本 sbt compile 重启或热更新游戏服务器 重启游戏客户端 测试 提交xlsx和csv文件 svn commit 更新二维表 svn update 运行构建脚本 sbt compile 直接用C#/Scala调用二维表的数据模型 myTextArea.Text = public Quest.Bq1.Description; 调试

基本用法差异 HIC 大剑配置表 有布尔类型 允许空行和注释 使用字母ID 静态类型 无布尔类型 禁止空行和注释 使用数字ID 动态类型 用y/n表示 允许空行和注释 // 这是注释 使用字母ID Bq1, Dq5001, ... 静态类型 由HIC编译期工具检查类型 无布尔类型 用0/1模拟 禁止空行和注释 使用数字ID 1, 5001, … 动态类型 保存为动态类型Json,运行时检查类型

策划不求人 程序少操心 进阶功能

序列化和RPC // 用Haxe定义RPC interface IQuestService { // 领取任务 function acceptBasicQuest(basicQuest:Quest.BasicQuest):Future<Reward>; } // C#中把配置表项作为请求参数,调用RPC IQuestService service = bcpRpcSession.outgoingService<IQuestService>(); service.acceptBasicQuest(Quest.Bq1).onComplete(delegate(Reward response) Debug.Print(response); });

默认值(与工作表同名的行) public class Quest { public static readonly BasicQuest Bq1 = new Bq1(); public static readonly BasicQuest Bq2 = new Bq2(); } public class BasicQuest public virtual bool Deletable get { return false; } // Bq1使用了默认值 public class Bq1 : BasicQuest {} public class Bq2 : BasicQuest public override bool Deletable get { return true; }

运行时公式 public class BasicQuest { public abstract int MinLevel { get; } public virtual int MaxLevel get { return MinLevel+5; } } public class Bq6 : BasicQuest public override int MinLevel get { return 10; } public override int MaxLevel get { return MinLevel+10; }

字符串插值 public class Bq6 : BasicQuest { public override int BestLevel get return 15; } public override string Description return "赶紧去吧!建议在" + BestLevel.ToString() + “级以前完成!";

函数 public class Bq6 : BasicQuest { public override int BestLevel get return 15; } public override string description( string playerName, bool isMale) return playerName + (isMale?"先生":"小姐") + "赶紧去吧!建议在" + BestLevel.ToString() + “级以前完成!";

代数数据类型 (Algebraic Data Type) public class CompletionCondition {} public class ShaGuai : CompletionCondition { public Character.Monster monster; public int quantity; public ShaGuai(Character.Monster m, int q) this.monster = m; this.quantity = q; } public class Bq2 : BasicQuest public CompletionCondition completionCondition get return new ShaGuai(Character.Monster1, 5);