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

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

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

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



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

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

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

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

如下图:

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

这个程序包含三大部分:

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

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

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

概述

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

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

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 | 查看: 1227

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

参考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 | 查看: 1450

开始记录编程方面的技巧

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

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

在刚出来工
...

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

使用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 | 查看: 2185

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

这道题的大致意思:

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

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

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

MMO游戏对象属性设计

MMO游戏对象属性设计

Author:
Kevin Lynx

Date:
5.2.2011

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

原始结构

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

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

基于Yarn的分布式应用调度器Slider

Apache Hadoop Map-Reduce
框架为了解决规模增长问题,发展出了yarn。而yarn不仅解决Map-Reduce调度问题,还成为了一个通用的分布式应用调度服务。yarn中的一个创新是把各种不同应用的调度逻辑拆分到了一个称为Application
Manager(以下简称AM)的角色中,从而让yarn自己变得更通用,同时解决调度性能问题。Apache
Slider就是这其中的一个
...

Kevin Lynx 2018-01-24 00:00 | 查看: 412

Python协程greenlet实现原理

greenlet是stackless
Python中剥离出来的一个项目,可以作为官方CPython的一个扩展来使用,从而支持Python协程。gevent正是基于greenlet实现。

协程实现原理

实现协程主要是在协程切换时,将协程当前的执行上下文保存到协程关联的context中。在c/c++这种native程序中实现协程,需要将栈内容和CPU各个寄存器的内容保存起来。在Python这种VM
...

Kevin Lynx 2018-01-17 00:00 | 查看: 370

写了一个棋牌游戏服务器框架

最近业余时间写了一个棋牌游戏服务端框架:pigy。对于棋牌游戏服务端框架,我的定义是:

分布式的

包含网络棋牌游戏中包括登陆、大厅、游戏框架、数据持久化等基础组件

提供具体游戏框架,游戏逻辑程序员可以基于这个框架focus在游戏的开发上

写得差不多的时候,我在网上搜索了下,发现棋牌游戏源码已经烂大街,自己精力有限,也没有心思和动力去研究现有实现的优缺点而做出一个更好的替代。所以我这份实现仅
...

Kevin Lynx 2017-12-12 00:00 | 查看: 433

...更多...