Allegro

Last-modified: 2025-10-15 (水) 00:29:25

概要

マルチプラットフォームのゲーム製作用ライブラリ。
外国ではSDLと並んで有名らしいが、日本ではあまり普及していない。

公式HP (英語)
公式HP (翻訳)
公式HP(韓国語→日本語訳)。韓国語→日本語は、機械翻訳でも結構自然に読めます。

このwikiにあるAllegro情報

  • Allegro/Manual?
  • Allegro/VCでインストール?
  • Allegro/Tips?
  • Allegro/日本語表示?

関連サイト

Wiki(英語)
まとめサイト (英語)
各種ライブラリ紹介スレ
panyara のホームページ
Allegroクイックリファレンス

BCCを使用することを想定したAllegro インストールメモ

先ず、公式サイトからall403.zipを取ってくる。
ついでにpanyara氏のページでも書いてあるがmingw32版makeが必要になる。
うpしたいが法的にいいのかよくわからんのでしない。
panyara氏のページから拾ってくれ。

で、all403.zipを解凍し、その解凍してできたディレクトリの中に
mingw32版makeのexeファイルを入れる。
で、ちまちまとバッチファイルを書いて実行。以下のようにすればたぶんOK。

set BCC32DIR=c:\borland\bcc55
fix.bat bcc32
mingw32-make.exe

ちなみにオレの場合BCC同梱のOBJファイルを要求されたため適宜
mingw32版makeを入れたディレクトリん中にOBJファイルをコピーした。
ま、がんばれ。一旦インストールしたら後は超絶的にラクだ。
以下、動作確認用プログラム。注意するとこは、 Windows Applicationとしてビルドするとこ。

#include <allegro.h>
int main( void )
{
    allegro_init();
    allegro_message("Hello, World!");
    return 0;
}
END_OF_MAIN();

VC.NET2003でビルド&インストール

こっち。./VCでインストール?

メモ

