老司机带带我,大三上学期刚结束,想用 Python 写一个 Minecraft 的开服器... - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
magine
V2EX    Python

老司机带带我,大三上学期刚结束,想用 Python 写一个 Minecraft 的开服器...

  •  1
     
  •   magine
    Ma233 2015-01-10 23:18:46 +08:00 6696 次点击
    这是一个创建于 3962 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大三上学期刚结束,有一个梦想,希望得到指导我想自己做一个Minecraft的开服器。

    Minecraft是我最喜欢的游戏之一,所以我想自己做一个开源的开服器!

    目前的状况是Java只会学校教的一点点点点点点皮毛,Python略熟。

    初步打算用Python实现,以后如果有必要可能会用golang重写。

    求各位老司机赐我指导:
    1. 想法是否可行?(盗版?难以实现?)
    2. 一个开服器都做了些什么?(或者请告诉我如何知道他做了什么)
    3. 本人已修计算机网络,会用Python写Socket编程,写过并且部署过网站,那么我还需要掌握哪些技术?
    4. 是否有已经实现的模板?

    第 1 条附言    2015-01-11 10:51:04 +08:00
    首先非常感谢各位老司机热情的回复以及广告=w=
    然后,我想可能我的想法还不够明确,其实我想做的应该是一个服务器:
    我想写一个应用来代替Minecraft自带的对网络开放功能。
    不过看来我先要研究一下开服器的工作原理。
    35 条回复    2015-01-14 22:58:08 +08:00
    omi4399
        1
    omi4399  
       2015-01-10 23:22:41 +08:00
    帮忙艾特老司机
    @icedx
    @Love4Taylor
    magine
        2
    magine  
    OP
       2015-01-10 23:27:23 +08:00
    @omi4399
    说到老司机 @lepture @cee @binux
    VicYu
        3
    VicYu  
       2015-01-10 23:36:49 +08:00   1
    java -jar minecraft.jar
    emric
        4
    emric  
       2015-01-10 23:37:03 +08:00   1
    1. 可以.
    2. 写配置文件, 调用命令.
    3. 不需要, 开服器只是命令行的 GUI .
    4. bukkit 上似乎有开源实现.
    icedx
        5
    icedx  
       2015-01-11 00:11:25 +08:00   1
    1. 可行
    2. 一个开服器都做了些什么?(或者请告诉我如何知道他做了什么)
    3. 不需要了
    4. 有啊 遍地都是
    Artotria
        6
    Artotria  
       2015-01-11 00:27:29 +08:00
    老司机啊,→ → @wtbhk
    typcn
        7
    typcn  
       2015-01-11 00:32:22 +08:00   1
    一个开服器 要做的是 执行一条命令。

    java -Xmx最大内存大小 -jar 文件名

    如果要 GUI 一键操作那种的话,重定向 stdin & stdout,按下相应按钮向 stdin 发送相应内容。
    不过我觉得,这个没啥意义,谁的服务器会装图形界面 ......

    开服器/启动器 都是没啥技术含量的东西

    我初中的时候就开了个 MC 服 开到现在了,硬广告 ===》 mc.eqoe.cn
    locatino
        8
    locatino  
       2015-01-11 00:32:45 +08:00   1
    很简单的 一个脚本搞定
    1.首先检测java环境,没有就安装
    2.下载mc(定制seed,op,whitelist,jam等参数,可选)
    3.启动mc程序
    railgun
        9
    railgun  
       2015-01-11 00:38:08 +08:00   1
    你要先会手工把服务器跑起来,然后把中间的一步步都用Python实现一遍,完成
    oott123
        10
    oott123  
       2015-01-11 01:04:42 +08:00 via Android
    @typcn 可以考虑把 GUI 做到网页上。

    楼主可以考虑实现一个类似 McMyadmin 这样的东西~
    typcn
        11
    typcn  
       2015-01-11 01:18:59 +08:00   2
    @oott123 网页的话,SpaceCraft 开源免费,不过搭建起来有点折腾。

    服务器连个 SSH 管理 就几条命令的事,还比网页省流量,不如把用户的面板做到网页上(因为这个学会了 java 写 Spigot/Bukkit 插件)。
    我的服务器现在用户系统就跟我的网站是集成的,MC 里的钱跟网站积分也是同步的。
    正在做:
    网页商城,可以在网页上买游戏里的物品。 网页领取任务,插件在游戏中加监听器,完成任务之后领奖品,全套做好之后去宣传,抽奖送一台水果。
    Saber
        12
    Saber  
       2015-01-11 01:47:52 +08:00
    @typcn 这个好.
    otmb
        13
    otmb  
       2015-01-11 01:59:31 +08:00
    Minecraft 是收费游戏?
    TF
        14
    TF  
       2015-01-11 02:04:43 +08:00
    @typcn 加入
    RIcter
        15
    RIcter  
       2015-01-11 02:08:04 +08:00 via iPad
    看成用 Python 写一个 Minecraft 服务端…
    fuhanfeng
        16
    fuhanfeng  
       2015-01-11 02:17:58 +08:00 via iPhone
    @RIcter 同看成写服务端 想到楼主甚叼 进来看看
    binux
        17
    binux  
       2015-01-11 02:20:08 +08:00
    开服器是什么东西?
    typcn
        18
    typcn  
       2015-01-11 02:43:20 +08:00   1
    @TF 点那个链接没有反应的话手动加吧
    typcn
        19
    typcn  
       2015-01-11 02:48:40 +08:00   1
    @TF 已经修改,加群链接弄成 target="_blank",然后原来的按钮自动显示群号
    Cee
        20
    Cee  
       2015-01-11 09:07:44 +08:00
    老司机 @RIcter
    RIcter
        21
    RIcter  
       2015-01-11 09:24:47 +08:00 via iPad
    @Cee 我又以为elvba@我…
    大菊苣Cee
    Cee
        22
    Cee  
       2015-01-11 09:30:44 +08:00
    @RIcter 我觉得我不是老司机 我是老死机
    rwzsycwan
        23
    rwzsycwan  
       2015-01-11 10:41:22 +08:00
    @typcn 额 minecraft官方客户端不能登陆??
    magine
        24
    magine  
    OP
       2015-01-11 10:47:51 +08:00
    @Cee
    我想要cee的本子 QAQ
    magine
        25
    magine  
    OP
       2015-01-11 10:52:27 +08:00
    @binux
    类似于 buckit 那样的东西 =w=
    magine
        26
    magine  
    OP
       2015-01-11 10:54:17 +08:00
    @binux
    是 bukkit ... 手残了。 但是暂时还不了解Bukkit接管到哪一层,接下来会研究的。QAQ
    magine
        27
    magine  
    OP
       2015-01-11 10:59:25 +08:00
    @RIcter
    @fu82581983
    没错我就是想写服务端!!!
    目前计划投入时间是一年半的业余时间。
    luoqeng
        28
    luoqeng  
       2015-01-11 11:06:46 +08:00   1
    emric
        29
    emric  
       2015-01-11 11:53:36 +08:00   1
    稍微了解一些, 我也来讲一下.

    如果想写出和 bukkit 一样的服务端, 是很困难的.
    会遇到游戏协议/生成算法/游戏实现等等, 如果想要开源还需要用净室去做, 也很难去达到原版的娱乐性.

    如果你对这个很有兴趣, 或许你可以和我一起去完善 MCServer 这个项目 : P

    ---

    如果你想去实现类似一个 MCBBS 的开服器, Spigot 的 Wiki [1] 可能帮得到你.

    题外话: 因为最近 bukkit 遇到了一些版权危机, 所以几乎所有 MC 服务端分支都是在放弃维护的状态.
    除开 Spigot 还有 Sponge 前者巧妙的避开了版权, 后者选择重新去开发API.

    1. www.spigotmc.org/wiki/index
    typcn
        30
    typcn  
       2015-01-11 15:55:15 +08:00
    @rwzsycwan 先打开我的登陆器,用相同用户名登陆到主菜单(显示在线列表的界面)然后点击隐藏,就可以使用官方客户端登陆了
    GPU
        31
    GPU  
       2015-01-11 16:31:30 +08:00 via iPhone
    什么叫开服务器,我以为打小一个字了
    rwzsycwan
        32
    rwzsycwan  
       2015-01-11 18:50:40 +08:00
    @typcn 好的 谢了
    vboar
        33
    vboar  
       2015-01-11 22:52:31 +08:00 via Android
    @Cee Cee妹~
    oott123
        34
    oott123  
       2015-01-12 00:49:30 +08:00 via Android
    写服务端…
    这工程量听起来就很壮观…
    楼主好运,加油!
    lanyimo
        35
    lanyimo  
       2015-01-14 22:58:08 +08:00
    新手Python,想找个师傅教教我啊。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2470 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 02:12 PVG 10:12 LAX 18:12 JFK 21:12
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86