自己紹介

低層をがむしゃらに走る自称プログラマ ちょっとWebとかに手を出してる

ブログ アーカイブ

2011年8月30日火曜日

ゴメンゴ

諦めずがんばります

2011年2月7日月曜日

遠い目

爆 発 し た ! ! !

ということで、12月に一個アレなゲームを作って身内とかしらん人にプレイしてもらったら
そこそこの評判だったけど基本アレだったので
そのまま横になってふとんに入り込んでLOL(League of legends)やってたらこんな時期になりました。

俺は正直に生きることにしました!!11

360度STGは大海原(主にツール製作中)
うさえほは五里霧中と
規模がでかい物つくろうとするとやっぱり俺じゃ爆発するので。

今後は目標月1ペースでミニゲームぽちぽち作って、面白いなら公開してければなと思います。
とりあえず今週は企画的なものを起こしたのでそれをもとに作っていきます。


今回の目標は3Dを入れること!
といってもDXライブラリあるからそこまで難しくないと思うけど…
あとはBOX2Dとの絡みが厄介そうだけどまぁ、XとYだけ見てたら大丈夫かXD


ちなみにアレだったゲームの画面はこちら。

アレだ…

内容は
鶏が産みまくるひよこをひたすら上の●に入れ続けるゲームでした。

●の中に入れて数秒たてばひよこは浄化される。
画面外にひよこがぶっ飛んだら死ぬ、
死んだらひよこの頭が飛んでいく。血しぶきがすごいことになる。

浄化した数/2 の死亡ひよこ数でゲームオーバー

浄化されたり死んだりすると難易度が上がっていって
最終的にはプレイヤーが処理できない量のひよこが沸いて
半強制的にゲームオーバーになるが、画面がひどいことになってて
そこはみんな面白いらしい、くそ

まぁ基本的にプレイ感は悪かった。
一部プレイヤーに大しての配慮も欠けているため、
LUA導入の実験作としてはそこそこ上手く行ったとは思うが、
ゲームとしてはまぁ、アレだった。

2010年11月24日水曜日

げそ・・・

ゲソプラグインいれてたら
前回の記事がゲソまみれだったでゲソ…

完全に侵略されてたでゲソね

ちなみにゲソプラグインはこちらでゲソ!

こちら

2010年11月20日土曜日

MDIで使いたい

やりたい事

VB.netのMDIとやらで、
1Form内に、1つだけDXライブラリを利用したPreviewウィンドウを作りたいでゲソ。

で、実際ぶちぶち作ってるんだけど、色々と問題が発生しているでゲソ。

1.DxLib_Init()より前にMdiParentにFormを格納すると、DxLib_Initで落ちる
2.DxLib_Init()より後にMdiParentにFormを格納すると、動くが”描画されない”
3.MdiParentになにもしない場合(子にしなければ)正常に動く

PreviewForm = New Preview()
PreviewForm.StartPosition = Windows.Forms.FormStartPosition.CenterParent
'============================================

'DXライブラリ関係
'WindowModeに
DX.ChangeWindowMode(DX.TRUE)
DX.SetWindowText("Preview")
DX.SetUseDirectInputFlag(DX.FALSE)
DX.SetUserWindow(PreviewForm.Handle)

'PreviewForm.MdiParent = form ←ここでやると DX.DxLib_Init()で”プログラムが落ちる”

'起動失敗でスルー
If -1 = DX.DxLib_Init() Then
MessageBox.Show("DxLib.DLL か DxLibDotNet.dll が作業フォルダに存在しません", "error", MessageBoxButtons.OK)
Return
End If

'PreviewForm.MdiParent = form ←ここでやると実行時Formはあるが”描画ができない”

DX.SetWindowSizeChangeEnableFlag(DX.TRUE)
DX.SetWindowSizeExtendRate(1.0)
DX.SetAlwaysRunFlag(DX.TRUE)
DX.SetMouseDispFlag(DX.TRUE)
DX.SetMultiThreadFlag(DX.TRUE)

