takecchi / yugioh-showdown

0 stars 0 forks source link

技術選定 #1

Open takecchi opened 1 year ago

takecchi commented 1 year ago

やりたいこと

クライアント

サーバー

検討の結果、不要になったもの

takecchi commented 1 year ago

ygopro-core 使えそう?使える場合はnode.jsからluaの呼び出し不要かも

おそらくcoreやscriptをsubmoduleとして取り込む形になる C++なのでこっち https://github.com/nodejs/node-gyp

takecchi commented 1 year ago

npmに転がってたけど最終更新4年前 node-ygocore node-ygocore-interface https://github.com/ghlin/ego

node-gyp使ってバインドしてるっぽい

takecchi commented 1 year ago

ドグマブレード https://qiita.com/toride0313/items/7bbf1a4be3525e3f0aaf

ghlin commented 1 year ago

Hi, I'm the author of node-ygocore, node-ygocore-interface and ego.

Sorry to say that all three packages are outdated :crying_cat_face:, wrapping ocgcore inside node (using cpp addon) is not a good idea.

Maybe you can check out srvpro and ygopro-server (there is also Dueling Nexus, unfortunately it is not open-sourced).

takecchi commented 1 year ago

@ghlin Thank you for getting in touch.

I had been considering using node-ygocore by forking it, but when you mention "not a good idea," does that mean using it with node is not a good approach?

Also I am considering migrating to edopro-core as it seems to have more active updates.

ghlin commented 1 year ago

but when you mention "not a good idea," does that mean using it with node is not a good approach?

To simulate a duel, ocgcore itself is not enough. some logic are coded in ygopro (like refreshing card status). Rewriting all these logics is tedious and error-prone.

I'm working on a yu-gi-oh draft website (not published yet), it hosts its own ygopro server (using ygopro server branch). My approach is:

player's ygopro client <--- tcp or websocket ---> node.js server <--- tcp ---> ygopro-server

Also I am considering migrating to edopro-core as it seems to have more active updates.

Edopro's code is much clear, but I suspect it uses TCG rules (not sure, correct me if I was wrong :laughing:).

takecchi commented 1 year ago

@ghlin

ocgcore itself is not enough. some logic are coded in ygopro (like refreshing card status).

oh...I see. It can be quite cumbersome.

player's ygopro client <--- tcp or websocket ---> node.js server <--- tcp ---> ygopro-server

Indeed, this approach seems promising.

but I suspect it uses TCG rules

Project Ignis also supports the OCG rules, I believe it should be fine. (Maybe...)

I'm working on a yu-gi-oh draft website (not published yet)

Nice 👍 If it becomes publicly available, I will definitely come and play.

ghlin commented 1 year ago

Nice +1 If it becomes publicly available, I will definitely come and play.

:wink: Thank you!, I will ping you by then.

takecchi commented 1 year ago

https://github.com/ProjectIgnis/EDOPro/blob/master/LICENSE

Supporting resources may be distributed under their own licenses. Project Ignis: EDOPro itself is licensed under the AGPLv3 as follows.

EDOProのライセンスは問題なさそう。 ghlinさんの言う通りtcp通信をnodeでwebsocket変換する形になりそう(もしくはfork) その場合はSocket.IOを使用する