
.NET
码农CGGG
现在是一个游戏开发者
展开
-
在Unity中,PlayableBehaviour如何获取片段的开始和结束时间?
在Unity的timeline相关自定义代码编写中,有时候会需要在PlayableBehaviour中获取TimeClip的开始和结束时间,通过PlayableBehaviour提供的接口我们会发现找不到对应的属性或者方法。这篇回答中有详细解释:How to access the clip timing (start, end time) in PlayableBehaviour functions这里附代码实现方式,需要在Track、Asset和Playable通过三次传递:[TrackClipTy原创 2022-03-03 09:50:59 · 7580 阅读 · 0 评论 -
unity将.lua文件作为TextAsset加载
在unity中使用lua,默认情况下如果需要加载资源,则需要重命名扩展名为.lua.txt但这需要在很多编辑器中(比如rider)重新配置来使用lua语法。并且在使用代码动态加载时,既无法使用TextAsset,由无法使用Binary模式加载。解决方法:我们可以增加一个importer的方式,将所有.lua的文件作为TextAsset导入,就可以解决本问题using UnityEngine;using System.IO;using UnityEditor.AssetImporters;[Sc原创 2021-08-02 18:19:44 · 1498 阅读 · 0 评论 -
如何从0开始开发一个实时联机游戏
这是一篇严肃的联机游戏开发入门介绍,本文所述代码开源,文末可获得地址。关于游戏的实时联机对战,目前是很多游戏开发者研究课题,也延伸出了很多概念,如“状态同步”、“帧同步”,目前很多游戏开发框架也提供了这样的开发一些理念和组件,比如unity的The High Level API等等。本文不希望传授如何用框架、服务端引擎等来搭建一套商业级的框架。而是希望从最基本的网络通信原理开始,一点点的进...原创 2018-07-15 16:02:28 · 19146 阅读 · 5 评论 -
原创游戏,金庸群侠传X 0.5发布
web单机游戏,无需下载,完全免费,点击即可开始游戏。地址:点击这里开始游戏 “飞雪连天射白鹿,笑书神侠倚碧鸳”。曾几何时,你是否沉浸在武侠世界为您带来的江湖恩怨情仇?曾几何时,你是否幻想过自己是否也能成为一代大侠?曾几何时,你是否也在经典游戏《金庸群侠传》中闯荡过?你是否也挥过令人蛋疼的野球拳?是否挑战过令人振奋的华山论剑?是否血虐过十大善人/十大原创 2014-05-18 14:01:24 · 21033 阅读 · 1 评论 -
unity异步从外部文件加载音频和图片
标准的从Resources和Assetbundle读取这里不做介绍了,主要的应用场景是从互联网http服务器 或者从本地的文件夹读取资源。音频加载逻辑:音频是可以直接读取文件后同步返回一个AudioClip的句柄,然后开始加载,加载到可以播放的时候,即开始播放。方法: WWW www = new WWW(ModManager.ModBaseUrl + p原创 2015-12-18 16:06:05 · 10147 阅读 · 0 评论 -
Lua for Silverlight
最近在学习unity的时候,看到guon原创 2014-11-10 00:47:00 · 1000 阅读 · 0 评论 -
silverlight开发游戏中的大坑
博主在使用silverlight在开发游戏中碰到的大坑,给大家分享以防重蹈覆辙。原创 2014-06-24 11:50:30 · 2978 阅读 · 0 评论 -
原创游戏 - 金庸群侠传X0.4发布
经过N长时间的努力,一直业余时间做的小游戏终于发布到0.4版本了,呱唧呱唧一下~游戏首页地址:点击打开链接“飞雪连天射白鹿,笑书神侠倚碧鸳”。曾几何时,你是否记得那个闯荡金庸江湖世界,从一个江湖小混混成长为一代大侠的小虾米——你是否也挥过令人蛋疼的野球拳?是否挑战过令人振奋的华山论剑?是否血虐过十大善人/十大恶人?…… 如原创 2014-01-16 00:47:49 · 15896 阅读 · 23 评论 -
金庸群侠传资源压缩数据结构研究
金庸群侠传是智冠科技90年代出品的精品DOS游戏, 其资源压缩包格式紧凑而科学,这里我们一起学习一下其数据结构。并且编写一个能够读取解析它的程序, 以下是我对 Hdgrp资源文件解包的运行结果展示下面我们看一下资源类型: 其资源包括 idx和grp文件,idx记录了各个资原创 2012-03-12 12:25:49 · 3387 阅读 · 0 评论 -
wcf找不到服务端问题解决
WCF服务端启动一切OK,但在客户端引用服务死活都找不到。代码什么的都也没报错,最后发现我提供的接口和回调接口中有相同名的函数,即会导致该问题。将函数名修改,问题解决。异常诡异,MARK 一下。原创 2012-02-17 14:51:51 · 1452 阅读 · 1 评论 -
MVVM实时呈现C/S架构
使用WPF推崇的MVVM模式,是MVC模式的一种变体。以数据绑定为核心的思想,可以使得在开发中,数据组织变得十分便利。这里我向大家展示我在一个项目中基于MVVM的实时呈现C/S架构设计,可以实现任何一个客户端修改数据,即立即在所有客户端及数据持久层同步。原创 2011-10-11 16:33:09 · 2355 阅读 · 0 评论 -
lua遍历调用C#泛型List、IEnumberable、Dictionary
在使用lua的时候,我们经常需要调用遍历调用C#中的泛型结构(诸如List、IEnumberable、Dictionary)。 在LUA中最通用的遍历方法是针对table的调用,所以我们可以将C#中的数据结构转换为lua table原创 2015-12-25 15:38:17 · 12459 阅读 · 0 评论 -
《江湖X》开发笔谈 - 热更新框架
前言大家好,我们这期继续借着我们工作室正在运营的在线游戏《江湖X》来谈一下热更新机制以及我们的理解和解决方案。这里先简单的介绍一下热更新的概念,熟悉这部分的朋友可以跳过,直接看我们的方案。热更新的概念首先,“热”是相对于“冷”而言的。所谓热更新,即不更新游戏安装包体的情况下,在游戏或游戏启动界面直接在线更新游戏包体的机制。一般的在线游戏发布后,由于有需要修复BUG、发布更新内容等一系列需要,需要能够原创 2016-12-08 23:45:33 · 2210 阅读 · 0 评论 -
.NET软件运行架构 之 打破编译器的界限
之前在学校的时候,接触到的编程语言都是解释型(如basic)或者编译型(如C)。其有严格的compile-time与run-time的界限,基于该语言开发的程序员都不用关心底层的具体编译相关实现,最多也就调整一下编译设置,如linux下gcc的makefile等。 由于近些年的所谓“平台”越来越多,所以语言越来越强调跨平台性。于是我们可以看到来自sun公司一个伟大的发明——JA...原创 2010-08-27 12:54:53 · 127 阅读 · 0 评论 -
silverlight 动画自管理
在GDE-X开发过程中需要对有的动画片段进行集中管理——可以归类到任务池结构。 一些动画需要启动后,按照一定的帧顺序展现,在展现完毕之后从画布中清除并释放所占用资源。 silverlight中对于storyboard等提供completed事件,在动画结束的时候回调。 若这种动画会同时出现很多个,则回调的时候需要拿到具体其对应的那个释放函数。这样若单独维护其成员变量就行不...原创 2010-08-27 12:49:47 · 88 阅读 · 0 评论 -
silverlight 动画自管理
在GDE-X开发过程中需要对有的动画片段进行集中管理——可以归类到任务池结构。 一些动画需要启动后,按照一定的帧顺序展现,在展现完毕之后从画布中清除并释放所占用资源。 silverlight中对于storyboard等提供completed事件,在动画结束的时候回调。 若这种动画会同时出现很多个,则回调的时候需要拿到具体其对应的那个释放函数。这样若单独维护其成员变量就行不...原创 2010-08-27 12:49:31 · 98 阅读 · 0 评论 -
WPF跨线程操作GUI控件
今天在实验Lua+WPF的时候碰到一个问题:我在主线程中写的LUA虚拟机的 dofile,但当我要令LUA脚本执行阻塞的时候,同时也会阻塞UI线程。 于是我把对LUA的接口挪到另一个单独的后台线程中,专门负责与LUA脚本的交互。编译一切正常,运行时THROW了异常,说不能在非创建UI元素的线程中改变UI元素属性。。 查了一下,C#就是这种机制,因为其GUI系统底层是内部单线...2010-08-27 12:45:14 · 163 阅读 · 0 评论 -
封装Lua for C#
为了搞懂LUA在我们的GDEX中到底怎么用,我决定研究一下如何比较好的在WPF里封装一个基于lua的APP framework。 今天先对Lua for C#进行了一次简单的封装。在C#下用过Lua的人都知道,用C#实现一个函数之后和LUA绑定,需要用到Lua类的RegisterFunction方法。 在函数很少的情况下很好用,但是若需要绑定C#里成百上千个函数,则麻烦了,添...2010-08-27 12:43:38 · 191 阅读 · 0 评论 -
WPF中WebBrowser注入javascript脚本
WPF的WebBrowser和WinForm的WebBrowser有一定区别。 要向其中注入javascript脚本,经过本人试验,下面一条路可以走通: mshtml.HTMLDocument htmlDoc = Browser.Document as mshtml.HTMLDocument;var head = htmlDoc.getElementsByTagName(...2010-08-27 11:47:29 · 414 阅读 · 0 评论 -
.NET下WebBrowser的一个BUG以及其替代品——geckofx
今天研究一个小问题,在C#的WebBrowser下打开奇艺网的视频,经常整个FLASH就偏了,进度条控制条什么的都没有。要全屏一下然后还原才能解决这个问题。 如下,图1为webbrowser打开,图2为IE8打开。webbrowser中整个偏了,并且没有控制条。 然后试了一下用各种基于微软Webbrowser控件的浏览器都有该问题。。用VS2010 建winform...原创 2010-08-27 11:24:23 · 301 阅读 · 0 评论 -
silverlight中获取网页代码示例
在silverlight中如果要跨域访问,则需要在被访问网站的根目录下添加策略文件crossdomain.xml。内容如下(可以更细致配置,可以查阅相关资料): <?xml version="1.0"?><!-- http://localhost/crossdomain.xml --><cross-domain-policy> <...原创 2010-08-27 11:23:34 · 155 阅读 · 0 评论 -
C# 简单任务池
今天编写一个异步通信框架的,异步派发任务,单路并发,与直接INVOKE相比的好处是可以使任务的执行代价根据时间均匀化,请看代码 public class ServiceTask { public ServiceTask(Actio原创 2011-08-20 22:16:31 · 2053 阅读 · 2 评论 -
WCF序列化反序列化数据数组超限 解决方式
WCF默认配置文件中,给定的数组大小为65536,若传输数据数组元素超过该数,则会异常。解决方式:服务端增加配置原创 2011-08-31 15:49:08 · 2816 阅读 · 0 评论 -
silverlight超小游戏开发包SmallGameLib(一)—— 技术简介
<br />SmallGameLib是我自己这两天学习silverlight,通过对昨天编写的“气球人”游戏代码重构及解偶,开发出一个超级轻量级的小游戏开发包,<br />现在功能还非常薄弱,不过架构已基本形成,可以使用它进行一些超小型游戏的快速开发。<br /> <br />本文主要对该游戏开发包进行架构介绍与分析,为广大尚未入门的游戏开发者提供一个构建属于自己的游戏框架的思路。与此同时,我将继续完善这个框架,并且使用这个框架开发更多的示例游戏。<br /> <br />1。 为什么需要开发包?<br /原创 2010-07-01 15:46:00 · 1927 阅读 · 4 评论 -
silverlight超小游戏开发包SmallGameLib(二)—— 一个最简单的DEMO
<br /> 这次我们来基于 SmallGameLib构建一个最简单的游戏DEMO。<br />我们把它叫做walkMan,基本功能就是 玩家可以控制一个角色在屏幕上 上下左右 四个方向行走。<br /> <br />截图如下:<br /> <br /><br /> <br />下面一步步来构建我们的DEMO:<br /> <br />我们先建立工程,导入SmallGameLib源码。(为何不以dll的形式发布?因为代码实在没多少,所以我们以源码形式发布更加方便)<br /> <br /><br /> <b原创 2010-07-01 17:07:00 · 1290 阅读 · 0 评论 -
silverlight超小游戏开发包SmallGameLib(三)—— Mouse终极大特训
<br />继续使用咱们的SmallGameLib开发!<br />这次我们做一个玩家通过鼠标控制一只老鼠,躲避来自四面八方的小虫的攻击。<br />若被小虫碰到,则Game Over。<br /> <br />整个游戏分为3个界面,<br /> <br />1。 难度选择<br />2。 游戏主界面<br />3。 GAMEOVER,给出得分和评价。<br /> <br /><br /> <br /> <br />难度越大,则小虫越多。<br /> <br />首先导入我们的SmallGameLib的各个原创 2010-07-01 20:27:00 · 1348 阅读 · 3 评论 -
silverlight小游戏——气球人
<br />今天看到cnblog上nowpaper大神的众文章,及其silverlight MMORPG游戏介绍,<br />本来打算最近转向研究一下FLASH的,于是顿时又对silverlight拾起了信心。<br />是金子总能发光的,还是用熟悉的平台做我的游戏吧!绕来绕去又回到了silverlight上。<br /> <br />于是今天参考其flyer相关文章,自己做了一个小游戏。<br />最近各种事情太忙,没时间静下来继续我的GDE,所以还是先做做小游戏练练手把。打算先做一定量,积累一下自己在游原创 2010-06-30 20:44:00 · 1310 阅读 · 1 评论 -
.NET软件运行架构 之 打破编译器的界限
之前在学校的时候,接触到的编程语言都是解释型(如basic)或者编译型(如C)。其有严格的compile-time与run-time的界限,基于该语言开发的程序员都不用关心底层的具体编译相关实现,最多也就调整一下编译设置,如linux下gcc的makefile等。 由于近些年的所谓“平台”越来越多,所以语言越来越强调跨平台性。于是我们可以看到来自sun公司一个伟大的发明——JA原创 2010-04-06 12:31:00 · 855 阅读 · 0 评论 -
C#轻量级XML数据载入器
首先请原谅我实在不熟悉C#,今天碰到个问题想使用C#从XML中解析数据,然后……太弱的我老也搞不定各种细节,于是自己封了一个类,给自己使吧。 using System;using System.Collections.Generic;using System.Linq;using System.Xml.Linq;namespace GDE_XMLLoader原创 2010-04-06 15:47:00 · 1201 阅读 · 0 评论 -
GDE-X开发进展 任务调度机制实现
在之前的设计中有提到,游戏过程就是一个有限状态机。而之前状态机我们已经实现,我们在此之上实现之前提到的驱动级任务及临时任务的概念。 我们可以认为 地图及场景切换 是我们的驱动级任务。而战斗、弹出窗口、小游戏等是游戏中的临时任务。 对于我们的游戏引擎,必须能够方便的添加新的场景、随时启动子任务。而这一切在基于我们的引擎开发的时候不应该再要考虑架构上的资源管理、内存管理等问题。原创 2010-04-15 14:19:00 · 1425 阅读 · 0 评论 -
关于Interface与纯虚函数在设计中的区别
因为之前一直做C++,没有特别研究过Java、C#中的Interface概念。在看设计模式的时候,也弄得一知半解的。 今天在做GDE-X过程中,我想定义一个类似于 c++的纯虚函数的,派生类必须实现的函数。然后我发现在C#中,使用abstract(纯虚函数)和Interface(接口)都可以实现这个概念,于是甚感迷惑,请教了一下同事,终于弄懂了设计上的不同概念。 如果光从实现上原创 2010-04-15 10:49:00 · 3327 阅读 · 0 评论 -
silverlight & C#实验成果,GDE-silverlight准备开始启动
GDE-silverlight是我和几个朋友准备在silverlight上开发一款金庸群侠传X版的游戏引擎部分。之前一直没鼓起干劲搞,这个周末终于得空,把silverlight的几个基本功能自己动手实验了一下。基本弄明白了,准备开始鼓起干劲把GDE-silverlight完成! 感觉silverlight的UI开发还是比之前HGE好多了……之前那个呼呼累啊,梦魇~ 非常简单的测原创 2010-04-12 10:16:00 · 1225 阅读 · 0 评论 -
WPF跨线程操作GUI控件
今天在实验Lua+WPF的时候碰到一个问题:我在主线程中写的LUA虚拟机的 dofile,但当我要令LUA脚本执行阻塞的时候,同时也会阻塞UI线程。 于是我把对LUA的接口挪到另一个单独的后台线程中,专门负责与LUA脚本的交互。编译一切正常,运行时THROW了异常,说不能在非创建UI元素的线程中改变UI元素属性。。 查了一下,C#就是这种机制,因为其GUI系统底层是内部单线原创 2010-05-09 21:07:00 · 3094 阅读 · 0 评论 -
太丑陋了!!!!C# + Lua第一天研究成果
今天开始研究WPF + Lua。 总的来说感觉被虐了……主要是WPF的UI玩不转。 简单来说,WPF里调Lua这都很好实现。。问题是!!!我想在Lua的一条指令里实现 一个对UI控件的操作,然后阻塞在对鼠标的响应上。。(就是有鼠标响应之后再执行下一条语句) 这个花了我一晚的时间……而且还是非常非常丑陋的实现。。基本原理和我之前用HGE实现UI渲染机制同出一辙。。原创 2010-05-10 00:26:00 · 3863 阅读 · 0 评论 -
通过XMLRPC简单构建 python服务端和C#客户端通信框架
python服务端:使用SimpleXMLRPCServer代码如下:from SimpleXMLRPCServer import SimpleXMLRPCServerdef getTest(): return 'test message'原创 2011-08-26 17:08:58 · 3953 阅读 · 0 评论 -
改造apache的开源日志项目来实现 分布式日志收集系统
<br /> <br />概述:<br /> <br />在分布式系统中,经常需要采集各个节点的日志,然后统一分析。<br />本文提供一种简单的方案,本文采用开源日志项目 + 统一数据库结构的方式,在各个开发环境中,提供统一的配置及调用方法,所有的日志均记录在日志服务器中,可以追踪查询任意一个系统节点上任意应用的任意线程的运行状况。<br /> <br /> <br />考究现在比较流行的apache的开源日志项目log4j以及它在其他平台的衍生产物(log4net log4py等)。其由appender原创 2010-11-11 16:42:00 · 7514 阅读 · 1 评论 -
C#一个singleton的通用实现
<br /> <br /> public class Singleton<T> where T : new() { public static T Instance { get { return SingletonCreator.instance; } } class SingletonCreator { internal sta原创 2010-12-09 23:53:00 · 3312 阅读 · 1 评论 -
用C#搭建MSN机器人平台
<br />由于MSN本身协议开源,于是基于其开发各种插件或者应用成为可能。<br />本文旨在设计&展示如何用.NET搭建一个公共的MSN平台。其基础功能包括:<br /> <br />1. 提供一个MSN机器人发布接口,任何用户可以使用该接口令MSN机器人向其他联系人发布信息。<br />2. 提供一个MSN发布接口,任何用于可以使用该接口发布自己的MSN信息。<br /> <br />当然该平台也可以在MSN协议允许的基础上扩大功能,这是后话。<br /> <br />为了使用的便捷性我们的接口使用W原创 2010-10-20 09:59:00 · 2221 阅读 · 6 评论 -
内存中的树实例同步持久化的实现
<br />在开发中,可能会有这样的需求: 需要在内存中维护一颗树,并且该树可以同步的持久化。<br />此文给出一种简单的解决思路。使用C#作为范例。<br /> <br />一般的持久化无非是写文件 或者数据库,本文采用MYSQL数据库。<br />对于每个节点,记录其父节点id。<br /> <br />表结构如下:<br /> <br />int id 主键<br />int parentid not null<br />XXXX 其他数据<br /> <br />内存中数据结构如下:<br />c原创 2010-10-14 15:29:00 · 1956 阅读 · 0 评论 -
silverlight中获取网页代码示例
<br />在silverlight中如果要跨域访问,则需要在被访问网站的根目录下添加策略文件crossdomain.xml。内容如下(可以更细致配置,可以查阅相关资料):<br /> <?xml version="1.0"?><!-- http://localhost/crossdomain.xml --><cross-domain-policy> <allow-access-from domain="*" /></cross-domain-policy><br /> <br />在原创 2010-06-13 17:05:00 · 2441 阅读 · 0 评论