ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

Yanesdk

サンプルプログラムメモ

サンプルプログラム「手と栗鼠」を見てのメモ。 Formを使っておらず、SDLWindow2DGIでウィンドウを作成している。なるほど、こうやってLinuxやMacでも使えるようにするのか。 Timerイベントを使わず、whileループで回し、FpsTimerで調整している。入力更新→…

サンプルプログラム

Yanesdkのサンプルとしてテトリス風のゲームが公開された。 どういう風に書けばいいんだろうと悩んでいたところがいくつもあったので、こういうサンプルは非常にありがたい。これはじっくり見ながら参考にさせてもらおう。

テクスチャの読み込み

テクスチャファイルの読み込みをSmartTextureLoaderを使って行う方法。 SmartTextureLoaderのLoadDefFileメソッドで定義ファイルを指定するとTextureLoaderが得られる。描画するときにはTextureLoaderのGetTextureメソッドでテクスチャを取得できる。 定義フ…

タスクシステムその7

各タスクでそのタスクが必要なくなったときには、Taskメソッドで非0を返せば、そのタスクは削除される。 タスクを終了するとき返す値は非0なら何でもいいけど、個人的な感覚としては-1を使うかも。 class Task0 : TaskBase { public override int Task(Objec…

タスクシステムその6

各タスクはTaskBaseから派生して作る。そしてTaskメソッドが呼ばれるのでここにタスクで行いたい処理を記述する。引数にはTaskControllerのCallTaskで指定したobjectが渡される。今までのサンプルではGameInfoを渡しているので、as演算子でobject型から変換…

タスクシステムその5

相変わらずタスクシステムの勉強。しかし、ほんと進みが遅いな。 タスクが実行されるようにするためには、タスクコントローラーのCallTaskメソッドを呼ぶ。引数にはobject型を指定でき、この引数がTaskBaseのTaskメソッドの引数になる。 private void timer1…

タスクシステムその4

引き続きタスクシステム。 シーンコントローラーのJumpSceneメソッドをタスク名を指定して呼び出せば、そのシーンタスクが生成される。このときにTaskFacotryで設定したメソッドが呼び出されるというわけか、なるほど。 info.sceneController.JumpScene(Task…

タスクシステムその3

引き続きタスクシステムの勉強。 タスクシステムにはTaskControllerクラスとSceneControllerクラスを用いる。 シーンコントローラーにはタスク名の列挙体を渡し、TaskFactoryを設定する。そして、このシーンコントローラーもタスクなのでタスクコントローラ…

タスクシステムその2

引き続きタスクの勉強。 task_sample.csによると、TaskControllerクラスとSceneControllerクラスを用いる。サンプルではsystemに収められているとあるが、今のバージョンではytlに入っている。 TaskControllerがタスクの管理を行うもの。タスクはTaskBaseか…

タスクシステムその1

Yanesdkフォルダのsrc/sampleにtask_sample.csというタスクシステムのサンプルプログラムがあったので、それを見ながら勉強。 しかし、タスク自体が良く分かっていないので難航中。

version1.24 release

新しいバージョンがリリース。基本的にバグフィックスがメインの模様。 ウィンドウの外でもマウスのボタンを取得してしまうという問題(id:toburau:20060529)への対処がされていた。改変履歴を見ていたら、そのページへのリンクが書かれていたのでちょっとび…

Zipファイルの読み込み その2

今作っているミニゲームのサウンドファイルをZipファイルから読み込む方法を調べたところ、FileSysクラスのAddArchiverメソッドを使えば良いことが分かった。 昨日のテストプログラムを次のように改良。 using Yanesdk.System; FileArchiverZip ziparc = new…

Zipファイルの読み込み

Zipファイルの読み込みにはFileArchiverZipクラスを使う。 a.txtとb.txtを含んだdata.zipという名前のZipファイルがあるとき、この中からファイルを読み出す方法は次の通り。 using Yanesdk.System; FileArchiverZip file = new FileArchiverZip(); byte Buf…

ウィンドウの外でのマウス入力その2

Yanesdkを使わずに普通にPictureBoxを貼り付けたFormを作成し、MouseEnterやMouseLeaveイベントが発生するか試してみた。結果、イベントは発生しなかった。 ためしにFormより小さいPictureBoxを貼り付けてテストしてみると、マウスカーソルがPictureBox上に…

ウィンドウの外でのマウス入力

今作っているプログラムではマウスカーソルがそのウィンドウの外にあってもマウスの入力を受け付けてしまうようになっている。そこでYanesdkのMouseInputのインスタンスを作成する部分を次のように変更。 MouseInput mouse; mouse = new MouseInput(this, tr…

マウス入力その2

マウスのボタンが押されているか取得するにはIsPressを用いたが、ボタンが1回押されたかを取得するにはIsPushを用いる。このとき、ボタン状態を更新するUpdateを呼び出す必要がある。 using Yanesdk.Input; MouseInput mouse; private void Form1_Load(objec…

version1.21 release

新しいバージョンがリリース。データベース関連が追加されていた。いまのところデータベースは使う予定が無いのであんまり関係ないかな。 あとTextureStringでalign指定が出来るようになった。これはうれしいかも。

GameTimer

経過時間を取得するときにはGameTimerクラスを使う。値はTimeプロパティで取得できる。単位はms。 using Yanesdk.Timer; private void Func() { GameTimer timer = new GameTimer(); int iNow = timer.Time; }

サウンドその1

サウンドを鳴らすにはSoundクラスを使う。サウンドはBGM1個とSE8個を鳴らすことが出来る。Loadメソッドでサウンドファイルを読み込み、Playメソッドで再生。Stopメソッドで停止。非常に簡単。 SEの場合は1-8のチャンクナンバーを指定できるが、0を指定してお…

version1.10 release

Yanesdkの新しいバージョンがリリース。今回のバージョンアップではLinuxやMacにも対応。他にはマウス関連の修正が多い。 さっそく昨日のプログラムを新しいバージョンでビルドしなおしてみると、ウィンドウの外でも座標を取ってしまっていたのが、クライア…

マウス入力その2

現在のマウス座標を表示するプログラムを作ってみた。 FormのSizeは300x300。 FormにPictureBoxを貼り付け、DockプロパティをFillに。 FormにTimerを貼り付け、EnabledプロパティをTrueに。Intervalプロパティに16を設定。 Formをダブルクリックして、Loadイ…

マウス入力

マウス入力にはMouseInputクラスを使う。 コンストラクタの引数にFormを渡せば、そのフォームに対するマウス位置が取得できる。引数を指定しなければ画面全体のマウス位置となる。 位置を取得するときはGetPosメソッドを使い、ボタンが押されているかはIsPre…

キーボード入力その2

プレイステーションのパッドをPCで使う変換器(ゲームパッドコンバータ - JC-PSシリーズ)を持っていたことを思い出して、さっそく昨日のプログラムで試してみた。 結果、3つ以上ボタンを押しても問題なく反応した。 キーボードだけの症状のようだ。

キーボード入力

キーボードからの入力にはKeyクラスを使う。KeyクラスにはKey1-Key4の4種類ある。 Key1 キーボード+ジョイスティック(2ボタン) Key2 キーボード+ジョイスティック(6ボタン) Key3 キーボード(2ボタン) Key4 キーボード(6ボタン) akirameiさんのページ(はじめ…

FpsTimerその2

FpsTimerを使うときには、TimerのIntervalの値はどのくらいにするのが適当なのだろうか。 もちろん、FpsTimerを使って60fpsにしようとするのなら、Tickイベントはそれよりも速くしなくてはならない。ってことで試しに遅くして実行してみたら、表示はガクガク…

FpsTimer

YanesdkにはFpsTimerというフレームレートを調整する便利なタイマーがあるので、それを使うことにする。 using Yanesdk.Timer; FpsTimer fpsTimer = new FpsTimer(); // タイマーのTickイベント private void OnTick(object sender, EventArgs e) { // 1フレ…

version 1.10β2

公式サイトをチェックしたら、新しいバージョンがアップされていた。さっそくダウンロードしてチェックしてみると、すでにDrawLineが修正されていた。 さらにDrawLinesの修正はどうしようかと思っていたら、DrawLinesはprivateに変更されていた。確かにDrawL…

ライン描画その6

ライン描画時に+0.5ずつずらすために、DrawLineを次のように変更してみた。 public void DrawLine(int x1, int y1, int x2, int y2) { DrawContext dc = DrawContext; Gl.glBegin(Gl.GL_LINES); Gl.glVertex2f(x1 * dc.RateX + dc.OffsetRX + 0.5f, y1 * dc.…

テクスチャ描画(GlTexture)

OpenGLのテクスチャGlTextureを試してみた。 Yanesdk.Draw.Win32Window window; Yanesdk.Draw.GlTexture texture; // 作成と読み込み texture = new Yanesdk.Draw.GlTexture(); texture.Load("tex.bmp"); // 描画 Yanesdk.Draw.Screen2DGl screen = window.S…

ライン描画その4

昨日ちゃんと描画できたと喜んでみたが、ふと考えてみると正しく描画できていない気がする。 PictureBoxのサイズを100×100にしたわけだから、指定する座標は0から始めると(0,0)-(99,99)となるのでは。いやでもラインの最後の点は描画されないというのを聞い…