我昨天发了一个帖子,说想做网络游戏,结果马上就有人附和了!反应真是快啊,Blog这个东西就是好!

嗯,那么我们讨论些什么呢?我想可以讨论一下下面的几个方面:
1、我们这个开发采取什么协议?GPL还是别的?
2、我们如何组织这个项目?
3、我们这个游戏的是什么样子的?剧本?

呵呵,前两个留给大家说说,我先说说对于这个游戏有什么样的设想:

一、网络穿越能力
  之所以前一段时间我那么关心NAT穿越,主要就是因为网络游戏必须能够穿越NAT,否则中央服务器就必须要有很强大的计算能力,我们这种因为兴趣而参与的朋友肯定没有办法支付这样的费用。如果能够穿越NAT,那么就很可能让部分的计算分布到每个玩家身上,并且大部分的数据流量都不需要经过服务器。关于这方面的知识真的很重要,大家不妨看一下我的这两个帖子,虽然说我也是才开始学的,但是自己瞎想总不是路吧?我的这两个帖子基本上已经把穿越NAT的原理探索了一下:
关于P2P穿越NAT/防火墙的困惑
关于穿越NAT进行P2P通讯

其中里面提到了一篇文章,非常的重要,几乎是编写穿越所有类型防火墙的核心原理,我在这里再贴出来一次,不过是英文的:
http://www.watersprings.org/pub/id/draft-takeda-symmetric-nat-traversal-00.txt

实际上Terrarium之所以能够发动起来,主要就是对于服务器几乎没有什么太大的要求,只是提供一个用户登录以及技术统计平台,本身几乎不参与什么运算,运算都是由客户端自己承担的。哦,对了,顺便提一下,Terrarium的服务器端可以下载的:
http://www.windowsforms.net/terrarium/server/download.aspx?tabindex=6&tabid=42

这个Terrarium的服务端几乎就是用户在上面注册,登录的时候在服务器上面登记一个地址,然后别人就可以通过连接这个地址的5000端口和你互连了。所以Terrarium必然无法穿越NAT,实际上我们只需要改进一下这个服务端,增加NAT穿越能力的协议就基本上OK了。嗯,这个Terrarium似乎有计划要开发下一个版本,并且打算公开下一个版本的源代码。不过目前似乎已经有接近两个月没有消息了,这个Terrarium的开发这似乎是MS里面的一个员工,参与Longhorn的任务,不知道是否看错了。如果没有看错的话,那也许是他最近工作比较忙吧。

二、关于游戏背景的设想:
    我觉得Terrarium本身的背景还是蛮好玩的,所以我想还是以动物为背景,也就是尽可能把Terrarium的元素复现出来,甚至做得比Terrarium要优秀。但是我们再往里面添加另外一种可控制的角色,我们就可以参与到里面去了。这个添加的角色是什么呢?比如说原始人怎么样?我们就可以去打猎了!出了打猎还可以参加种族战斗啊!当然,我们必须要让这个添加进去的角色能够和原有的角色兼容,有所有的属性比如攻击力、“肉量”等等,这样原来的那种人工智能生物才能够攻击我们,杀死了人控制的角色之后还可以吃“尸体”。此外,为了配合这个原始人,我们还可以增加另外一类东西:比如刀啊枪啊。这个嘛,就还没有仔细考虑清楚,到底是直接由我们用程序设计刀枪呢?还是在游戏里面提供原材料让人来打造呢?比较复杂,涉及到游戏的平衡性问题。

三、关于分布计算的设想:
   我觉得这个游戏必须要能够分布计算,理由如下:
1、如果我们不分布计算,那么强大的中央服务器群的费用,包括运行费用谁来提供呢?
2、如果我们采用Terrarium那种方式,CPU占用率太高了!基本上应该每个终端负责一部分人工智能生物的计算能力,并且将计算结果直接告诉其他参与的中断……当然这样的话会有其他的复杂问题,但是至少这样才能够制成大量的人工智能生物的存在啊。除非大家不打算有人工智能的Object存在或者有哪一个大款能够提供几百万的经费出来采用集中式服务器方式。
3、顺便可以学习一下分布式计算方面的东西,主要是深入了解这里面会遇到的问题。

四、关于安全性的设想:
   如果你玩过Terrarium的话,你不得不赞叹设计者考虑得那么周到,使得你无法写出有恶意的代码——反射功能被禁止了;不允许出现静态类、静态函数、静态变量;不允许访问外部资源如硬盘;获得其他生物(包括同种)的信息是通过一个接口,这个接口背后的东西实际上是一个结构,这个结构里面的所有数据是从某个生物里面拷贝出来的,所以你无法通过获得的信息访问对方生物的任何不期望让你知道的内容;等等。这个是一个考虑的方面,但不是全部。我还希望加入加密和验证的能力,杜绝诸如木马攻击、诈骗攻击、中间人攻击以及DOS攻击等,因为涉及到分布式计算,还需要防止用户篡改数据。

大家说说我想得是否太过于复杂了?其实我觉得不会啊,人家那个Terrarium也就是一两个人能够完成的,我所说的基本上只是在他的那个基础上增加NAT穿越、更多的角色类型、分布式计算能力以及加强安全型而已。(……而已?)

