Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "基于二维表的游戏模型 HIC工具链在游戏中的应用."— Presentation transcript:

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

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

3 原始Excel表

4 生成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

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

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

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

8 序列化和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); });

9 默认值(与工作表同名的行) 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; }

10 运行时公式 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; }

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

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

13 代数数据类型 (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);


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

Similar presentations


Ads by Google