- 博客(8)
- 收藏
- 关注
原创 MMORPG游戏拍卖行开发流程
一个管理类,管理类里有一个 threadlist 和tasktist,我们的每一个操作都封装成一个task任务放入tasklist 中,threadlist 多线程去 taskuist 中取任务执行(交易行目前采用的异步线程是单线程,因为多线程修改数据库的操作太复杂容易出错,单线程目前也已经能支持性能了)11、直接走竞价失败领取流程,从竞价失败待领取数据库中读职数据,给竞价失败的玩家发钱。9、直接走竞价失败领取流程,从竞价失败待领取数据库中读取数据,给竞价失败的玩家发钱。
2023-01-29 12:10:33
784
原创 游戏服务端开发部分总结(八股文+游戏模块功能实现)
完成端口,不用说大家也知道了,最后的压轴戏就是使用完成端口,对比上面几种机制,完成端口的做法是这样的:事先开好几个线程,你有几个CPU我就开几个,首先是避免了线程的上下文切换,因为线程想要执行的时候,总有CPU资源可用,然后让这几个线程等着,等到有用户请求来到的时候,就把这些请求都加入到一个公共消息队列中去,然后这几个开好的线程就排队逐一去从消息队列中取出消息并加以处理,这种方式就很优雅的实现了异步通信和负载均衡的问题,因为它提供了一种机制来使用几个线程“公平的”处理来自于多个客户端的输入/输出,并且线程如
2023-01-28 16:10:54
1918
原创 MMORPG游戏伤害流程过程
调用方式:需要调用伤害流程的时候输入首个组id,按顺序依次执行该组内的伤害流程(调用对应的回调函数),若某条伤害流程有子伤害流程组,则执行完该伤害流程后执行子伤害流程组,子伤害流程组执行完后继执行该组内的下一条伤害流程。伤害流程存在形式整个伤害流程以的形式分成多个伤害流程组,需要按顺序一起执行的伤害流程放在同一个组内,同时每个伤害流程又可以有成功后的子伤害流程细,失败后的子。例:A伤害流程组内有三条伤害流程,A伤害流程1,A伤害流程2,A伤害流程3,A伤害。Func: string //伤害流程名字。
2023-01-28 15:48:35
296
原创 MMORPG游戏AOI流程
2、玩家和怪之间:玩家可以订阅怪,怪可以被玩家订阅,怪只能被玩家订阅,不能订阅玩家(因为没有必要,怪如果需要寻找玩家则只需去自身的被订阅列表内寻找即可)订阅列表,自己的被订阅列表,对方的订阅列表), OnAppear通知对方自己出现。订阅列表,自己的被订阅列表,对方的订阅列表), OnAppear通知对方自己出现。2、获取减少的部分的视野对象,移除双方的AOl列表(自己的订阅列表,对方的被。3、获取增加的部分的视野对象,加入双方的AOl列表(自己的订阅列表,对方的被。//自身出现时的回调函数。
2023-01-28 15:44:42
388
原创 MMORPG游戏伤害流程
调用方式:需要调用伤害流程的时候输入首个组id,按顺序依次执行该组内的伤害流程(调用对应的回调函数),若某条伤害流程有子伤害流程组,则执行完该伤害流程后执行子伤害流程组,子伤害流程组执行完后继执行该组内的下一条伤害流程。伤害流程存在形式整个伤害流程以的形式分成多个伤害流程组,需要按顺序一起执行的伤害流程放在同一个组内,同时每个伤害流程又可以有成功后的子伤害流程细,失败后的子。例:A伤害流程组内有三条伤害流程,A伤害流程1,A伤害流程2,A伤害流程3,A伤害。Func: string //伤害流程名字。
2023-01-28 15:41:30
139
原创 面试可能问到的计算机基础
什么是IOCP完成端口,不用说大家也知道了,最后的压轴戏就是使用完成端口,对比上面几种机制,完成端口的做法是这样的:事先开好几个线程,你有几个CPU我就开几个,首先是避免了线程的上下文切换,因为线程想要执行的时候,总有CPU资源可用,然后让这几个线程等着,等到有用户请求来到的时候,就把这些请求都加入到一个公共消息队列中去,然后这几个开好的线程就排队逐一去从消息队列中取出消息并加以处理,这种方式就很优雅的实现了异步通信和负载均衡的问题,因为它提供了一种机制来使用几个线程“公平的”处理来自于多个客户端的输入/
2021-06-16 14:16:09
213
原创 golang设计模式
设计模式:单例模式(如上图)工厂模式(传奇的怪物创建就是工厂模式,不同怪物类的创建函数都写在CreateAnimal函数中,函数统一返回TAnimal类,根据传参怪物的类型返回不同的怪物)原型模式克隆类,(类似传奇游戏的Assign函数)浅拷贝和深拷贝原型模式中的拷贝对象可以分为:“浅拷贝”和“深拷贝”。浅拷贝:1、当类的成员变量是基本数据类型时,浅拷贝会复制该属性的值赋值给新对象。2、当成员变量是引用数据类型时,浅拷贝复制的是引用数据类型的地址值。这种情况下,当拷贝出的某一个类修改了引..
2021-06-16 11:42:26
283
原创 Golang字符串转数字
func Atoi(s string) (int, error) { const fnAtoi = "Atoi" sLen := len(s) if intSize == 32 && (0 < sLen && sLen < 10) || intSize == 64 && (0 < sLen && sLen < 19) { // Fast path for small integ
2021-06-16 11:32:34
604
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人