合計 昨日 今日

アバター
大白定義
 
記事: 14
登録日時: 2010年10月16日(土) 20:25
お住まい: 三重県
日記: 日記を見る (76)
日記
- 7月 2016
思えば遠くへ (0)
   2016年7月23日(土) 10:26

+ 11月 2013
+ 9月 2013
+ 2月 2013
+ 1月 2013
+ 11月 2012
+ 7月 2012
+ 6月 2012
+ 5月 2012
+ 3月 2012
+ 2月 2012
+ 1月 2012
+ 11月 2011
+ 10月 2011
+ 9月 2011
+ 8月 2011
+ 4月 2011
+ 3月 2011
+ 2月 2011
+ 1月 2011
+ 12月 2010
+ 11月 2010
+ 10月 2010
フォロー
カテゴリ
日誌
1 記事
フィード
次へ

思えば遠くへ

パーマリンクby 大白定義 on 2016年7月23日(土) 10:26

来たものだ。

ゲーム作り(ごっこ)を始めたのは大学に入った2007年のことで、そこから数年はC++に変な食わず嫌い引き起こして構造体に関数ポインタぶっこんで「ほらクラスだろ!?」とかぬかしてたり、
「C++のリンカ設定とか面倒くさいし時代はJavaやで!」とかぬかしてたり(肝心な所はIDE任せなのでやってることは変わりない)、
「D言語最強や!C++なんていらんかったんや!」とかぬかしつつ英語資料ばっかりでいろんなものを理解できず結果は出せなかったり、
恥の多い人生を送ってきたなあと思うばかりである。
そして、社会人になってからはサーバサイドばかりやってきたから、気がつけばPerlとかJavascriptばかり書いていて、最近Unityに手を出したら静的言語めんどくさ、とか思い始めたのでまだまだ恥を重ねていくのだろうなと思った。

それはそれとして、PHPとかRubyにも食わず嫌いせずに覚えなきゃなあ。

コメント数: 0 閲覧数: 1122

ネトゲonブラウザ

パーマリンクby 大白定義 on 2013年11月24日(日) 00:10

お仕事でweb周りの所をやっているので、こんな話ばかりしてます最近。

ともあれ。

前にcocos2d-xの話をしたわけですが、その派生プロジェクトにcocos2d-html5ってのがありまして。
これはcocos2d-xの機能をjavascriptに移植しているわけなんですな。
つまりはどういうことかというと、ボーンアニメーションを楽に実装できたりなんだりと、cocos2d-xに対応しているツールをフル活用できるってことです。

で、これにwebsocket機能を利用して、リアルタイムにデータをやりとりするシステムを作ればラグナロクとかメイプルストーリーみたいなシンプルなネットゲームなら割と楽に実装できそうだなーと思うのです。
ただ、どういう風にリアルタイムでやりとりしてるのかなーと思ったり。
キャラクターの座標とかHPとか頻繁に変化するわけで、それを1Fごとに通信なんてやっていたら相当サーバーに余裕が無いと無理じゃないかなあと。秒間100人くらいが頻繁に送受信するだけでも悲鳴上げるのに。

Dixqさんが買ってたオンラインゲームを支える技術とか買えば、わかったりするものなんだろうか。

コメント数: 2 閲覧数: 4768

スマホのゲーム作ろうぜ的な

パーマリンクby 大白定義 on 2013年11月16日(土) 21:06

cocos2d-xをいうスマホ向けゲームを作るためのフレームワークがあり、わけあってこれを最近触ることになったので、C++を久々に触っている。

オブジェクト指向の考え方が必要になる分、DXライブラリと比較すれば敷居が高いけれど、そこに慣れれば、ドキュメントもそれなり揃っているのでさくさく作れるのは強みだと思った。

もしスマホ向けにゲーム作ってみたいなーと思っている人は、挑戦してみるだけ損はしないと思う。

