自動アップデーター作ろうぜ
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2005/09/12(月) 23:12:38ID:2tYoBBto(オートパッチプログラムとか起動パッチメニューとか言われてる)
そんな起動前に自動で更新してくれるプログラムを作ろう!
MMOを作ってる人は居るけど更新は手動が多い。
作るとしたらパッチプログラムでパッチ終了後にゲーム起動型の方が楽かな?
(主にRagnarokとかに見られる形式)
告知はhttp形式表示までは出来た。
FTPでパッチファイルをDLするのでそこを今作っているところ。
言語はC言語。
流れで言うと、ローカルファイルのCRCチェックなどをする。⇒Verとか違えばパッチDL
DLしたパッチを解凍しながらパッチ作業?
全部解凍終わったりしたらゲーム開始ボタンに切り替えてゲームを開始できるようにする。
その際、ゲームにはコマンドライン起動でコマンドラインが正しくないと起動しなくしておく。
Ragnarokのようなアップデートプログラムって構造どうなってるんだろう?
0007名前は開発中のものです。
2005/09/13(火) 01:55:47ID:uQvWlZ47subversion(またはCVS)を利用してバージョン管理しつつアップデートするなんてのは無理なんだろうか?
サーバー側にあるファイルのバージョンとローカルにあるバージョンの整合性なんてのは
全てSubversionクライアントにお任せにしておいて、ゲーム用のフロントエンドさえ作れば
それでほぼ作業は終了するんじゃないかと思うけど。。。(自信なし)
こういう、自動アップデート用にバージョン管理ソフトを活用するのって前例ないのかな?
0008911 ◆RfGLxICaUo
2005/09/13(火) 02:59:58ID:ul4COW/u要はMD5などの構造ハッシュで確認していけばよいと思います。
(リスト作ればなお確実だと思います。)
0009911 ◆RfGLxICaUo
2005/09/13(火) 03:11:11ID:ul4COW/u自分が試みている方法としては・・・
1.Ver管理鯖の接続・比較・判定。
2.合っていない物をキャッシュには残す。そして正常なものをダウンロード。
3.完了したらキャッシュ消す。そして1へ。(繰り返す)
4.ファイルの整合性を判断する。
5.Ver管理鯖の切断。ゲーム起動へ。
ver判断できないものやユーザーが足したものは除外する。
そのためにリストは必須となるかもです。
0010名前は開発中のものです。
2005/09/13(火) 10:49:58ID:Qr5OicnFhttp鯖
告知情報のテキストファイル
ファイルリスト。番号/ファイル名みたいなリストが一行ずつ入ってる。
自分が当てた番号より上の番号のファイル名を落とす為に使ってるっぽ。
FTP鯖
番号のファイル名をぎっしりと置いてる。ここからDLするっぽ。
告知情報とファイルリストをhttpから取得したら
番号が正しいかチェック。大きい番号があればそこから1つずつDLしていく。
全部のDLが終わった時点で暗号化されてるファイルの解凍作業。
解凍して更新して〜終わったらゲーム開始ボタンに切り替え。
リストの番号を保存する設定ファイルを何処かに置いておけば良いかも。
漏れも自動アップデータには興味あるんで協力するぽ!
0011名前は開発中のものです。
2005/09/13(火) 14:18:40ID:C7EEi57nFTPたてられないとこもあるんで。
0012名前は開発中のものです。
2005/09/13(火) 14:59:31ID:Qr5OicnF告知情報を全部txtで一旦ローカルに保存してそれを読み込み表示してる。
とりあえずhttp鯖のtxtをローカル保存して告知EDITに出させるまで出来たところ。
意外とここまでは簡単だった。CreateWindowでダイアログ置いてるから遅いのが難点。
MFCとかできちんと作ったほうが良いのだろうか?MFCで作ってる人のサンプルが欲しい。
リスト読み込みもローカル保存して読み込む形で作れば良いので問題は無いんだけど
圧縮したパッチをDLして解凍してパッチを当てる作業を作るのが困難な気がする。
>>9の言う通りキャッシュ方式でやったほうが良いのだろうかorz
案外難しく思えてきた。
0013名前は開発中のものです。
2005/09/13(火) 22:07:08ID:Qr5OicnFttp://www.uploda.net/cgi/uploader1/index.php?dlpas_id=0000028635
DLパス autopatch
Ragnarokっぽく告知情報表示。ダイアログベースでやってみた。
0014名前は開発中のものです。
2005/09/13(火) 23:03:29ID:C7EEi57n0015名前は開発中のものです。
2005/09/14(水) 21:15:28ID:1Ek5TWZcこれらは分離しておくんだよな?
1.管理プログラムはアップデーターを起動して終了
2.アプデーターがパッチを確認
3.更新があればDLして本体やデータを上書き
4.更新が無ければ管理プログラムに状態を通知しつつ(引数で渡す?)自分は終了
5.管理プログラムは本体を実行して終了
みたいな構造の方が色々都合よいような。
ただし、アプデタ自体のパッチは無理。
仮にアップデート鯖が移転したらその時はアプデタ自体を手動でDLしてもらうとか。
0016名前は開発中のものです。
2005/09/17(土) 11:29:18ID:Thf71zGo0017911 ◆RfGLxICaUo
2005/09/18(日) 05:07:03ID:TeKse9slアップデータもやろうと思えば出来ると思います。
本体が起動したらアップデータが起動できないようにして、本体からアップデートする選択肢をつけるとか?
そうすれば基本的には別々なので可能かなと。(もちろんロビーのみの選択肢です。)
結局、同人で作ることにしたので・・・1から作り直すことにしました。orz
自動アップデート部分を設計してるのでこの話題をしたいなと。
0018名前は開発中のものです。
2005/09/18(日) 06:18:16ID:G/vO4KGrゲーム本体ではなくあっぷでーと確認プログラムにして、
アップデートファイルを取ってきたらプログラムディレクトリにコピーすればよいだけなんじゃないかなと。
0019名前は開発中のものです。
2005/09/18(日) 11:42:50ID:2yuZpHPm本当に完成するのかな。
0020名前は開発中のものです。
2005/09/22(木) 21:44:25ID:zqPjLJHlアクチブモードとかいうので通れるんだっけ?
0021名前は開発中のものです。
2005/09/22(木) 21:50:31ID:wCHVkPoZ0022名前は開発中のものです。
2005/09/22(木) 22:35:35ID:zqPjLJHl2.パッチIDのみ書いたファイルと、リソースIDと最新更新情報をリストしたファイルを用意
3.鯖側はダウンロードファイルを用意する
また、パッチIDの差が1のみの時用に差分をZIPファイルで用意し
ZIPファイルに入っているリソースIDを記した更新情報ファイルを用意する
4.クライアントはパッチ更新ファイルを起動プログラムをして起動する
5.パッチ鯖に接続し、パッチIDを送信する
6.パッチ鯖の返答が同値ならそのままゲーム起動
差が1なら項番8へ
差が2以上なら更新情報ファイルをダウンロード
7.更新情報ファイル内のIDを除外したリソースIDと最終更新時刻をパッチ鯖に渡す
8.最終更新時刻が同値でないリソースIDに対応するファイルをダウンロードする
9.ZIPファイルをダウンロードし、展開する
10.クライアントのパッチIDを更新し、リソースIDが追加されていれば追加する
11.ゲーム起動
面倒ならZIPの部分ははしょっちゃばいい
0023名前は開発中のものです。
2005/09/23(金) 12:31:28ID:kEwJUHct細かい差分とか個人で用意するのも面倒。
1.ローカルの更新日付以降にアップされているファイルをダウンロード
2.展開して上書き
3.本体起動
これだけでいいと思うんだが。
あとFTPで話がすすんでるけど、ホームページにパッチ置いときたいんで
普通にサイトから落とすようにもしてもらったがいい。
0024名前は開発中のものです。
2005/09/23(金) 12:49:43ID:jRirPaSl更新日じゃ信用ならん。
起動時にCRCとかMD5とか取って一致しなかったら落とすとか。
1.鯖からファイルリスト落とす。
2.ローカルファイルとファイルリストに記入されたCRC32が一致しなかったら落とす。
ファイルリストに記入されているがローカルに無いファイルを落とす。
3.本体起動
で作ってたけどマンドクセ('A`)
0025名前は開発中のものです。
2005/09/24(土) 09:53:59ID:TvJSD4bz002623
2005/09/24(土) 13:45:29ID:i80XHvVQpass 23
頼んでばかりじゃあれなので、突貫工事で作ってみた。
http専用。
1.鯖からファイルリストと告知事項落とす
2.ローカルファイルとファイルリストのZIPナンバーを比較して落とし何も考えずに展開
3.本体起動
スレッド処理してないんで、表示やばい。
どうせ使わないならと手抜きで、ZIPファイルの日付が展開した時になる(ぉ
動作するだけってことで。
0027名前は開発中のものです。
2005/09/24(土) 15:28:14ID:dLO983Mz0028名前は開発中のものです。
2005/09/28(水) 22:29:37ID:EXqoT11Ettp://zeroichi.syuriken.jp/aupd005.zip
昔作ったSHA1求めるやつがあったのでそいつを使いまわした。
書庫はCAB形式。ただ cab32.dll が必要。
いまのところ使えるのは http のみ。
告知事項はテキストだけっつーのも味気ないから
ブラウザコントロールはっつけて告知ページにアクセスする
ようにしてみたんだが…
0029名前は開発中のものです。
2005/09/28(水) 23:59:54ID:E1/et2ez0030名前は開発中のものです。
2005/09/29(木) 09:49:15ID:SjnGysTe0031名前は開発中のものです。
2005/09/29(木) 19:56:40ID:StMbKT2E0032名前は開発中のものです。
2005/09/29(木) 21:59:15ID:CW4jBWvNどこどこ?
0033名前は開発中のものです。
2005/10/01(土) 08:50:43ID:Su1Az0K9ttp://www.granadoespada.jp/
ココなんじゃねぇヵ?
0034名前は開発中のものです。
2005/10/06(木) 10:33:06ID:/780ejYi0035名前は開発中のものです。
2005/10/06(木) 20:51:50ID:O5CpwYsb0036名前は開発中のものです。
2005/10/08(土) 20:50:53ID:I9q+sPaT誰でも作れるぐらいのプログラムなんだから、出し惜しみするほどのものでもないだろうが。
0037名前は開発中のものです。
2005/10/08(土) 21:21:21ID:RUPqj3Wa0038名前は開発中のものです。
2005/10/10(月) 23:19:23ID:7N4wCogo煽りはともかくスルーして、マジでソースだしてください
もしくはどうやったら作れるか教えてください。
まず、HTTPにアクセスするところからわかりません。
0039名前は開発中のものです。
2005/10/11(火) 08:43:45ID:K0fdjEruまずは
猫でもわかるプログラミングを隅から隅まで読んでみよう!
それで、とっかかりが掴めたらぐぐれ
そして試せ
0040名前は開発中のものです。
2005/10/12(水) 12:00:51ID:XiMKQK4t使えるものをアップしてくれた方が簡単でうれしい。
完璧に使いやすいのを作って、さっさとうぷ汁。
0041名前は開発中のものです。
2005/10/13(木) 00:35:27ID:e/av792N004228
2005/10/14(金) 08:38:37ID:d7TYFQtottp://zeroichi.syuriken.jp/upd05src.zip
VS .NET 2003 形式。
0043名前は開発中のものです。
2005/10/15(土) 14:30:36ID:0MdKwTnO神乙!
0044名前は開発中のものです。
2005/10/16(日) 18:52:51ID:H6H6ejRWつ[ヒント]:wininet
0045名前は開発中のものです。
2005/10/18(火) 14:39:04ID:OumtTeWk0046名前は開発中のものです。
2005/12/29(木) 12:39:42ID:6k4nWYPU0047名前は開発中のものです。
2006/02/16(木) 17:44:20ID:Kz1PweCq神!
マジ助かったよ。
tora3とかautoUpdaterとかは試してみたんだけど、圧縮無かったり
createrなかったりで躊躇してたとこだった。
ソース改造して、Basic認証対応バージョン作ってみたけど欲しい香具師いる?
作者に引き取ってもらうのが一番いいんだけどね。
0048名前は開発中のものです。
2006/08/18(金) 19:41:57ID:4aiLuwl00049名前は開発中のものです。
2006/09/19(火) 01:18:51ID:YIF8z6EM0050名前は開発中のものです。
2006/09/23(土) 00:09:58ID:wIBfzwYVオプーンソースで(NYSLで)
0051名前は開発中のものです。
2006/09/26(火) 18:52:18ID:iafxPtyB■ このスレッドは過去ログ倉庫に格納されています