Flat Leon Works

アプリやゲームを作ってます。

Flat Leon Works

Flat Leon Works は shinya の個人サイトです。 制作物 iOS用音楽再生アプリ「うさプレイヤ」 iOS用2Dアクションゲーム「センメツコースター」 サイトマップ サイト概要など このサイトについて 近況 制作物 うさプレイヤ うさプレイヤの紹介 iOS有料アプリ…

【Nim】個人的逆引きリファレンス

Nim

Nimの勉強を兼ねて逆引きリファレンスとしてまとめてみようと思います。(随時更新) この記事は「Nim Advent Calendar 2017」の記事として登録させてもらっています。 注意: 使用しているNimのバージョンは0.17.0です Nimに詳しいわけではないので変な書き方…

【Nim】メモ

Nim

基本情報 作者 : Andreas Rumpfさん ( GitHubではAraqという名前 ) リンク 公式 公式サイト : Nim programming language | Nim Nimの特徴 : Features | Nim Nimインストール方法 : Install | Nim 言語マニュアル : Nim Manual BNF風文法定義 : Grammar 標準…

【Python】言語仕様メモ

ブール値変換 ブール値変換 偽になるもの None False 数値ゼロ : 0 空シーケンス : '', (), [] 空マッピング : {} __nonzero__()メソッドがFalseを返すオブジェクト __len__()メソッドが0を返すオブジェクト 真になるもの 偽に当てはまらないもの ドキュメン…

プログラミング言語を自作した話

数年前、「Flan」というプログラミング言語を作っていました。このプログラミング言語は長い間C++でプログラミングをしてきて感じた不満をもとに、自分好みの最高のプログラミング言語を作ろうと、そういう考えで作っていました。「Flan」は言語機能的にはだ…

2Dアクションゲーム「センメツコースター」の開発で使ったもの

先日「センメツコースター」の開発が完了しました。そこで開発に使ったものを紹介したいと思います。 制作ツール IDE : QtCreator テキストエディタ : Visual Studio Code ドット絵作成 : Aseprite スプライトアニメーション作成 : DarkFunctionEditor 絵素…

ゲームエンジンを使わずにC++とOpenGLでゲームを作った話

先日、iOS用ゲームアプリ「センメツコースター」をリリースしました。このゲームの開発にはゲームエンジンは使っておらず、C++とOpenGLとOpenALなどで実装されています。最近はゲームエンジンを使うことが当たり前になっており、ゲームエンジンを使わないゲ…

iOS用2Dアクションゲーム「センメツコースター」の紹介

長い間作っていたゲームがようやく完成しました。 センメツコースターはiOS用2Dアクションゲームです。広告無しの有料アプリ(240円)です。 レールの上をコースター(乗り物)で移動して敵を倒す(センメツ)するのが目的です。 こんな人におすすめです。 iPhone…

【センメツコースター】ライセンス表記

