[返回] [最新] [最热门] [最高评价]

谈谈我们的游戏逻辑服务器实现(二)

原文链接:http://codemacro.com/2012/04/25/game-server-info-2/

上一篇谈了一些关键技术的实现方案。本篇描述一些遇到的问题。



在策划制作完了几个职业后(主要是技能制作),大概去年年底公司内部进行了一次混战测试。30个角色在一个场景进行混战,测试结果从技术上来说非常不理想。首先是客户端和服务器都巨卡无比。服务器CPU一直是满负载状态。而客户端
...

Kevin Lynx 2012-04-25 16:55 | 查看: 1390

使用erlang实现P2P磁力搜索(开源)

接上回对DHT网络的研究,我用erlang克隆了一个磁力搜索引擎。我这个实现包含了完整的功能,DHT网络的加入、infohash的接收、种子的获取、资源信息的索引、搜索。

如下图:

在我的笔记本上,我开启了100个DHT节点,大致均匀地分布在DHT网络里,资源索引速度大概在1小时一万个左右(包含重复资源)。

这个程序包含三大部分:

DHT实现,kdht,https://github.com
...

Kevin Lynx 2013-06-20 00:00 | 查看: 1769

使用Clang实现C语言编程规范检查

概述

Clang是LLVM编译器工具集的前端部分,也就是涵盖词法分析、语法语义分析的部分。而LLVM是Apple在Mac OS上用于替代GCC工具集的编译器软件集合。Clang支持类C语言的语言,例如C、C++、Objective C。Clang的与众不同在于其模块化的设计,使其不仅实现编译器前端部分,并且包装成库的形式提供给上层应用。使用Clang可以做诸如语法高亮、语法检查、编程规范检查方面
...

Kevin Lynx 2013-02-12 00:00 | 查看: 2264

c/c++中几种操作位的方法

参考How do you set, clear and toggle a single bit in C?

c/c++中对二进制位的操作包括设置某位为1、清除某位(置为0)、开关某位(toggling a bit)、检查某位是否为1等。这些操作较为常见并且可以作为其他位运算的基础接口,以下罗列几种方法:

传统方法

设置某位为1

number |= 1 << x; // 设置第x
...

Kevin Lynx 2012-09-04 19:49 | 查看: 1204

为什么处理排序的数组要比非排序的快?

参考Why is processing a sorted array faster than an unsorted array?

问题

看以下代码:

#include <algorithm>
#include <ctime>
#include <iostream>

int main()
{
// generate data
const
...

Kevin Lynx 2012-08-29 19:55 | 查看: 1412

开始记录编程方面的技巧

原文地址:http://codemacro.com/2012/07/18/start-to-write-tips/

回首上篇博客的发表时间,又2个月时间过去了。在我博客生涯的过去两三年里,总会有好几个月的时间没有编写任何文章。我觉得这真是一个不好的习惯。这个情况的产生,有很多原因。例如自己太懒、工作偶尔忙、自己偶尔处于混沌时期、自己偶尔怀疑人生,如是种种。但最大的原因还是,不敢写。

在刚出来工
...

Kevin Lynx 2012-07-18 17:52 | 查看: 967

使用Github Page来写博客

原文链接http://codemacro.com/2012/04/20/blog-on-github/

最开始知道Github Page,是通过codertrace上的某些注册用户,他们的BLOG就建立在Github Page上,并且清一色的干净整洁(简陋),这看起来很酷。

Github提供了很多很合coder口味的东西,例如Gist,也包括这里提到的Page。Page并不是特用于建立博客的产
...

Kevin Lynx 2012-04-20 16:21 | 查看: 2151

poj 1005 I Think I Need a Houseboat 解题报告

这道题的大致意思:

  圆表示一块面积可扩展的区域,开始时,面积是0,在(0,0)处开始以每年50平方米的速度同样呈半圆扩展,输入一个正整数N,然后输入N对坐标,对于每一对坐标值:求出面积扩展到该点的年数,坐标值单位为米。

 理解意思后此题就水很多了。细心的话一次搞定~
 
#include <iostream>
#include <cstdio
...

C小加 2011-11-19 14:39 | 查看: 1460

MMO游戏对象属性设计

MMO游戏对象属性设计

Author:
Kevin Lynx

Date:
5.2.2011

一般的MMORPG中,游戏对象主要包括怪物和玩家。这两类对象在经过游戏性方面的不断“进化”后,其属性数量及与之相关的逻辑往往会变得很巨大。如何将这一块做得既不损失效率,又能保证结构的灵活、清晰、可维护?本文将提供一种简单的结构。

原始结构

最原始的结构,极有可能为这样:
...

Kevin Lynx 2011-05-02 19:19 | 查看: 2344

协程并发模型及使用感受

协程可以简单理解为更轻量的线程,但有很多显著的不同:

不是OS级别的调度单元,通常是编程语言或库实现

可能需要应用层自己切换

由于切换点是可控制的,所以对于CPU资源是非抢占式的

通常用于有大量阻塞操作的应用,例如大量IO

协程与actor模式的实现有一定关系。由于协程本身是应用级的并发调度单元,所以理论上可以大量创建。在协程之上做队列及通信包装,即可得到一个actor框架,例如pyth
...

Kevin Lynx 2017-12-03 00:00 | 查看: 360

实现一个memcache proxy

通常我们会使用多台memcached构成一个集群,通过客户端库来实现缓存数据的分片(replica)。这会带来2个主要问题:

memcached机器连接数过多

不利于做整体的服务化;缺少可运维性。例如想对接入的客户端做应用级隔离;或者对缓存数据做多区域(机房)的冗余

实现一个memcache proxy,相对于减少连接数来说,主要可以提供更多的扩展性。目前已经存在一些不错的memcache
...

Kevin Lynx 2017-05-18 00:00 | 查看: 397

Xmemcached源码阅读

Xmemcached 是一个memcached客户端库。由于它提供的是同步API,而我想看下如何增加异步接口。所以就大致浏览了下它的源码。

主要结构

针对memcache客户端的实现,主要结构如下:

XMemcachedClient 是应用主要使用的类,所有针对memcache的接口都在这里

Command 用于抽象二进制协议或文本协议下各个操作,这里称为Command。CommandFa
...

Kevin Lynx 2017-04-23 00:00 | 查看: 497

...更多...