每日笔记 —— 开源项目和学习资料篇

1、开源项目

1-1、redis

  1. redis项目里面的网络框架(Redis ae事件驱动库)非常不错,称得上是短小精悍,我已经star了两个仓库,在我的star搜索关键字redis

  2. 关于Redis ae事件驱动库的讲解,网上有比较多的教程,例如:教程1教程2

1-2、libev

  1. windows下visual studio编译libev:

    1. 在vs下添加已存在的项目;
    2. 从vs中移除ev_epoll.c, ev_kqueue.c, ev_poll.c, ev_select.c, ev_win32.c几个文件;
    3. event.c中要包含winsock2.h头文件; config.h.in复制为config.h, 定义HAVE_SELECTHAVE_SYS_SELECT_H
    4. 加上ws2_32.lib

    具体参考:https://github.com/xmulyj/libev 里面的README

  2. 关于windows下编译libev的问题:
      1. cygwin下编译正常,有backend;
      1. visual studio中编译的话:

    (1)把config.h.in复制一份改为config.h,然后HAVE_SELECT和HAVE_SYS_SELECT_H都定义为1后;
    (2)在event.c中包含winsock2.h头文件
    编译ok, 有backend(select), 运行libev官网上的例子(去掉io watcher,只保留timer watcher)正常.

  3. libev 教程:可以参考这个大神的博客,里面搜索关键字libev

1-3、Snowflake算法

  1. Twitter-Snowflake算法,64位自增ID算法,可以用来替换UUID算法。关于该算法的介绍,可以参考这篇文章

  2. Snowflake算法,C语言实现

1-4、skynet

  1. skynet架构,基本的框架介 以及 Skynet 设计综述

1-5、raft(分布式系统 RAFT 一致性算法)

  1. raft 简单介绍

1-6、groupcache

  1. groupcache(已star)是一个分布式缓存 go 语言库,支持多节点互备热数据,有良好的稳定性和较高的并发性。寥寥2000来行代码完成了个lru cache库,核心只用一个list和一个map,出自brad大神之手(memcached作者)。

1-7、UUID生成

  1. rfc4122详细介绍了UUID的生成。在我自己的游戏服务器中有简单的实现并对生成的uuid进行了base64。

2、游戏开发

  1. 游戏常用的编程设计模式:游戏编程模式
  2. 行为树:

  3. 棋牌游戏开发:

  4. 基于Lua的游戏服务端框架简介,是以C/C++为底层,lua为上次的游戏框架为基础,做了比较全面的介绍。

  5. 游戏的同步方式:帧同步状态同步。前者适用于FPS/RTS游戏,后者适用于mmorpg游戏。

    参考: 状态同步与帧同步动作手游实时PVP帧同步方案(客户端)