LoginSignup
26
17

More than 1 year has passed since last update.

ほぼフロント技術でネット麻雀を作ってみた

Last updated at Posted at 2021-11-26

はじめに

NMというオンラインネット麻雀をtypescriptとjavascriptだけで作ってみました:mahjong:

javaなどのサーバーサイド言語を書かず、RDBSを設計せずネット麻雀を作成してみようと思いたち開発しました。
後発のネット麻雀なので、どうせならと思ってスタンダード?な開発を行わずに極力スピード優先で開発できるように技術選定を行いました。
この記事では採用した技術を紹介したいと思います。
まだバグなども残っている状況ですが、反響があれば詳細やなども記述して行きたいと思います。

プレイ画面イメージ

1.jpg
twitter_FDwlasFXIAUGAS-.jpg

 
(この画像、シャンテン取得ロジック開発中のものです)

優位ポイント

ユーザー目線

ビデオチャット

マイクとカメラがあればビデオチャットが使用可能。VRMを使ったVRMチャットも実装済み。
VRMをサイトにアップすれば、独自のアバターに変更可能。
もちろん、VRM同士のビデオチャットも可能です。

言語変更可能

非日本語圏の人が初見で麻雀をプレイできるように、言語変更できるようにし、漢字を使わない麻雀牌をデザインしました。
3en.png

運用目線

ゲーム進行がサーバーレスなので、サーバー負荷などを気にせず運用できる(はず)
この辺はfirebase代がどうなるのかわかりません(バズってないので)。

使用技術

フロントエンド

vue vuetify

vueの勉強をしたかったので

skyway

skyway
ゲーム中の情報のやり取りをサーバーレスにするので、P2P通信を行うため

typescript

説明略

VRモデル

VRM

ML関連

機械学習のモデルをビデオチャットとVRチャットで使ってます

bodypix

bodypix
ビデオチャットで背景を隠したりするために使用

face-api

face-api
表情の取得とVRMへの反映

holistic

holistic
体勢の取得とVRMへの反映。kalidofaceを参考にさせていただきました
kalidoface

サーバーサイド

firebase

firebase
P2Pの接続、ユーザー管理機能、配牌作成など。コードは全てjsで書いています

今後の課題

バグ再現が難しい

クライアント側でロジックが走るかつ非同期で動かしているので、プレイヤーAで発現するバグがプレイヤーBからは見えなかったりする。サーバーサイドで管理していないので異常な状況を監視できない。

スマホアチアチ問題

vueの作りが良くないのか。特にビデオチャット中は熱い。リファクタリングしないと…

雀魂にハマる

これも勉強だから…とやってたら聖1になってた。カンにゃ!

26
17
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
17