'============================================


参った、何か手段はないものじゃなイカ……

2010年11月1日月曜日

お疲れ様でした!

冬コミ落選です!
俺たちの来年にご期待ください!

ということで冬コミの参加は無しですね、
とりあえず夏コミに向けて(w)せこせこ良いもの作ります。
年の頭あたりに、現在作成中のものをひとまず公開できればいいかなと
思いますのでよろしくお願いします。

2010年10月29日金曜日

運命の明日

冬コミ合否は明日です
うっほ!うっほーう!っほお11!11

売かっても受かってなくても、
来年の頭くらいには、変なものをなんとか提供する予定ですけど
受かって欲しい、というか、受かってくれ!

2010年10月20日水曜日

結論

勘 違 い で す
日本語はLuaInterfaceでも使えました

先日出したあのソースは確かにCallで失敗していました
結局それは治りませんでしたがそんなことは良かったのです

LuaInterfaceで動いたからイイノデス!


LuaInterfaceで日本語を使う方法は簡単な事だった。

'日本語を書き込むところの処理
            If (System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(_targetFullPass)) = True) Then
                System.IO.File.WriteAllText(_targetFullPass, Writestr, System.Text.Encoding.GetEncoding("shift_jis"))
            Else
                Dim GrfPath As String = New System.IO.FileInfo(URLTextBox.Text).Directory.Name
                System.IO.Directory.CreateDirectory(_exeurl + "\scripts\GraphicScripts\" + GrfPath + "\")
                System.IO.File.WriteAllText(_targetFullPass, Writestr, System.Text.Encoding.GetEncoding("shift_jis"))
            End If

まぁ説明もなしなんでどうかと思うんですが
ようは.GetEncoding("shift_jis")ですよ.GetEncoding("shift_jis")

前まで、ここの
.GetEncoding("shift_jis")
が
.GetEncoding("EUC_jp")
だったんですよねー

ニホチニヒホリみたいな文字化けしてたんで
おかしいなーとか心の浅いところで思ってたんだけど
LuaInterfaceのせいにしてたよ俺

最低だ……

あ、ちなみに前にも書いたけど
LuaInterfaceでの記述はこんな感じね、
最新版じゃなくてちょっと古いやつを使っているよ

'存在している場合
            Dim L As New LuaInterface.Lua
            'LUA読み取り
            L.DoFile(full)
            'LUAのGraphicSettingを格納
            Dim func As LuaInterface.LuaFunction = L.GetFunction("GraphicSetting")
            '関数呼び出し
            Dim a = func.Call()
            '関数の戻り値を格納
            HelpTextBox.Text = a(0)
            TypeComBox.SelectedIndex = a(1)
            AllNumNmBox.Text = a(2)
            XNumNmBox.Text = a(3)
            YNumNmBox.Text = a(4)
            XSizeNmBox.Text = a(5)
            YSizeNmBox.Text = a(6)

2010年10月19日火曜日

ぐぬぬ(メモ)

LuaInterfaceだと日本語読めないよといわれたから
仕方ないからTaoを使うようにした

そしたらどうもCallがうまいこといかない

            '存在している場合
            Dim L As New System.IntPtr

            L = Tao.Lua.Lua.luaL_newstate()
            Tao.Lua.Lua.lua_open()

            'LUA読み取り
            Tao.Lua.Lua.luaL_openlibs(L)

            If Tao.Lua.Lua.luaL_loadfile(L, full) Then
                Dim str = Tao.Lua.Lua.lua_tostring(L, 1)
                MessageBox.Show(str, "err")
            End If

            Dim top = Tao.Lua.Lua.lua_gettop(L)

            '関数名Push
            Tao.Lua.Lua.lua_getglobal(L, "GraphicSetting")

            '関数呼び出し(ここでNULLがかえる)
            If Tao.Lua.Lua.lua_pcall(L, 0, 7, 0) Then
                Dim str = Tao.Lua.Lua.lua_tostring(L, 1)
                MessageBox.Show(str, "err2")
            End If
            '関数の戻り値を格納

            Dim a = Tao.Lua.Lua.lua_tostring(L, 1)
            Dim b = Tao.Lua.Lua.lua_tointeger(L, 2)
            Dim c = Tao.Lua.Lua.lua_tointeger(L, 3)
            Dim d = Tao.Lua.Lua.lua_tointeger(L, 4)
            Dim f = Tao.Lua.Lua.lua_tointeger(L, 5)
            Dim g = Tao.Lua.Lua.lua_tointeger(L, 6)
            Dim h = Tao.Lua.Lua.lua_tointeger(L, 7)

            'HelpTextBox.Text = Tao.Lua.Lua.lua_tostring(L, 0)
            'TypeComBox.SelectedIndex = Tao.Lua.Lua.lua_tointeger(L, 1)
            'AllNumNmBox.Value = Tao.Lua.Lua.lua_tointeger(L, 2)
            'XNumNmBox.Value = Tao.Lua.Lua.lua_tointeger(L, 3)
            'YNumNmBox.Value = Tao.Lua.Lua.lua_tointeger(L, 4)
            'XSizeNmBox.Value = Tao.Lua.Lua.lua_tointeger(L, 5)
            'YSizeNmBox.Value = Tao.Lua.Lua.lua_tointeger(L, 6)

            Tao.Lua.Lua.lua_settop(L, top)

2010年10月18日月曜日

四苦八苦

VB.netマルチスレッドで動かしているプログラムで

DX.GetMouseInput()

を利用できない。
私の書き方が悪いのか、なんか良く解らんが困った。

とりあえず、
WinAPIのGetAsyncKeyStateで代用

同時に問題が発生。
DX.GetMouseInput()
の場合、当然だがウィンドウ内でクリックされた時に
「ボタンが押されたよ」と返事が来るわけだが、

GetAsyncKeyStateの場合は
画面上でなくても「ボタンが押されたよ」と返事が来る。

そこで、DXライブラリによって生成されたWindowが
Active状態でのみ判定を起こすことにした

DX.GetWindowActiveFlag()

かなりブサイクな挙動だけどできたー!やったー!


'マウス左クリック
        If DX.GetWindowActiveFlag() Then
            If GetAsyncKeyState(Keys.LButton) Then
                _Mouse = DX.MOUSE_INPUT_LEFT
            End If
        End If

2010年10月17日日曜日

小言

しらなんだ、DXライブラリは、VB.netでも動くんだ
これで色々と楽になりそう。

使い方
1.公式からC#のDXライブラリを取ってくる
2.VSでDXライブラリを使いたいプロジェクトを開く
3.プロジェクト→参照の追加
4.参照を追加→DXLibDotNet.dllを参照する
5.Releaseフォルダ及びDebugフォルダに
(VisualStudioフォルダのProject→開いたプロジェクト→bin)
DxLib.DLLを入れる
6.Imports DxLibDLL と入れて
あとはDX.と入力するとインテリジェンス君が色々教えてくれる

実際使ってみると
Formとは別窓にウィンドウが出ます
素敵!

2010年10月14日木曜日

考えてること

突然なんですが、


今度の冬コミに出すのは、(出れればの話だが)
「うさぎは絵本の中の~」の体験版ではなく、

うさぎは絵本の中の~を作るための勉強として作っている
ある意味習作を、出せればと思っています。

というか絶賛製作中です。

ーーー

今回は、ジオメトリーウォーズ風なシンプルな形で、
360度のSTGで、プチプチ敵を倒せるようにしたいと考えてます。

それと、今回は、誰でもが自機や敵を作れればいいなー、
という事をコンセプトに、のそのそと作っております。
今月末あたりから、スクリーンショットを上げれる形に
仕上げられればいいかな、と計画しています。

ががが、がんばります!

ーーー

はい、思い出しました。
今年の4月にコメントがきていたことを…。

内容は、Box2DのDebugDrawがうまく動かないという事でした。
Box2Dのバージョンは2.0.1。

C++の場合です。

Box2DのDebugDrawを使用するためには、前提としてまず
「b2DebugDraw」クラスを継承したクラスを作る必要があります。

http://www.linuxuser.at/elements/doc/box2d/classb2_debug_draw.htm

b2DebugDrawクラス


enum  {
  e_shapeBit = 0x0001, e_jointBit = 0x0002, e_coreShapeBit = 0x0004, e_aabbBit = 0x0008,
  e_obbBit = 0x0010, e_pairBit = 0x0020, e_centerOfMassBit = 0x0040
}


上記Enumは簡単に言えば
DebugDrawで何を描画するかというフラグです。


virtual void DrawPolygon (const b2Vec2 *vertices, int32 vertexCount, const b2Color &color)=0
Draw a closed polygon provided in CCW order. 
virtual void DrawSolidPolygon (const b2Vec2 *vertices, int32 vertexCount, const b2Color &color)=0
Draw a solid closed polygon provided in CCW order. 
virtual void DrawCircle (const b2Vec2 &center, float32 radius, const b2Color &color)=0
Draw a circle. 
virtual void DrawSolidCircle (const b2Vec2 &center, float32 radius, const b2Vec2 &axis, const b2Color &color)=0
Draw a solid circle. 
virtual void DrawSegment (const b2Vec2 &p1, const b2Vec2 &p2, const b2Color &color)=0
Draw a line segment. 
virtual void DrawXForm (const b2XForm &xf)=0
Draw a transform. 


それからこれは「virtual」ですから、抽象メソッド(仮想関数)です。
抽象メソッドは、別クラスによって継承しなければ使用することができません。

そのため、このb2DebugDrawクラスを継承させる必要があります…

class DebugDraw : public b2DebugDraw
{

public:
 void DrawPolygon(const b2Vec2* vertices, int32 vertexCount, const b2Color& color);
 void DrawPolygon(const b2Vec2& center, const b2Vec2* vertices, int32 vertexCount, const b2Color& color);
 void DrawSolidPolygon(const b2Vec2* vertices, int32 vertexCount, const b2Color& color);
 void DrawCircle(const b2Vec2& center, float32 radius, const b2Color& color);
 void DrawSolidCircle(const b2Vec2& center, float32 radius, const b2Vec2& axis, const b2Color& color);
 void DrawSegment(const b2Vec2& p1, const b2Vec2& p2, const b2Color& color);
 void DrawXForm(const b2XForm& xf);
};


こんな感じです:-)
内容に関しては、私の場合DXライブラリを使っていろいろやってます。


