- 博客(35)
- 资源 (6)
- 收藏
- 关注
原创 二十年前是怎样开发游戏的?
知乎上有人问:“贴吧都是十五六岁就用引擎写游戏的天才,大家怎么看?”,感觉现在做游戏真实一件幸福的事情呀,不尽想起当年开发游戏的各种艰辛。现在做游戏很简单,大把代码给你参考,大把框架给你使用,Windows帮你作完了大部分事情。我们那个年纪写游戏时,家里还没有Internet,什么资料都查不到,什么开源引擎都没有,95年左右你要写一个游戏,你起码面临:同显卡打交道,显卡著名的 Mo
2015-04-21 22:52:27 3775
原创 如何解决FPS/RTS/赛车类游戏的同步问题
算法简述 动作类游戏如何在高延迟下实现同步?不同的客户端网络情况,如何实现延迟补偿?十年前开始关注该问题,转眼十年已过,看到大家还在问这类问题,旧文一篇,略作补充(关于游戏同步相关问题还可以见我写于2005年的另外两篇文章,帧锁定算法 和 网游同步法则):影子跟随算法由普通DR(dead reckoning)算法发展而来,我将其称为“影子跟随”意再表示算法同步策略的主要思想
2015-04-07 17:10:14 16410 18
原创 体育竞技游戏的团队AI
很多人问游戏AI该怎么做?随着游戏类型的多元化,非 MMO或者卡牌的游戏越来越多,对AI的需求也越来越强了。而市面上关于 AI的书,网上找得到的文章,也都流于一些只言片语的认识,理论化的套路,和一些简单的 DEMO,离真正的项目差距甚远,无法前后衔接成一条线,更无法真正落地到编码。国内真正做过游戏AI的少之又少,东拉西扯的人很多,真正做过项目的人很少,因为国内主要以MMO为主,RTS比较少
2015-04-07 17:05:29 5873
原创 程序高手的境界
程序员也有三六九等:初等程序员靠知识来挣钱,会别人会的东西,喜欢折腾架构和框架,以掌握更多新潮东西而沾沾自喜,以模仿各种奇技淫巧重新实现一遍而四处炫耀,常见台词:“为啥还在用png存图片?为啥不用webp这种高压缩比的格式?”,“我们使用 Erlang的高并发特性来实现同时支持5万人的效果”,“我们使用RTMFP来降低流量成本,又使用H265来给用户提供更高品质的视频画质”,这些人能够迅速的学
2015-04-07 17:02:51 3377 3
原创 移动设备通用手势识别算法
移动设备多用手势进行输入,用户通过手指在屏幕上画出一个特定符号,计算机识别出来后给予相应的反应,要比让用户点击繁琐的按钮为直接和有趣,而如果为每种手势编写一段识别代码的话是件得不偿失的事情。如何设计一种通用的手势识别算法来完成上面的事情呢?我们可以模仿笔记识别方法,实现一个简单的笔画识别模块,流程如下:第一步:手势归一化1. 手指按下时开始记录轨迹点,每划过一个新的点就记录到手
2013-04-19 22:18:56 3678
原创 如何实现字体沟边与发光特效?
如果你正在使用 Flash,那么实现下面一个字体效果是一件十分简单的事情:textfield.filters = [ new GlowFilter(0, 1, 2, 2, 10) ];这样就可以了,接着把字体设置成宋体12号,颜色是0xffff99,就成了。如果要实现上面类似QQ面板的发光效果,也只需要一行:textfield.filters = [ new GlowFil
2013-04-19 02:28:43 3207 2
原创 快速可靠协议 - KCP
快速可靠协议URL: https://code.google.com/p/ikcp/ KCP是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。纯算法实现,并不负责底层协议(如UDP)的收发,需要使用者自己定义下层数据包的发送方式,并以 callback的方式提供给 KCP。连时钟都需要外部传递进来,内部
2013-04-15 17:31:21 10804 4
原创 FlashPython - 在 Flash里面跑 Python代码!!
编译了一个 FlashPython,可以在Flash里面跑 Python代码,性能测试得分 23703.7 pystones/second,比js版本python解释器快多了,从此以后可以用Python来写Flash项目了,演示地址:http://t.cn/zlHTzWv
2012-11-14 16:44:12 4725 2
原创 百行内实现五子棋人机对战
国庆没事,想看看最少多少行可以写一个人机对战起来游戏,于是有了这个Python版五子棋人机对战,仅仅几百行。#! /usr/bin/env python# -*- coding: utf-8 -*-import sys, time#----------------------------------------------------------------------
2012-11-09 03:51:57 18231 10
原创 【原创】快速除以255的方法
经过若干次试验修改,研究出下面这个快速/255的宏,可以在 X属于[0,65536]的范围内误差为零:#define div_255_fast(x) (((x) + (((x) + 257) >> 8)) >> 8)传统来说,人们习惯于将 /255改为 >>
2011-09-07 02:14:13 5055 4
原创 参考ZeroMQ改进服务器
今天参考 ZeroMQ的观点为我们的网络模块增加了一个“订阅模式”,及客户端包头用四字节表示,低24位为长度,高八位为“消息分类”。后端连接网络层的若干“频道”可以根据自己的喜好订阅“分类消息”,那么客户端发送该分类消息到网络层的时候,将会被抄送到订阅过该分类的频道。每个频道还可以订阅若干系统消息,比如连接开始、断开、时钟等等。 我们的服务器自2004年底到现在,一直是网络和逻辑分离在不同的进程
2011-06-25 17:29:00 3720
原创 [原创] PowerPC 汇编入门与优化
PowerPC Figure – PPC入门与优化 By Skywind(2007) http://www.joynb.net/blog/ 背景介绍 PowerPC于1991年IBM/MOTO/APPLE研制,大量应用于服务器(AIX / AS400系列及苹果系列服务器),家用游戏机(PS3, Wii, XBOX, GameCube),以及嵌入式(仅次于Arm/x86排第三)。PowerPC核心在于开放系统软件标准,其应用范围仅次于x86,是除去x86外最值得开发者了解的体系。 不需要写出非常高
2011-04-24 00:46:00 8445
原创 游戏客户端入门十二小时
本文代码见:http://blog.csdn.net/skywind/archive/2005/04/18/352045.aspx
2011-04-23 13:25:00 2569
原创 LiveWriter 写CSDN很方便呀。
可以方便的插入代码: #include int main(int argc, char *argv[]){ printf("Hello, world/n"); return 0;}.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-
2011-04-14 14:12:00 1939
原创 内存拷贝优化(1)-小内存拷贝优化
<br />相信大家代码里有很多地方用到memcpy这个函数,相信这个函数的占用是不小的,有时优化了memcpy,能使整个项目的运行效率提升。通过适当的编码技巧,让我们的内存拷贝速度超过memcpy两倍,是可以实现的。<br /> <br />有人说memcpy还能优化么?不就是rep movsd么?CPU和内存之间的带宽是固定的,怎么可能优化呢?其实是普通的内存拷贝并没有发挥全部的带宽,很多被浪费掉了,比如要等到数据完全读取成功后再去写入,然后要写入成功后再去读取新的。而优化本身就是使这两者尽量的并行。发
2011-03-14 21:42:00 5496
原创 业余土制:轻量级图形库 PixelLib
简述:2D抗锯齿,矢量制图,快速图形图像变换,64种不同的像素格式,色彩空间变换,SSE2/MMX优化,纯软件实现,纯C代码。地址:http://code.google.com/p/pixellib/1. 图像变换:支持仿射变换和透视变换,提供大量图像变换操作接口。2. 抗锯齿:所有图形绘制支持3级不同程度的抗锯齿效果。3. 图像绘制:图像任意拉伸,旋转,3D旋转,并且同时进行色彩空间变换。全部采用浮点数坐标,图像移动更为平滑。4. 几何作图:全面的抗锯齿几何作图效果。
2011-03-11 19:33:00 4578 4
原创 GFP-Tree 内存分配器
我也来介绍一些内存管理方面的优化算法:怎样才能根除内存碎片?有且只有如下办法:1. 只分配不释放,2. 只分配固定大小内存,3. 不分配内存,虽然,仍不妨碍我们再一次回顾各种常用的分配策略,以发掘一些新的思路:前提:下面提及的分配技巧并不能说是“最快的”,也不能说是“最小碎片的”,但是可以保证,不管系统运行多长时间,不管分配多大内存,碎片比例趋于恒定,同时分配时间为常数(unit interval):最后将讨论一些更进一步的优化技巧(如果愿意大量增加代码行数的话),看看在分配内存方面,哪些我们值得努
2011-02-11 20:50:00 2405
原创 帧锁定同步算法
帧锁定同步算法算法概念该算法普遍要求网速RTT要在100ms以内,一般人数不超过8人,在这样的情况下,可以像单机游戏一样编写网络游戏。所有客户端任意时刻逻辑都是统一的,缺点是一个人卡机,所有人等待。1.客户端定时(比如每五帧)上传控制信息。2.服务器收到所有控制信息后广播给所有客户。3.客户端用服务器发来的更新消息中的控制信息进行游戏。4.如果客户端进行到下一个关键帧(5帧后)时没有收到服务器的更新消息则等待。5.如果客户端进行到下一个关键帧时已经接收到了服务器的更新消息,则将上面的
2011-02-11 17:53:00 12098 8
原创 牌上的花色-MUD中的玩家(翻译)
游戏设计需要基础性理论,Richard A. Bartle,第一款MUD(被称为MUD1)的开发者,该文章起于1990年,经作者多次整理而成。在游戏设计“难有统一理论”的情况下,该文论点受到了决大多数开发者的一致接受和好评。可见基础性理论不但有利于我们的分析与设计,更重要的是大家能在同一层面上用同样的术语进行更有效的沟通:http://www.joynb.net/resource/hcds
2007-05-02 22:41:00 2346
原创 Python少打字小技巧
说明:增加代码的描述力,可以成倍减少你的LOC,做到简单,并且真切有力观点:少打字=多思考+少出错,10代码行比50行更能让人明白,以下技巧有助于提高5倍工作效率1. 交换变量值时避免使用临时变量:(cookbook1.1)老代码:我们经常很熟练于下面的代码temp = xx = yy = temp代码一:u, v, w = w, v, u 有人提出可以利用赋值顺序来简化上面的三行代
2006-06-07 17:04:00 2777 4
原创 未来三五年游戏研发问题预测
下面根据以往经验对未来三五年游戏开发问题做一个预测,所论述问题,缺乏严格证明。大家全当看故事,茶余饭后消遣娱乐一下:1. 研发瓶颈从技巧演变成为规模,解决复杂度问题将成为国内一流开发者的主要矛盾,而 未能进军一流水平的二流开发者将会进一步沦落成软件工厂和外包工作室。2. 对于开发游戏,多人视频,新的输入设备,可看不可玩,三年内国内由于该方向知识薄 弱,即便国外有大的成就,国内一时也难以
2006-01-07 05:58:00 2872 2
原创 关于“面向显示器编程”
最近吃饭的时候听公司两位同事聊起“面向显示器编程”(screen oriented programming)。sop这个东西我虽偶有所闻,却未有什么了解。这两位同事跟我说AOP其实是退化了的SOP,这个说法让我觉得SOP会有点意思。个人觉得,OOP完成了对数据的重用,AOP完成了对算发的重用,而SOP则完成了对显示器的重用。基于对SOP的应用,我们只需要在电脑前多加一把凳子,就可以通过工作空间上的
2006-01-05 04:39:00 2524 1
原创 网络游戏同步法则
网路的硬件也有限,而人的创造也无限,在公网平均130ms的Latency下,是不存在“完全的”的同步情况。如何通过消除/隐藏延时,将用户带入快速的交互式实时游戏中,体验完美的互动娱乐呢?以下六点,将助你分清楚哪些我们可以努力,哪些我们不值得努力,弄明白实时游戏中同步问题关键之所在,巧妙的化解与规避游戏,最终在适合普遍用户网络环境中(200ms),实现实时快速互动游戏:1. 基本情况: (A)
2005-06-11 17:13:00 7083 14
原创 网络游戏南北互通问题分析
网络游戏南北互通问题方案网络游戏用户按接入分,有多数的电信用户,次多数的网通用户,又有处于教育网的学生用户,造成了互联互通上极大的障碍。又由于当今游戏用户数据的越来越强的集中性和游戏服务器的分散性之间无可避免的矛盾,无法将游戏平台划分成为一个个独立的世界。 在上次的文档“QQ游戏服务器分布说明”后又补充了一篇“QQ游戏服务器响应速度”,可以发现QQ游戏服务器除去黑龙江,吉林,辽宁三省的大量网
2005-06-11 17:10:00 5888 3
原创 MINI-FOOLTRS 游戏代码
/*=====================================================================// FOOLTRIS.C: Fool tetris game v1.0 by skywind// 最简俄罗斯,游戏设计入门傻瓜版,林伟 1999年8月11日//// 游戏并无任何扩展,仅以最简单的方式向人说明俄罗斯方块的基本功能实现//
2005-05-15 04:09:00 2702 1
原创 艺术化的程序设计
计算机的硬件也有限,而人的创造也无限,程序设计美于思维和行为,记得1997年一个叫做 "OMNISCENT"的DEMO使人感慨万分,作者就像一名艺术家在一粒小小的米粒上雕刻着自己的作品一般。能力虽有不及,仍不妨我校仿,以此挖掘计算机最原始的艺术表现形式:(此为自去年九月到现在三次发布中的最终版本: EXFORCE)在DOS窗口中运行DEBUG,然后把横线下的内容复制、粘贴到DEBUG窗口中,回车就
2005-05-01 23:41:00 2257 5
原创 再现MSN魔法表情效果
下面是播放时候的效果图:MSN的魔法表情实在是COOL,兴趣之下自己也做了一个特效演示将FLASH拖到窗口上面,然后点“特效”,如果桌面是32位的效果非常漂亮,可以拖动图形,现在就下载:演示程序 演示程序地址二 (98KB) 最好笑的事情是那天发现有些聊天软件的魔法表情居然是假的,它是把桌面抓下来然后用IE空间来播放flash, 顺便把抓下来的桌面当背景.或者直接用ColorKey -_-
2005-04-18 09:14:00 2395 14
原创 虚拟机及VmBasic编译引擎实现
虚拟机及VmBasic编译引擎说明 1.关于虚拟机及其编译器的说明2.VmBasic开发/调试环境的介绍及说明3.关于其他下载地址一源程序下载下载地址二设计说明书关于虚拟机及其编译器的说明 记得3DS/MAX里面实现了一个类似BASIC的脚本,Animator里面实现了一个类C的脚本语言,Autodesk公司的软件对于脚本支持的很出色,好的脚本引擎在乎平台无关性、高效性和扩充性,一个脚本引擎的
2005-04-18 07:55:00 3093 9
原创 MINI-FOOLFLY 游戏代码
/* Fool fly game v1.0 by skywind * 空战摸拟源程序,林伟 1999年7月30日 * * 这是一个空战程序的模式例子,并没有做任何优化与扩充 * 仅仅向人说明编写游戏程序的若干功能实现或常用处理方法 * 程序是DOS版的,现在写游戏的平台早已变化了许多,但是 * 我尽量容入了一些不变理论,希望才入门的游戏设计者能受 * 到一些启发,通过它
2005-04-18 06:54:00 2757 1
原创 PL0编译器TurboPascal版再现
(********************* PL0 编译程序Turbo Pascal代码 *********************)program pl0(fa,fa1,fa2); (* PL0 compile with code generation *) label 99; (* Turbo Pascal do not support goto between differ
2005-04-18 06:35:00 1976 1
原创 Extreme Game Programming
Extreme Game Programming - EXFORCEAfter enjoyed the demo "OMNISCENT" in 1997, I write another one today. simpler, and smaller :-)Run DEBUG in DOS Window, copy and paste the text below to DEBUG:-------
2004-09-21 23:15:00 1983 6
原创 关于路径搜索算法的实用性优化
关于路径搜索算法的实用性优化UESTC 20013080 林 伟 2002.9.12介绍:本文阐述对著名的路径搜索算法A*算法的重要改进,使之更实用于大规模,高效率,多阻塞,模糊求解的任务中。希望本文起一个抛砖引玉的作用,使读者能举一反三。 这里所提及的A*算法在许多领域内得到广泛的应用,比如我们熟悉的即时战略游戏正是利用这个算法来实现路径搜索的。但是人工智能的书上只是说,却很少有实现的例子,理
2002-11-14 11:11:00 6296 9
《简明英汉字典增强版》 收词量 340 万 - for StarDict, GoldenDict
2017-05-24
Kindle 简明英汉增强版(133万词条,考纲词频标注)
2017-05-22
简明英汉双解词典数据库(增强版)
2017-03-21
cscope.exe 15.8b windows 最新版
2017-01-27
cscope.exe 15.8b win32 最新(清洁版)
2016-12-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人