好了,剩下的大家来讨论一下吧。

超想做一个网络游戏!有兴趣的人进来讨论讨论!相关推荐

  1. 泥瓦匠想做一个与众不同的技术匠

    2019独角兽企业重金招聘Python工程师标准>>> 本文阅读大约 3 分钟.谢谢你读到这篇文章 喝了最后一口百事可乐,想到它的 slogan:新一代的选择.新一代的选择,每个人选 ...

  2. 零基础却想做一个程序员,到底如何学习呢?

    众所周知程序员是21世纪比较吃香的工作.程序员工资高还不需要和复杂的社会打交道.那么作为一个零基础,什么都不懂的人该怎么成为一名程序员?当程序员需要学什么?下面就来分析下. 零基础的我该如何学习? 如 ...

  3. 想做一个整合开源安全代码扫描工具的代码安全分析平台 - Android方向调研

    想做一个整合开源安全代码扫描工具的代码安全分析平台 - Android方向调研 http://blog.csdn.net/testing_is_believing/article/details/22 ...

  4. 我想做一个课程表系统利用PHP+MYSQL+HTML实现课表的展示,但是不知道如何实现

    我想做一个课程表系统利用PHP+MYSQL+HTML实现课表的展示,但是不知道如何实现 1.课表不是唯一一个课表. 2.通过录入的课表信息展示在HTML表格 想实现的效果如图: 收藏 (1) 分享 举 ...

  5. [转]其实每个男孩都想做一个感情专一的好男人

    十岁以前,就不说了,无非是淘气和不懂事. 十三.四岁的时候,开始对女孩有好感,但是那时候他离女孩远远的,并且以讨厌女孩自居,生怕被同伴嘲笑. 十五岁的时候,听到大人们说某某男人好花,把女朋友甩了,女孩 ...

  6. [VB.NET]想做一个小界面,不知用什么做

    <script type="text/javascript"></script> <script type="text/javascript ...

  7. 听说你想做一个汽车软件工程师?(下)

    在这个系列的第一篇文章 木城:听说你想做一个汽车软件工程师?(上)里,我们讨论了汽车软件工程师都有哪些职位.但是,就算是同样一个职位,比如"诊断工程师"吧!你给ADAS系统做诊断, ...

  8. 想做一个电商直播App跟上这波双十一,直播平台怎么搭建?

    想做一个电商直播App跟上这波双十一,直播平台怎么搭建? 又快到一年一度的双十一了.淘宝直播一姐曾在去年双十一,一个人卖出了3.3亿的销售额,创造了行业的销售神话.近两年,很多电商平台开始关注起直播互 ...

  9. 做一个有趣的有意思的人

    做一个有趣的有意思的人 做一些有意思的事 在 2014年05月07日 那天写的     已经有 12805 次阅读了 感谢 参考或原文 服务器君一共花费了15.890 ms进行了2次数据库查询,努力地 ...

最新文章

  1. 城市大脑全球标准研究3:如何理解城市大脑中的“大脑”?
  2. VS中一些提高编码效率的快捷键
  3. python为什么虚部是j不是i_Python基础02 基本数据类型
  4. [Jobdu] 题目1530:最长不重复子串
  5. 【写作技巧】毕业论文结构一文通
  6. 简单了解一下如何使用Spring框架里JDBC和事务
  7. java毕业设计源码介绍 基于SSM美好生活九宫格日志网日记网站
  8. 做独立app需要哪些东西?
  9. Golang优秀开源项目汇总
  10. java爬虫正则表达式_Java爬虫预热之正则表达式 - 菜鸟头头
  11. 出租车捧红嘀嗒?这个似乎是一个谎言
  12. XILINX封装FBG与FFG区别
  13. google api设计指南-简介
  14. 《TCPIP网络编程(尹圣雨)》PDF+源代码+目录;文章最底下有链接
  15. 5G网络能力开放部署及关键技术方案
  16. 计算机网络资源共享功能,计算机网络最基本功能有( )和资源共享
  17. 应用时间序列分析清华大学出版社电子版_数据分析模型9——预知未来的算法:时间序列分析...
  18. 树莓派 linux 私有云,树莓派搭建私有云服务器
  19. html tr固定行高列宽,HTML表格固定格式:行高列宽
  20. Creo更改工程图尺寸在引线上方

热门文章

  1. Average Score39届亚洲赛牡丹江站A题
  2. hdu4768 非常规的二分
  3. 【MATLAB】基本绘图 ( 绘制多图 | 设置图形对话框在 Windows 界面的位置和大小 | 在一个图形上绘制多个小图形 )
  4. 【运筹学】线性规划 人工变量法 ( 人工变量法案例 | 第一次迭代 | 中心元变换 | 检验数计算 | 选择入基变量 | 选择出基变量 )
  5. 完全搞懂傅里叶变换和小波(3)——泰勒公式及其证明
  6. 如何将一个数组对象 把对象的值用指定符号连接起来 再转为数组 将数组用逗号分隔...
  7. CentOS6.8下搭建zookeeper web界面查看工具node-zk-browser
  8. 网站真分页js代码该怎么写? 1
  9. bzoj 3223: Tyvj 1729 文艺平衡树
  10. R语言学习笔记-机器学习1-3章