DOS, UNIX(Linux, FreeBSD, Irix, Solaris),Windows, BeOS, MacOS, QNX で使えるゲーム用ライブラリ。
SDLに比べ影が薄いが、GPLより自由度の高いライセンスと、オールインワン設計が強み。
フレームワークっぽいのは、導入に気合いがいるから・・・SDLにしろ。
マルチプラットホームなゲーム用ライブラリ(既出)と、
UTF-8/16で日本語TTFが使えるようになる拡張ライブラリ。
ライクなライセンスであるため、SDLより自由度が高くてイイ!
日本じゃ全然流行ってないのが不思議でならない。
米YahooじゃSDLと並んでカテゴリ化されてる位なのに…。
AllegroはSDLとともに外国では有名なんですが、
名前も出てきませんね。今ググッたら、開発環境構築の
サイトまで一つも出てこない。。。ていうかAllegroで
開発してる人、いる?
以前触ってはみたよ。
Allegroは最初のインスコと環境構築が他エンジンに比較すると、
ちょっと面倒なのが欠点だわな。
最初のサンプルを動かすまでに手がかかるので、
SDLでいいやマンドクセと思った人も少なくないんじゃないかと。
Allegro使ってみた。
インスコはそんなに時間かからない。使用感はmainの最後に打つおまじないがちょっと 違和感ある。
日本語の紹介サイトがなかなか無い。けど、付属の豊富なサンプルで大体の仕組みは理 解できる。
速度的にも問題無いと思う。けど、大域変数が比較的よくある単語が使われてたり。 (screenとか)
スクリーンデバイス列挙の時、指定したモードで現在のディスプレイのリフレッシュレ ート+1になってしまう場合もあるな
AllegroはVC++で導入する方がgcc系で導入するより敷居が高いという、
わりと珍しいライブラリよね。
予備知識なしでソースだけ落としてきてさあ構築するぞと思うと、
djgppやらgnumakeから要求されて面食らうし。
(コンパイル済ライブラリを別途落としてくれば問題なす)
最初にHello Worldをコンパイルするまでの手順が、
DXやらあのへんに比べて手取り足取りというわけじゃないので、
(OS非依存なのでパターンが多すぎ対応できないわけだが)
国産入門系ライブラリより一段大人向けなのは確かだと思われ。
ライセンスがGPL系じゃないのでスタティックリンクしても安心、
というのもポイント高い人はいるやろなあと。
alfont使えばアンチエイリアス付き日本語文字列が使えて、
かつ簡単な3D対応というライブラリって意外と少ないので、
(国産だとDXは3Dが無理、Lunaはアンチエイリアスが無理)
DXを卒業したらAllegro、というのはありかもしれなひ。
漏れもDXで物足りなくなったからAllegro始めてる。
DXはシンプルで良いんだけど、ファイルサイズがreleaseでも結構デカイ。でかくてダメって事は無いんだけど
allegroだとDLL使用なら実行形式は結構小さくなっていいな。
静的リンクでもサイズはほとんど気にしなくていいし。
>AllegroはVC++で導入する方がgcc系で導入するより敷居が高いとい
そうだなー俺はVC++ですがMinGW導入とかはインストーラに任せるとか、PATH確認すればよかったけど、
やっぱGNU準拠のWIN32用ツールが面倒だった。根っからのDos&WinユーザだったからGNU準拠ツールなぞ知らんと言い切ってたので
winのmakeで何が文句あるんだっって思ってた。
因みにGNU準拠ツールWin32版を配布しているページ
http://sourceforge.net/projects/gnuwin32/
忘れそうなのでAllegroコンパイル時覚書ちょっとだけ。うまくできない人は「参考」にしてください。
MSVCでfixかます時、utod(Unix to DOS) が無いとか言われるけど無視していいです。
MSVCDIRはダミーフォルダ作って指定しても可。コンパイル終了時にVCフォルダの中に includeとlibフォルダ入れればよし。
Allegroコンパイルしててnot found&error云々言われる時はmakefileとか疑うより
コンパイルに使われているmakeとかcatとかのツールをGNU準拠にしてみるといいかもね。
またツール入っているフォルダにPATH通すこと忘れないように。
途中でどうしてもコンパイル止まるときは直前のコマンドを「手作業」かcmd使ってる人は「コピペ」かましてみる。
通ったら再びmakeで無問題なはず。
DXからのAllegro乗り換え組にひとつだけ余計なお世話を一発。
(Allegroに限らず、海外系lib全般に言えるのだけど)
「日本語の『入力』には気をつけろ」
IME経由での入力はサポートしてないライブラリも多いぞ。
(特にAllegroは日本語入力自体ありえないOSもサポートしてるからな)
アクションゲームとかなら問題ないだろうけど、RPGやらADVやら作るとき要注意。
家庭用ゲーム機みたく、専用ウィンドウによる名前入力やら必要になるぞ。
mingw+Allegroで開発しようとしてたら、、、
mingwの問題なんだろうけど、コメント内に日本語があると
ダメみたいで、正常にコンパイルできないことが。
やる気無くなってそのまんまになってました。
もしかしたら今は解決されているかも知れませんが。
allegro+vcでコンパイルしようと、vc用パッケージを解凍してinstall.bat
すると、windows\systemにdllを転送、vc++のディレクトリに.hを転送。
まあ、名前や日付からして、一見してallegroのファイルだと分かるので
混ざってしまうことはありませんが。
install.batより、vc++のオプションでライブラリのパスを展開した
ディレトリに指定した方がよかったです。irrichtのインスト方法を見て
分かりました。
そのあと、サンプルをコンパイルしようとしたのですが、vc用の
パッケージなのにプロジェクトのファイルが無く、自分で作った
プロジェクトでは上手くコンパイルできませんでした…???
何かの設定が違っているのでしょうが、お手上げ。
しかたなくフリーでソース付きで公開してあるゲームを探して
コンパイルできることを確認。プロジェクトもそれを改造して
これからも使うしか無いのでしょうか???
レベルの高い人にAllegro解説頁を作ってもらいたいです…。
VC++のプロジェクトの設定は以下を参照
http://www.allegro.cc/docs/windows-msvc-use.html
詳しくは無いですが手助けできるかな?
以下上記リンクより要約しとく。最適化したライブラリで動的リンクで実行形式生成する場合です。
1、新規プロジェクトはWin32Appで。
2、[プロジェクト]->[設定]->[リンク]タブ->オブジェクトライブラリモジュールにalleg.libを行末に追加。
3、同じく[C/C++]タブ->カテゴリより、[コード生成]->[使用するランタイムライブラリ]->[マルチスレッドDLL]を選択
以上上記URLより。間違ってる可能性もあるので注意。
debugで生成する時とreleaseのlibファイルが違う事に注意。
VCのフォルダのinclude中のallegroフォルダにinlineフォルダ入ってるか確認。
これでうまくいくはず。
静的リンクしたいなら、allegro.hを#includeする前に
#define ALLEGRO_STATICLINK 1
を忘れずに。これは各モジュールで分割コンパイル時にallegro.h取り込んでるなら同じようにする。
dynamicかstaticどっちで生成するかわからんちんな時は#ifdef使ってあとでラベル使えばいいかも。
補足:
当然ながら、静的リンク時のライブラリは別物。
作り分けはツール->構成で「追加」して、新しい構成を設定するのがベストです。
SDLとAllegroの比較。SDL-Allegroの順で。訂正熱烈歓迎。
*Licence*
SDL LGPL
http://pc5.2ch.net/test/read.cgi/unix/1032702590/129
ライブラリ部分の「自由」さえ保証すれば販売も改変も問題ない。
* 改変分を含むライブラリのソースを提供する。(LGPLの第4節)
* static linkの場合にはアプリケーション部分のオブジェクトを提供
するかdynamic linkにしてライブラリ部分の差し替えを可能にする。
(LGPLの第6節)
Allegro Gift-ware
改変/商用利用になーんにも制限無し(たぶん)
*Basic*
mouse/keybord/joystick/timer     ○    ○
Unicodeサポート          ○    ○
スレッド             ○    ×
日本語表示            ×    ○unifont
日本語表示(with freetype)    SDL_ttf  AllegroFont(注1)
日本語入力            △(注2)   ×
(注1)SDL_ttfのTTF_OpenFontIndex()に相当するものが無い。
(注2)SDLSKK/SDL-IMパッチ等
*Drawing*
Blitとか            ○      ○
drawing primitives      SDL_gfx    ○
回転             SDL_gfx     ○
rotozoom           SDL_gfx    ○
ポリゴン             SGE     ○
コンパイル済みスプライト      ×      ○
テキスト描画         SDL_ttf/SGE   ○
*Grapchics*
BMP   ○      ○
PCX   SDL_image  ○
JPEG   SDL_image  libjpeg(allegro.cc)
PNG   SDL_image  libpng(allegro.cc)
TGA   SDL_image  ○
FLIC   ×      ○
*Sound*
CD    ○      ×
WAV   ○      ○
MIDI   SDL_mixer  ○
MP3   SDL_mixer  AllegroMP3
OGG   SDL_mixer  AllegroOGG
録音   ×      ○
*Utility*
設定ファイルRW    ×      ○
データファイル固め  SDL_archive ○
バイナリpack/unpack  ×      ○
3D数学関数      ×      ○
GUI          ×      △汚い
*OS*
UNIX/Linux   ◎ ○
DOS      × ○
MacOS     ○ △現状では。
Win32     ○ ○
BeOS      ○ ○

コメント

だいぶ前にAllegroを使って同人ゲームを作っていたページを発見したのだが、いつの間にか消えていた -- 2004-11-06 (土) 10:30:25