void DebugDraw::DrawPolygon(const b2Vec2* vertices, int32 vertexCount, const b2Color& color)
{
 int mode;//一時BLEND記録領域
 int parm;//一時BLENDパラメータ記録領域
 GetDrawBlendMode(&mode,&parm);
 
 SetDrawBlendMode(DX_BLENDMODE_NOBLEND,128);

 int i = 1;

 for(; i < vertexCount; i++)
 {
  DrawLine(static_cast(vertices[i-1].x * global::SCALE),static_cast(vertices[i-1].y * global::SCALE),
     static_cast(vertices[i].x * global::SCALE),static_cast(vertices[i].y * global::SCALE),
     GetColor(static_cast(255*color.r),
        static_cast(255*color.g),
        static_cast(255*color.b)));
 }
 
 DrawLine(static_cast(vertices[0].x * global::SCALE),static_cast( vertices[0].y * global::SCALE),
    static_cast(vertices[i-1].x * global::SCALE),static_cast( vertices[i-1].y * global::SCALE),
    GetColor(static_cast(255*color.r),
       static_cast(255*color.g),
       static_cast(255*color.b)
       ));
 
 SetDrawBlendMode(mode,parm);
}

DrawPolygonに関してはこんな感じです
注釈すくなく、さらにきたなくてすんません。
さらに言えばタグがひどい(w

さて、これをVirtualがあるだけやっていくと
とりあえずはDebugDrawは動く状態になります。

ーーー

実際に使う際はこうです

DebugDraw* debug = new DebugDraw();

 debug->SetFlags( 0xFFFF );

 global::boxglobal::g_world->SetDebugDraw(debug);


0xFFFF の部分には、上記の enum を入れましょう

debug->e_***

という感じで、複数指定したいときは

debug->e_*** + debug->e_***

で問題ありません。


そんなもんです、はい。
それじゃあ今日のところは終わり

2010年10月11日月曜日

.netからLUAの呼び出し

お久しぶりです、そろそろ適当ノリが良くなってきたので
個人的な事をひたすら書き連ねていきたいと思います

ちょっとした理由から、VB.netからLuaを呼び出す必要が出た(というかそのほうが楽だった)
ので、色々と調べてみた所、呼び出すことは可能なようだったのでメモ書き

VBからLUAを呼び出すには
LuaInterface.dllが必要

luainterface-2.0.1.zip

中のLuaとLuaInterfaceのdllをとりあえず
プロジェクトファイルにでも突っ込む

次にVisualStudioのプロジェクト
↓
参照の追加
↓
LuaInterface.dllを追加する

でとりあえずLuaDLLが使える状態になる

---------------------

'関数を呼び出し、5つの戻り値を各TextBoxに格納するのだ

'Luaクラスをインスタンス化
 Dim L As New LuaInterface.Lua


'fullはLuaファイルへのフルパスが格納されている
L.DoFile(full)


'GetFunctionメソッドでLuaメソッドを、func(LuaFunctionクラス)に格納
Dim func As LuaInterface.LuaFunction = L.GetFunction("GraphicSetting")


'関数を呼び出す
Dim a = func.Call()


'各戻り値が a() に格納される、
'それをTextBoxに入れる作業…


AllNumTextBox.Text = a(0)
XNumTextBox.Text = a(1)
YNumTextBox.Text = a(2)
XSizeTextBox.Text = a(3)
YSizeTextBox.Text = a(4)

---------------------

こんな感じで
VB.netでLuaの呼び出しが出来ました
最新版のLuaInterface.dllは使い方がよくわからなかったので、触ってません
大分使い方が違うよう?でしたが…
以下のサイトを参考にさせていただきました


http://blog.cnu.jp/2008/11/18/csharp%E3%81%ABlua%E3%82%92%E7%B5%84%E3%81%BF%E8%BE%BC%E3%82%80/#more-163 http://blog.livedoor.jp/akf0/archives/51607378.html

2010年8月31日火曜日

再構築

いろいろと再構築中…

現状、クラスの構造が結構面倒
BOX2Dとの絡みもあって、楽にしようと思った結果、確かに楽にはなったんだけど、
もう少し簡潔にできるんじゃないかなー、なんてことを考えたりもする

考えたりもするけど、いい案が思い浮かばず、嗚呼夢想

2010年8月22日日曜日

冬コミ

冬コミ申し込みましたー
ウカればいいなー

2010年8月16日月曜日

夏コミ

夏コミお疲れ様でした
そして、体験版をお買い上げいただいた方、
本当にありがとうございました。

お買い上げいただいた方に失礼かと思いますが、
正直、私個人の考えとしては、良い出来だとはとても思えません。
本当に申し訳ない気持ちと、感謝の気持ちで一杯です。

冬コミの参加についても、
すこし期間を設ける意味でどうしようか考え中でもあります。
かと言って、下手に期間を延ばしても、モチベーション的にどうかな、とも思うのですが…。

まぁ、その件についてはまた後日報告させていただきます。

とりあえず、今回はこのへんで。

2010年8月12日木曜日

わお

某所で補足されていたので。
久々に更新…いいのかそれで。


発汗プリン体
二日目 W-24a

とりあえずマスターアップは済ませて、
ひとまずは一段落です。
正直、一応形にはなったかな、という感じですが、
体験版の体験版に近い感じ…、ああ、胃が痛い。

―――

ウサギは絵本の中で夢を見るか?(体験版)



一応物理演算とか使ってます。
正直そこまで、物理演算っぽさは無いです。

敵をつかんで投げたり回したり出来ます。




今回の体験版ではステージ2クリアまでプレイすることが出来ます。


こんな感じです。

2010年7月5日月曜日

更新しなさすぎ

もう少しゲームのことを垂れ流さねば…などと思いつつも…
うーむ、ちょっと、メンバーと話あってみますか

2010年6月17日木曜日

Box2D IsSensor

追記

いや、まて、嘘かも
ごめん俺嘘ついてるかも
もうちょっと調べてからいえばよかったかも
でも今調べ中、調べまくる







やっと効果の意味がわかった(今更)

簡潔に述べるのであれば

Trueならば
<物体同士の接触が発生しなくても、当たり判定の処理をする>

のだ

つまり、物体同士がぶつかっても、ぶつからなくても当たり判定の処理をする
Addだとかの処理を行う

そういうことだった

ああ、なんで今更俺はこんな重大な事に気づくかねまったく……

2010年6月8日火曜日

夏コミ受かった

サークル名:発汗プリン体
土曜日、東地区 ”W"ブロック 24a だそうです
初めての参加なのでどうなることやら…ドキドキ

と は い え

今回は、そう、BOX2Dを利用したSTGゲームを出品予定
それも、目指せ”体験版の体験版”
いわゆるα版を出品予定です。

そんなのでいいんでしょうか、
価格は未定ですが、当然お安くご提供します、
というかお金とっていいんですか?(w

笑えん

まぁ全力でおよそ二ヶ月を突き抜けます

見せられそうなところは所々見せていきたいと思ってますので
よろしくお願いします

2010年6月4日金曜日

BOX2D導入講座 1

設計的には、やや冗長的ではあるが、他の人がいじっても十分対応できる形になったな、と
なんとなく自分の中で納得する。

Box2Dを使う上での知識も、私の中ではそこそこに蓄積されてきたのではないかと思う。
C++でのBOX2Dのソースが、あまりにも不足している中で、
とりあえず入門編的な物を、このブログを通じて提供していければな、と思う

ということで、まず簡単に導入の仕方から。

1.Box2D_v2.0.1.zipを落としましょう


なぜv2.0.1かと言えば、特に理由は無いのだけど
ドキュメントが充実してるかなー、って思ったからだ。
というか更新の仕方が判らなかった、うんこ
多分上書きするだけだけど、うん…


2.VisualStudioの設定をする


わりとここが問題だったりする、というか
初心者の関門的ポジション


起動した後
ⅰ ツール->オプション->プロジェクト及びソリューション->VC++ディレクトリ(までとりあえず行く)
  ここで、インクルードファイルとライブラリファイルを設定します
ⅱ Alt+Sで青くなるポップアップ?欄からインクルードファイルを選択
  そこに、BOX2DのIncludeフォルダを指定
ⅲ 同じくライブラリを選択する
  同じようにLibraryフォルダを指定
ⅳ 今度は、プロジェクト(青い部分)を右クリックしてプロパティを開く
   (もしも出ていない場合は、Ctrl+Alt+L)
ⅴ 構成プロパティ->リンカ->入力->追加の依存ファイル
  と、その前のAlt+Cで”すべての構成”にしておいてください
  その後、追加の依存ファイルに、”Box2D.lib”とか、まぁそんな感じのものを
  入力してください。


それで準備はとりあえずOKです。
あとは使用するソースで

#include "Box2D.h"

をインクルードしてやればOKです。

とりあえず今回はこの辺で…、すんません。