基于webman
和vue
实现的大话骰游戏
git clone https://github.com/d2gin/liars-dice
cd ./liars-dice
composer install
默认启动后8787
是http
端口,9778
是websocket
端口
php start.php
# windows运行
# php windows.php
分别修改开发和生产环境的环境变量文件.env.development
、.env.production
cd front/
npm run dev
# 或者构建静态资源
# npm run build
这不是必需的配置,是为了兼顾传统的nginx架构。
通过以下配置,前端可以使用localhost
域名同时连接http
和websocket
。
-
http代理
server { listen 80; server_name localhost; # 省略其他配置 location / { proxy_pass http://127.0.0.1:8787; } }
-
websocket代理
http { map $http_upgrade $connection_upgrade { default upgrade; '' close; } # 省略其他配置 server { listen 80; server_name localhost; # 省略其他配置 location /socket.io { proxy_pass http://127.0.0.1:9778; proxy_read_timeout 300s; proxy_send_timeout 300s; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } } }
redis
配置文件中config/redis.php
填写连接websocket
进程配置config/process.php
webman
的配置可以参考官方文档
- webman一共会启动3个网络服务:框架http服务、游戏websocket服务、用于游戏websocket中间代理http服务。
- 数据存储在redis,是简单的哈希数据,实验性的项目,不考虑使用mysql。
- 框架http服务通过向代理http服务发送请求,即可实现推送websocket消息。
- 用了很多实体类,这是数据驱动的基础。
开始游戏时,各玩家可以摇骰(系统会自动摇一次),然后自己看骰盅里面的骰子,不让其他人看到。 首局房主先“叫”,按顺序轮到下一家。叫骰起步个数为总玩家数的1倍,如4个人即4个起叫,6个人即6个起叫。 下一家需要在上家“叫”的骰子个数或者骰子点数基础上往上加,直到开骰。输者接受惩罚,游戏重新开始下一局,继承上局“叫骰”顺序。
以下是项目中已实现的术语功能
- 【叫骰】:类似扑克游戏的“出牌”。需要在上家“叫”的骰子个数或者骰子点数基础上往上加。(标准叫法,例:“3个2”,“3个6”)
- 【叫斋】:通常骰子的“1”点是可以当任何数使用,但是叫了斋,即“1”点便不当任何数使用。(标准叫法,例:“2个3斋”,“3个6斋”)
- 【飞斋】:又叫破斋,在“斋”的时候,可以通过“飞”去掉“斋”。需要“叫”双倍或者以上的骰子数。(例:上家叫了“2个1斋”,下家就可以叫“4个2飞”,就可以破斋)
- 【劈】:无视叫骰顺序直接“劈”指定的一名玩家。“劈”了,输方将会扣除分数。
未实现的术语玩法
- 【反弹】:上家“叫”的骰子个数上加2,可改变原有叫骰顺序。反弹1次输方惩罚加一码起步。反弹2次加2码起步,如此类推。
- 【反劈】:当被“劈”时,可以选择“反劈”,输者在“劈”的基础上再惩罚翻倍。
- 【连开】:顾名思义,即连开多家“上家”。连开的人必须是自己的上家及上家的上家。。。最高境界叫“通杀”,即开骰者除自己外所有参加者。一般通杀3家以上,输者惩罚都翻倍,下一局赢者先叫。
- 【投降】:所谓“投降输一半”,”被“开”者或者被“劈”者。可以选择不开骰“投降”,减半惩罚。也适用被“反劈”者。
- 实验性项目,请勿用于生产环境,请勿用于生产环境,请勿用于生产环境。
- 后续没有计划提交mysql的版本
-
投降、开骰等未完成的功能。
-
脏数据处理。