ルールズ・オブ・プログラミング読書会vol.17
https://scrapbox.io/files/655372c161a776001bf71cc6.jpeg
開催日時
2024年8月6日(火) 19:30~21:00
開催URL
参加人数
6人
ウォーミングアップ
ルール7
状態制御の整合性を図る
キャラクターの無敵状態に関するシーン
スターウォーズの訳注長っ
開始前の状態を取っておいて終わったら戻すやり方
バグりやすそう
waitが非同期
コルーチンでゲームルーチン書きたい
enumで無敵の種類を用意して呼び分ける形
シーン中に別シーンを流そうとしたらバグりそう
最初の形式で中で参照カウンタをもっておけばいいのでは?
enumを作った人は仕様が分かってるが別の人がコードを追加しようとしたときに既存の項目を再利用できるのか新規に項目を作らないといけないのかわからない
enum項目を増やすのには多少ハードルがある
曖昧な名前にしてしまうとみんなそれを使いだして危険そう(commonとか)
規律を要する
得てして規律は破られる
人間系か仕組み系か
push-pop式
初めにみんなで話していた形
GC
参照がなくなったら破棄
loadDLL
Regsvr32でDLLを登録するときに内部でカウンタを持ってそう
InvulnerableToken
C++なので必ずオブジェクト破棄時にデストラクタが走る
C#だと破棄タイミングが異なる(GCがあるので)
C# ではusingを使えばいい
C++プログラマがC#使うときに信じられるのはusingのみ
ゲームプログラムとWebプログラムで見ているドメインが違う
ゲームではメモリとかを息をするように意識する
Webではメモリをあまり意識しない
「特定端末でメモリが足りなくなったならメモリを増やせばいいじゃない」
マリーアントワネットがいいそう
市販のPS5だと1台1台増設していくわけにはいかない
モバイル機器はその中間(交差点)かな
Steamで動くゲーム
誤りを検出できるといい、でも~
フールプルーフ
ドアを完全に閉めないと動作しない電子レンジ
フェイルセーフからフェイルファーストにした
早めにエラーを出して気づけるようにする
クラッシュしていいプログラムとクラッシュしてはいけないプログラムがある
クラッシュしてはいけないプログラムはそんなにない
み〇ほ銀行・・・
ゲームはその中間くらい
クラッシュするとユーザーがやらなくなる
買ってもらえなくなる
課金してもらえなくなる
基幹システムだとクラッシュしてももう一度やってくれる
ゲーム業界の傾向(?)
デバッグ時すぐにassert
リリース時なるべく延命
try-catch
catchしてどうするの問題
例外出ている時点で正常系に戻すのは難しい
ログ出力のためにcatchする
C++にnoexceptをつけるではなくexceptを付けたい(デフォルトexcept)
constみたいにexceptを伝播させる
ルール8
次回ここから
お悩み雑談室
オブジェクト指向とは
現在オブジェクト指向の本流はない
新人に教えるときに困る
オブジェクト指向という思想から教えるのではなく、「こういう形で書くと便利だよね」に名前をつけた結果オブジェクト指向になる方向でいきたい
リソースはメモリやファイルだけじゃない
通信に失敗することもある
通信なんかは言語でサポートされていない
その処理に向いてる言語がある
全部自力のC言語