------------------------------- Lua ------------------------------- /****************************************************************************** * Copyright (C) 1994-2012 Lua.org, PUC-Rio. * * Permission is hereby granted, free of charg…

【C++ アイデア】複数の名前空間に同じ別名を与える

C++

C++では名前空間に別名を与えることができます。 namespace HogeCore {} namespace Hoge = HogeCore; しかし、複数の名前空間に同じ別名を与えることはできません。 namespace HogeCore {} namespace HogeGraphics {} namespace HogeAudio {} namespace Hoge…

Gitリポジトリの統計情報を見るためにGitStatsを使ってみる(Macで)

プログラミングをしていてソースコードの行数が一体どれくらいになっているのか気になることがよくあるのですが、Gitリポジトリを解析して統計情報を生成してくれるGitStatsというツールがあることを知りました。ソースコード行数はもちろん、ファイル数、コ…

Xcode7.3へのアップデート後、C++プロジェクトのビルド時間が異様に長くなる問題への対処

Xcode7.3へアップデート後、QtCreatorのC++プロジェクトのビルド時のリンク時間がやたら遅いなと思っていましたが解決法が書かれたページを見つけ、試してみたところ治ったので共有したいと思います。 ※Xcode自体でのビルドではなく、Xcode付属のClangを使っ…

【開発中】2Dアクション「センメツコースター(仮)」

2016年4月から「センメツコースター(仮)」というiOS用のゲームを作っています。 2016:08:18 20-37 from shinya on Vimeo. ジェットコースター+アクションゲームな感じです。 最初は1ヶ月で完成させることを目標にしていましたが、4ヶ月も経ってしまいました…

Macで60fpsの画面キャプチャGIF動画を作成する方法

Mac

普段、MacでのGif動画用の画面キャプチャはLICEcapというソフトを使っていますが、このソフトで画面キャプチャを行うとフレームレートが30fpsくらいになってしまいます。たいていは30fpsもあれば十分なのですが、ゲームの動画など60fpsにしたい場合もありま…

【ゲームプログラミング】ビット演算による点滅処理

ゲームプログラミングキャラクターを点滅させたいとき、以下のような実装にするかもしれません。 // C++ class Player { int m_DrawCount; public: Player() : m_DrawCount( 0 ){} void Draw( void ) { // 2フレームに1回描画 if ( m_DrawCount % 2 == 0 ) {…

【C++ アイデア】関数内でメンバ変数を定義する

C++

メンバ関数の中でメンバ変数の定義ができたら便利だろうなと思ったので、方法を模索してみました。半分ネタです。 やりたいのはこういう感じのことです。 class A { int m_Value; // こっちは普通のメンバ変数 public: void Func( void ) { local int m_Stat…

【メモ】気になるツールなど

そのうち試してみたいツールなどを忘れないようにメモ。 プログラム系 プログラミング言語 JavaScript : Webサイトだけでなくいろいろな場面で使われてるので覚えておいて損はなさそう。 Nim : インデント構文、静的型、強力なマクロ、そしてC言語コードを生…

【Lua組み込み】Luaスクリプトのファイル分割を独自のファイルロード処理で行う方法

Lua

require関数やdofile関数のファイルロード処理はカスタマイズできない Luaスクリプトを書いていてファイル分割をしたくなった場合、Lua標準のrequire関数やdofile関数を使うと思います。 dofile( 'common.lua' ) dofile( 'util.lua' ) -- いろんな処理 問題…

Macでフォルダアイコンの色を変更する方法とGitの罠

Mac

Macで作業をしていて、ふとフォルダアイコンの色を変えたくなりました。調べてみたところ、Mac標準の機能だけでできることがわかったので紹介したいと思います。また、この方法はGitでちょっと問題がでるのでその対処法も紹介します。 フォルダアイコン色の…

Pillow(Python画像処理ライブラリ)でRGBAパレット形式のTGAファイルを保存する

PillowはPythonの画像処理ライブラリです。PillowはTGAファイルに対応しているのですが、RGBAパレット形式のTGAファイルの保存ができなかったのでソースコードをいじって対応させてみました。 ちなみにRGB形式のパレットには最初から対応されていました。 注…

ゲームにおけるタッチスクリーンの問題点

タッチスクリーンの問題点はタイミングではない モバイルのタッチスクリーンがゲームのコントロールとして最悪である理由を解明した研究論文、フィンランドの大学から | TechCrunch Japan 上記の記事ではタッチスクリーンの問題点としてタイミングが不定であ…

【Python】コマンドライン引数を解析する(argparseの利用)

Python2.7を対象とします。 コマンドライン引数の解析 argparseを利用する 逆引きリファレンス コマンドライン引数を指定して解析する 位置引数を追加する オプション引数を追加する オプション引数にデフォルト値を設定する 引数を文字列以外で受け取る(変…

【Python】リストからタプルのリストを作成する

Pythonでリストからタプルのリストを作りたい場合、例えば[1,2,3,4,5,6]というリストがあって、これを[(1,2),(3.4),(5,6)]のようなタプルのリストにしたい場合は以下のように書くのが楽です。 listA = [1,2,3,4,5,6] listB = zip( listA[::2], listA[1::2] )…

【Python】個人的逆引きリファレンス

Pythonでの個人的によく書くコードを逆引きリファレンスとしてまとめておこうと思います。(随時更新) 注意: Python2.7を対象としてます Pythonに詳しいわけではないので変な書き方をしているかもしれません 動作確認してません 言語機能 for文でインデックス…

OpenGLメモ

リンク 公式 The Khronos Group Inc.OpenGLの総本山 OpenGL ES - The Standard for Embedded Accelerated 3D Graphics OpenGL ES 2.0 Reference Pages : APIリファレンス Appleドキュメント iOS用OpenGL ESプログラミングガイド (TP40008793 0.0.0) - OpenGL…

【C++】宣言と定義の早見表

宣言と定義の早見表 宣言だけの書き方は忘れがちなので早見表を作ってみました。 注意 : 一応コンパイルが通ることを確認していますが、もしかしたら間違った書き方をしているかもしれません。 宣言のみ定義(宣言を含む場合あり)備考 グローバル変数extern i…

ALURE(OpenALユーティリティ)をiOSで使う

クロスプラットフォームなゲーム開発で音を鳴らすにはOpenALが定番っぽいです。Mac、Windows、iOS、Androidで利用可能だそうで。しかしOpenALだけではwavファイルなどの音声ファイルを扱うことができません。そこで良さげなのがOpenALのユーティリティライブ…

【C++】個別に未使用変数の警告を抑制する方法

未使用変数の警告 C++はコンパイル時のオプションにより未使用変数の警告が出る場合があります。未使用変数というのはその名の通り、宣言したのに使っていない変数のことです。この未使用変数の警告が一番出やすいのは関数の仮引数の変数です。特に仮想関数…

扱う文字コードに迷ったらUTF-8を選ぼう

文字コードを決める場面 プログラミングにおいて文字コードを考えるときは、APIやファイルフォーマットなどですでに決められた文字コードに自分が合わせる場合がほとんどだと思います。しかし、自分で文字コードを決める場面というのも少なからず存在します…

【C++ アイデア】戻り値をチェックするアサート

アサートの罠 アサートは便利なものですが、油断するとこんなコードを書いてしまうかもしれません。 #include <stdio.h> #include <assert.h> class A { int m_Value; public: A() : m_Value( 0 ){} // 値をセットします。戻り値はセットする前の値です。 int setValue( int val</assert.h></stdio.h>…