Flat Leon Works

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

MacとWindowsで共通のバッチファイル(シェルスクリプト)を利用できるようにする

Windowsにはダブルクリックでスクリプトを実行できるバッチファイルという便利な仕組みがあります。Macにはバッチファイルというものはありませんが、拡張子を.commandにしたシェルスクリプトを用意することでバッチファイルと同じようにダブルクリックでス…

【Mac】ブラウザ(HTML)上から任意のプログラムを起動する

通常、ブラウザ上から任意のプログラムを起動することはできないようになっています。これはおそらく安全性のためなので、ブラウザ上から任意のプログラムを起動することは不可能だと諦めていたのですが、最近ついにその方法を発見したので紹介したいと思い…

BlocksとGCD(Grand Central Dispatch)についてのメモ

iOS

久しぶりにiOSプログラミングをしてみたところ、GCDについてさっぱり忘れていたので、次からはすぐに思い出せるようにメモ。 Blocksとは Blocksメモ GCD(Grand Central Dispatch)とは Dispatch Queue Dispatch Queueの種類 Dispatch Queueの入手 逆引き リン…

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

個人的な覚書としての逆引きリファレンスです 今のところ OpenGL ES 2.0 のみを対象としています 思いついたら追加していきます 現在のフレームバッファ(カラーバッファ)のサイズを取得する iOSでデフォルトのフレームバッファをバインドする(GLKViewControl…

Macでビルドした実行ファイルが、libJPEGが原因で落ちる場合の対処法

久しぶりにMacでビルドしたプロジェクトが以下のようなエラー出力とともに実行時に落ちるようになっていました。 dyld: Symbol not found: __cg_jpeg_resync_to_restart Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO …

【Nim】マクロプログラミング用メモ

Nim

ドキュメント : macrosモジュール Nim Tutorial (Part III) 定数 型の種類一覧 NimTypeKind = enum ntyNone, ntyBool, ntyChar, ntyEmpty, ntyAlias, ntyNil, ntyExpr, ntyStmt, ntyTypeDesc, ntyGenericInvocation, ntyGenericBody, ntyGenericInst, ntyGen…

【Nim】コンパイラソースコードリーディングのためのメモ

Nim

ファイル トークン種類(tk) ASTノード種類(nk) シンボル種類(sk) シンボルフラグ(sf) 内部型種類(ty) 内部型フラグ(tf) コンパイラマジック定数(m) ファイル compiler main.nim : コンパイラ起点 lexer.nim : レキサー parser.nim : パーサー ast.nim : AST …

10年前のMac mini(2007年製)にLinux(Ubuntu)をインストールする

新年明けて何か新しいことをしようと思い、前々からやりたかったMac miniのLinuxマシン化をやってみました。 今回、Linuxマシン化したのは2007年製のMac miniです。つまり10年前のパソコンということです。このMac miniは性能的にはまだまだ使えるはずなので…

【Nim】クラス定義マクロを作ってみる

Nim

Nimにはクラスという概念がありません。しかし、オブジェクト指向プログラミング自体はサポートされており、object型を使えばクラスとほぼ同じことが可能になっています。ただし、object型の定義が微妙に面倒なことに加え、やはりクラスが欲しいということで…

【Nim】seq型とstring型のリファレンスの罠【追記:v0.19.0にて解決済み】

Nim

[追記] Nimバージョン 0.19.0 で、seq型とstring型のデフォルト値が nil ではなく @[] と "" になりました。この仕様変更により、ここで指摘していた"罠"は根本的に解決されたことになります。一応この記事は残しておきますが、もう気にする必要がないことで…

【Nim】文字列操作

Nim

Nimでの文字列操作関連をまとめてみました。 Nimのバージョンは 0.17.2 を想定しています。( 執筆時の最新バージョン ) 文字列の基本 文字、文字列リテラル 文字、文字列型 文字列関連モジュール 標準モジュール(system,strutils)の文字列関連プロシージャ …

NimとC++を比較してみる

この記事は「Nim Advent Calendar 2017」の記事として登録させてもらっています。 NimはNimソースコードをC言語ソースへ変換するトランスコンパイラ言語です。これは普段C++を使っている人にとって非常に重要なことです。なぜなら、C++(C言語)が使える環境な…

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

Nim

Nimの勉強を兼ねて逆引きリファレンスとしてまとめてみようと思います。随時更新。(最終更新日:2022/4/10) この記事は「Nim Advent Calendar 2017」の記事として登録させてもらっています。 注意: 使用しているNimのバージョンは1.6.0です 間違っているかも…

【Nim】メモ

Nim

基本情報 リンク 標準ライブラリ 言語仕様メモ 諸条件の違いによるマクロ仮引数のNimNode構造の違い テンプレートでのシンボル束縛(bind)について テンプレート仮引数の参照ルール テンプレートの衛生 逆引きリファレンス未作成項目 基本情報 作者 : Andreas…

【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でちょっと問題がでるのでその対処法も紹介します。 フォルダアイコン色の…