【极限细胞】开发进度记录贴
agar吧
全部回复
仅看楼主
level 7
AgarE
镇楼
2019年06月01日 10点06分 1
level 7
由本人自16开始开发的AgarE(agar易语言版)已经停止维护[滑稽]
目前最新版为1.6[滑稽]
极限细胞(UltraCells)[滑稽]
将作为AgarE的替代者[滑稽]
极限细胞采用C++开发,依赖于LGPL协议的Qt开发框架[滑稽]
极限细胞将比AgarE流畅数倍,并且提供更强大的功能[滑稽]
未来会出基于MIT授权的Ogre库的3D模式[滑稽]
目前进度:解决了服务端控制台输出内容的中文乱码问题[滑稽]
2019年06月01日 10点06分 2
自2016年[阴险]
2019年07月23日 00点07分
这是还在做吗?
2019年11月01日 04点11分
level 7
先说下服务端的框架:
一个app(UltraCellsApp)类,代表整个应用
app内包含了:
游戏容器(容纳多个游戏分区,也就是支持一服多区,AgarE不支持的)
游戏配置容器(容纳多个游戏的配置,这里的配置等同于AgarE的配置)
游戏内的配置和配置容器内的配置是相互独立的,而且他们之间只能单向交互,也就是只能由配置容器内的配置为游戏内的配置赋值
这么做是考虑了游戏的性能和线程问题,配置容器内的配置由哈希表实现,便于从ini内读写
为什么考虑线程问题呢?你玩AgarE的时候,玩着玩着都不知道怎么就崩了
容器为游戏配置赋值的过程用消息队列实现
对,就是服务器接受信息的那个队列
2019年06月01日 11点06分 4
level 7
当我们需要更新游戏配置时
例如用客户端更新服务器的配置
客户端向游戏分区发送配置修改消息(一个配置名字符串,一个更改内容字符串),
游戏分区把消息递送给app,
app把
容器修改对应配置,为绑定该配置的所有服务器发送一个带有更改后信息( 配置名QString 配置内容QVariant)的消息,随后该消息被加入到游戏各分区的消息队列
所有分区继承UCGame
UCGame内已经做好了现成的消息队列,并且有了一套处理消息的装置
UCGame留下一个纯虚函数供它的派生类处理消息
2019年06月01日 11点06分 5
level 1
后排支持[滑稽][茶杯]
2019年06月01日 11点06分 6
level 7
g++不想理你的QVariantHash并向你丢了72个问题[阴险]
2019年06月01日 11点06分 7
level 7
好吧是低级错误,没include
2019年06月01日 11点06分 8
level 7
Q:为什么要用英文写代码?
A:因为拿中文写会报错[阴险]就算不报错,也不能自动补全单词[阴险]
Q:为什么不用拼音写代码,那样就不用背单词点翻译了啊
A:因为那样显得很low[阴险]
2019年06月01日 11点06分 9
level 7
让我们看看小小鸟机器人的天才代码[阴险]
2019年06月01日 11点06分 10
level 7
这就有一个好处,一些配置(如时钟间隔和时钟频率)存在相互绑定的关系(一个变另一个也得跟着变)
这种情况放在消息队列里,每一种配置都能得到对应的处理
2019年06月01日 12点06分 11
level 7
宏元编程固然是好东西,但是他本身就已经很繁琐,再加上错综复杂的类间关系,有时候一个简单的查询方法就需要耗费大量时间写一个宏元展开,实在是得不偿失。
为避免使用宏元构建命令系统和配置系统,uc的命令系统好配置系统均采用动态添加的方法,即降低了耦合性,又简洁直观,便于开发
我们的动态添加要实现:
【类成员(不同类型)】<=绑定=>【字符串】
支持根据【字符串】查找【类成员(不同类型)】,并把【QVariant】的值赋给【类成员(不同类型)】
一想到绑定两者,第一想到的就是哈希表
哈希表的两者需要统一的类型,显然不同类型的类成员是不行的
我们可以让【类成员(不同类型)】分离出一个【配置接口(不同类型)】继承一个【统一配置接口】
接下来就好说了,QVariant提供了
void setValue(const T &value)和
T value() const
用起来十分方便
2019年06月01日 13点06分 12
level 7
一直反对使用宏元的我最后还是用了一小部分宏元,但是这可扩展性比之前太监掉的uc强出不知道多少倍去了
动态添加的配置绑定,我叫他 配置元数据
每次更改配置数据时必先访问到之前的【配置接口】,在配置接口里添加 更改事件系统 即可实现对其他配置成员的绑定
但是为了防止被配置绑定系统赋值的信息被配置系统又重赋一遍值,绑定关系的配置将不会纳入配置系统内,他们的值是啥全部由绑钉系统自身处理
2019年06月01日 14点06分 13
level 7
配置更改触发事件系统完成之际,qt给我报了个错,说是啥啥啥未定义
仔细看了半天才发现是低级错误:函数没写类型[喷]一小时内犯过两次这个错误了[喷]
2019年06月01日 14点06分 14
level 7
错误是解决了,原来是在父类声明了个纯虚析构函数,子类里报错眼拙看成是报了没出错的正常的,把我搞糊涂了[怒]
2019年06月01日 14点06分 15
1 2 3 4 5 6 尾页