+++ date = "2023-04-01" tags = ["bluesky","api"] title = "blueskyでカードゲームを作ってみた" slug = "api" +++ カードゲームと言ってもルールはないし、最初は占い的なものとして作ってみました。 技術的なことについて、少しだけ書きます。 entのschemaにDefaultFuncがあるのを見つけて、この機能に助けられました。 本来は`ent/entc.go`で新しいリクエスト先を作成して、main.goで処理しなければならないかもしれないかもしれないと思っていました。前回触ったときはそうやってランダム値をdefaultにするため回避していた記憶。 ```go:/ent/schema/card.go func (Card) Fields() []ent.Field { return []ent.Field{ field.Int("card"). Immutable(). //Default(card). DefaultFunc(func() int { rand.Seed(time.Now().UnixNano()) var a = rand.Intn(10) if a == 1 { card = rand.Intn(12) } else { card = 0 } return card }). Optional(), field.Time("created_at"). Immutable(). Optional(). Default(func() time.Time { return time.Now().In(jst) }), } } ``` ### 長続きする遊びってなんだろう 次は、普段からちょっとだけ考えてることについて。 運要素が介在しないゲームと言うのは、あまり長続きしないのです。 もちろん、ハマる人はハマるんだけど、運要素が大きければ大きいほど長続きしやすいと思っています。 ですから、長く遊ばれ続けるには、どこかに運要素を入れたほうがいいと言うのが私の考えです。 もちろん、バランスが重要だと思います。 全部運というのも遊びとしては難しいと思います。 どうせ全部運で決まるんでしょ、頑張っても意味ないでしょ、となってしまうからです。 今回作ったのは、普通にカードを集めて、運が良ければ当たるってだけのシンプルなものです。 よければblueskyのほうでbotに`/card`してみてください。 集めたカードはこちらに表示されます。 https://card.syui.ai