android持ってないんですけど!!という人はgenymotion(http://www.genymotion.com/)というandroidシミュレーターを触ってみたりするといいかもしれない。

公式でもシミュレータはあるものの、あれはAndroidが動作するCPUの動作を再現するエミュレータ上でandroidエミュレーターを動かしている仕様らしく、凄まじく重いので、こちらマジおすすめ。

コメント数: 2 閲覧数: 4715

ajaxでbase64な感じ

パーマリンクby 大白定義 on 2013年9月12日(木) 22:36

C言語交流フォーラムでこういうの書くのってどうなのって突っ込みがきそうですが、気にせず今日も色々とー。

前回サーバーからデータを取ってくる処理を作ったんだけど、ぶっちゃけXML処理すんのめんどくせーなーと思った訳です。
で、パーフェクトjavascriptをぱらぱらーっとめくってみたら、JSONでやったほうが楽じゃね?みたいな記述を発見。
というわけで、さくっと書き換え。

そうするとえらく処理を書くのが楽になったので、今日はさらに突っ込んでサーバー側で画像ファイルをbase64エンコードして、クライアント側でデコードする所までやってみました。

まずサーバー側。
コード[Perl]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use JSON;
 
use lib "./module";
use ResourceTranslator;
 
my $app = sub {
    my $output_data = ResourceTranslator->get_image_data();
 
    my $json_data = JSON->new->encode($output_data);
 
    return [
        200,
        [ContentType => "text/plain"],
        [$json_data],
    ];
}

base64化は別モジュールに切り分けたのでそっちも貼り付け。
コード[Perl]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package ResourceTranslator;
use strict;
use warnings;
 
use MIME::Base64;
 
sub get_image_data {
    my $file = "画像ファイル";
    my $mime_type = "gif";
 
    my $file_size = -s $file;
    my $binary;
 
    {
        open my $IN, "<", $file;
        binmode $IN;
        read $IN, $binary, $file_size;
        close $IN;
    }
 
    my $result = encode_base64($binary, "");
 
    return +{
        image => "data:image/" . $mime_type . ";base64," . $result,
    };
}
 
1;



そしてクライアント側がこんな感じ
コード[Javascript]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var button = document.getElementById('ajax');
button.onclick = function() {
    var xmr = new XMLHttpRequest();
    xmr.onreadystatechange = function() {
        if (xmr.readyState == 4 && xmr.status == 200) {
            var canvas = document.getElementById('canvas');
            var ctx = canvas.getContext('2d');
 
            var response = JSON.parse(xmr.responseText);
            var image = new Image();
            image.onload = function() {
                ctx.drawImage(image, 0, 0);
            }
            image.src = response.image;
        }
    };
    xmr.open('GET', 'サーバーのアドレス');
    xmr.send(null);
};


一応HTMLも。
コード[HTML]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
<html>
    <head>
        <title>Test</title>
    </head>
    <body>
        <form action="#">
            <input type="button" id="ajax" value="Start!!"><br>
            <canvas id="canvas" width="640" height="480">
        </form>
        <script src="ajax.js"></script>
    </body>
</html>


わざわざサーバからbase64エンコードした文字列引っ張ってきて何がやりたいの?と思われるかもしれませんが、
やりたいのはjavascriptゲームで画像ファイルの隠蔽です。

まあ、こんなことやってもサーバーに直接アクセスしたら文字列データは取ってくることができるんで、あんまり意味ないんですけどね。
最後に編集したユーザー 大白定義 [ 2013年9月12日(木) 22:38 ], 累計 2 回

コメント数: 0 閲覧数: 4238

とりあえずajaxしてみるかあという話

パーマリンクby 大白定義 on 2013年9月11日(水) 22:19

表題どおりで、とりあえずajaxっぽく?javascriptでデータをロードしてみるかあと思い立ち、即行動。

サーバ側の実装はこんな感じ
コード[Perl]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use XML::Simple;
 
my $app = sub {
    my $xml = +{
        Message => [
            "Test Message"
        ],
    };
 
    return [
        200,
        [ContentType => "text/xml"],
        [XMLout($xml, RootName => "root", XMLDecl => 1)],
    ];
}


で、javascriptとHTMLがこんな感じ
javascript
コード[Javascript]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
var button = document.getElementById('ajax');
button.onclick = function() {
    var xml = new XMLHttpRequest();
    xml.onreadystatechange = function() {
        if (xml.readyState == 4 && xml.status == 200) {
            var result = document.getElementById('result');
            result.value = xml.responseText;
        }
    };
    xml.open('GET', 'ここにアドレス');
    xml.send(null);
};

html
コード[HTML]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
<html>
    <head>
        <title>Test</title>
    </head>
    <body>
        <form action="#">
            <input type="button" id="ajax" value="Start!!"><br>
            <textarea id="result"></textarea>
        </form>
        <script src="ajax.js"></script>
    </body>
</html>


safariから起動してみたところ、無事にデータを取得できたのを確認。
…ここからXMLをパースしてTest Messageだけを取り出すのは明日かな。

ちなみにサーバースクリプトはperlで無駄にplackとか使ってます。
いちいちapacheとか起動しなくていいのが楽ね。

サーバー側はvirtualboxから実行させていたにもかかわらず、google chromeだとローカルのデータを取得する扱いになってたのが気になった。

コメント数: 0 閲覧数: 4245

オンラインデータ

登録ユーザー: なし