Almight備忘録
AlmightはマルチプラットフォームでWEBベースで動き、
Windows、iOS、Androidそれぞれのパッケージを作れるので便利!
…というわけで採用したのですが、残念ながら2016.08に
システム開発・ユーザー対応が終わってしまったようです。
しばらくは使う予定なので備忘録を作りました。
Contents
■ツールの準備
・開発キット
・コミュニティ公開分
・Google Chrome
・テキストエディター
・その他のツール
■ゲーム作成
・フォルダ構成
・コメント
・画面サイズ
・テキストウィンドウ
・画像に割当
・よく使うマクロ・タグ
・マクロを作る
・よく使うPlugin
・セーブデータ格納先
■完成後作業
・設定ファイル更新
・パッケージ化
・アップロード
・DLsiteで販売
■参考HP
■フリーHP
■ツールの準備
・開発キットのダウンロード
開発はWindowsで行う。(Mac用もありますが使ってないので不明)
Almightダウンロードページから。
・開発用:Almight SDK(ゲーム開発キット)4.2β
・配布作業用:パッケージャー(v2.0)
・iPhoneで確認用:App Store
・Androidで確認用:Google Play
・コミュニティで公開されているツールをダウンロード
[action rule="xxx"]を使うために。SAFARIはOKらしい?
https://groups.google.com/forum/#!searchin/almightjs/rule/almightjs/CRGhrPm6RaQ/fh4ZIRF7BL8J
http://demo.almight.jp/support/almight-js-4.3-alpha.zip
→josogame/lib/dest/almight.jsを更新する
・Google Chromeをインストール
・windows用のAlmight.exeを実行する方法もあるが、
WEBベースで作りたいので、最初からgoogle chromで制作。
・ローカルで実行する方法:2015.10.27
・Chromeをインストール
・batファイルを作成し、実行(ファイルの場所を確認のこと)
"C:\Program Files\Google\Chrome\Application\chrome.exe"
--allow-file-access-from-files --app=index.html
|
・josogame/lib/index.htmlを開く→ゲーム開始。
・画面右クリック→要素を検証→Consoleを見るとエラーが見える。
・テキストエディター
・Windowsのツールは基本Shift-JISですが、AlmightはUTF-8です。
UTF-8が使えるエディターを用意のこと。
・その他のツール
BGM関係:
画像関係:SAIだと5000円。
アイコンの変更:
・まずhttp://app.tree-web.net/icon_converter/ 128x128
・次にhttp://www.vector.co.jp/soft/win95/amuse/se372418.html
・→変わらないorz
■ゲーム作成
・フォルダ構成
josogame/game/;ゲームのスクリプト、立ち絵、イベント絵、BGM、SEなど
josogame/i18n/;スマホ用のパッケージ化に必要
josogame/lib/;ゲーム実行のpluginなど
|
・コメント
KSファイルの中にコメント文を入れることが出来ます。
コメント無しでも分かるスクリプトが理想ですが。
// スラッシュ二個で一行コメント
;セミコロンで一行コメント
//行頭の空白・タブは無視されるので、これも一行コメント
;行頭の空白・タブは無視されるので、これも一行コメント
[show_bg file="hoge.jpg"][action]//これはコメントにならない
[show_bg file="hoge.jpg"][action];これもコメントにならない
|
タグの後ろにコメントを書けると便利だと思うのはjososhoだけ?
・ウインドウサイズ
・Windows一昔前は640x480、最近は?800x600(もっと大きい?)
・ipod touchは640x960でした。(古い…)
ただし、safariでは上部の20pixのステータスバーが、フルスクリーンでも消えない
・サイズ変更:http://atopinn6262.blog21.fc2.com/blog-entry-7.html参照
josogame/lib/config/almight.config.jsを編集。
// ゲームの幅
width: 800,
// ゲームの縦幅
height: 600,
|
・テキストウィンドウ
・josogame/game/ks/macro.ksを編集
数値は好みで適当に設定。
→[type_msg type="adv"][action time=300]などと使う。
[macro name="type_msg"]
[if exp="mp.type == 'full'"]
[current page="back"]
[deffont bold=true color="#ffffff" size=24][resetfont][current page="fore"]
[cm]
[position layer="message0" page="back" frame="" visible=true color="#000000"
opacity=100 top=0 left=0 width=780 height=600 marginl=20 margint=40 marginr=40 marginb=40]
[endif]
[if exp="mp.type == 'adv'"]
[current page="back"]
[deffont bold=true color="#ffffff" size=24][resetfont][current page="fore"]
[cm]
[position layer="message0" page="back" frame="" visible=true color="#000000"
opacity=100 top=400 left=10 width=780 height=190 marginl=20 margint=10 marginr=20 marginb=10]
[endif]
[endmacro]
|
・画像に割当
・画像をボタンに出来ます。
クリックのみではなく、画像領域にカーソルが入った時、出た時にJavascript式を評価したり出来る。
[locate x=200 y=500]
[button graphic="apple_btn.png" target="*apple" exp="f.apple = true"]
[s]
//graphic属性で指定する画像ファイルは
//「通常の状態」「ボタンを押下した状態」「ボタンの上にカーソルがある状態」の順で、
//同じサイズの画像を横並びに並べた画像となります。(マニュアルから抜粋)
|
・メッセージレイヤー上に画像を置くので、適宜切替えて使う。
・message0にボタン、message1に画像を表示すると、ボタンが効かなくなることがあった。
message2にボタン、message1に画像を表示して回避できた。
→画像サイズが大きくて重なっていたのかもしれないがあまり調査していない。
・よく使うマクロ・タグ
変数:2016.09.03
f.xxx:セーブロード可能な変数:好感度などに使用
sf.xxx:セーブロードと無関係に常に値を保持:ルートクリアなどに使用
tf.xxx:ゲーム終了で消える:一時的に使う変数
mp.xxx:マクロで使われてるけど詳細不明(オイ)。
JavaScript
[iscript]〜[endscipt]で囲んでjava実行。
[iscript]
alert('Hello world!');
[endscript]
|
メッセージボックスが出てきますが、細かい調整出来ないので、イマイチ…。
文字入力も可能。
タイトル画面+ゲームスタート
josogame/game/ks/first.ks
@call storage="macro.ks"
*start
[disablesave]
[hidecontroller]
[title name="DO・KI・DO・KI☆おんなのこ体験"]
[show_bg file="haikei/title.jpg"][action]
[showtitle storage="01.ks" target="*game_start"]
[s]
|
josogame/game/ks/01.ks
*game_start
[enablesave]
[showcontroller]
[hidetitle]
[wait time=800 skip=false]
[hide_bg][action time=2000 skip=false]
[er]
本文を始めます。[c]
…………[c]
ゲームが終わったら最初に戻る[c]
[jump target="*first.ks" target="*start"]
|
josogame/lib/plugin/title.html
<div id="almight-title-window" data-append="yes" data-selector="#almight-container-stage">
<div class="menu_list">
<ul>
<li id="almight-title-start">はじめから</li>
<li id="almight-title-load">つづきから</li>
<li id="almight-title-menu">設定・CGモード</li>
<li id="almight-title-copy">取扱説明書</li>
</ul>
</div>
</div>
|
java部分と、html部分を修正する。
almightのタグ(jumpなど)、almightのファンクションを実行出来る。
ファンクションはjosogame/lib/plugin/sidebar.htmlのhtml部分を見ると分かりやすい。(他にも色々あるかもしれない)
script部分は省略。
2017.01.23追記:
どうもマクロを使う時、spaceを複数入れると、上手く動かなかったりする模様。
×[show_bg file="haikei/xxx.jpg"]
○[show_bg file="haikei/xxx.jpg"]
改行・入力待ち
[r]
[c]
[er]
[l]
//順に、「改行」「改ページ、クリック待ち」「改ページ、クリック待ちしない」「改行しないクリック待ち」
|
* 2017.08.19 [l]追記
2017.08.19追記:
改行記号の変更(改行Verと改行しないVerのクリック待ち記号を同じにする)
josogame\\lib\css\almight.style.cssを編集。
意味は不明だけど(オイ)
・.almight-break-page {}
・.almight-break-line {}
の中身をそろえる。
三角形の向きや色も調整できそうだけどPASS。
/**
* クリック待ち記号
*/
.almight-break-page {
display: inline-block;
width: 0;
height: 0;
margin-left: 3px;
border-left: 10px solid #93dcf4;
border-top: 7px solid transparent;
border-bottom: 7px solid transparent;
-webkit-animation: blink 1500ms infinite;
-moz-animation: blink 1500ms infinite;
animation: blink 1500ms infinite; }
.almight-break-line {
display: inline-block;
width: 0;
height: 0;
margin-left: 3px;
/* border-top: 10px solid #a2e952;*/
/* border-left: 7px solid transparent;*/
/* border-right: 7px solid transparent;*/
border-left: 10px solid #93dcf4;
border-top: 7px solid transparent;
border-bottom: 7px solid transparent;
-webkit-animation: blink 1500ms infinite;
-moz-animation: blink 1500ms infinite;
animation: blink 1500ms infinite; }
|
テキストウィンドウ
//テキストウィンドウを開く
[type_msg type="adv"][action time=1000]
//テキストウィンドウを閉じる
[hide_msg][action time=1000]
|
メッセージウィンドウに画像を表示
[locate x=100 y=350][graph storage="haikei/copyright.png"]
[locate x=130 y=353]Project J.
|
*) copyright.pngに(C)を描いておくと、「(c)Project J.」と表示される。 2017.08.19追記
if
[if exp="sf.flag_xx==xx"]
[jump target="*xx1"]
[else]
[jump target="*xx2"]
[endif]
|
exp=の中身が"=="であることに注意。"="では動かない。
その他の比較演算子は、<,<=,>, >=, !=が使える。
複数演算子/複数条件の場合
○:動く
[if exp="sf.flag_1==1"]
[if exp="sf.flag_2==2"]
[if exp="sf.flag_3==3"]
[jump target="*xx1"]
[endif]
[endif]
[endif]
|
×:動かない
[if exp="sf.flag_1==1"][if exp="sf.flag_2==2"][if exp="sf.flag_3==3"]
[jump target="*xx1"]
[endif][endif][endif]
|
×:動かない
[if exp="sf.flag_1==1&&sf.flag_2==2&&sf.flag_3==3"]
[jump target="*xx1"]
[endif]
|
「&&」が駄目っぽい?
2017.09.08追記
choices
・選択肢を表示
[choices text1="選択肢1" exp1="f.xxx1=xx" target1="*target1"
text2="選択肢2" exp2="f.xxx2=xx" target2="*target2"]
|
expNは計算実行、targetNはjump。
・文字数が多すぎて選択肢ボタンをはみ出す(文字が読めない)場合
→選択肢ボタンの幅を変える/文字サイズを小さくする、で対応
josogame/lib/blue-ui.htmlを編集、153行目あたり。
width: XX%;
height: XXem;
margin: XXem;
font-size: XXem;
|
action
・[action]は、すべてのレイヤーのbackとforeを入れ替える作業を行う。
このため?、メッセージウィンドウに文字アリの状態で立ち絵を表示すると、文字が消えてしまう。
背景+立ち絵で、背景を入れ替えると立ち絵は消えないような・・・?
actionマクロの中を読むと、明示的にメッセージウィンドウを消してる?(詳細未調査)
・上記の通りなので立ち絵をActionで表示する前に
[backlay layer="message"]
|
など。layer="base", number, "message", "message0", "message1"…など指定。allLayerがデフォルト。2017.06.11追加
・ruleを指定すると、表示に効果をつけられる。
重い。マシンパワーが弱いともっさりして鬱陶しい。
[show_bg file="haikei/xxx.jpg"]
[action time=1000 rule="effect/time.png"]
|
show_X
立ち絵josogame/game/char/xxx.pngを表示
show_c, r, l, rc, lcが使える。
hide_c, r, l, rc, lc, allが使える。
//表示
[show_c file="char/xxx.png"][action time=1000]
//消去
[hide_c][action time=1000]
|
show_bg
josogame/game/haikei/xxx.jpgを背景表示
//表示
[show_bg file="haikei/xxx.jpg"][action time=1000]
//消去
[hide_bg][action time=1000]
|
show_ev
josogame/game/event/xxx.jpgを背景表示(イベント表示)。
+CG-MODE用に画像表示したことを記憶させる(sf変数に1をセット)。
マクロにshow_evが準備されているが、挙動がおかしかったので下記で対応。
//表示
[show_bg file="event/xxx.jpg"][action time=1000]
[eval exp="sf.xxxjpg=1"]
//消去
[hide_bg][action time=1000]
|
jump
goto。同じファイル内ならstorage="xxx.ks"は省略可能。
[jump storage="xxx.ks" target="*target_xxx"]
|
call
サブルーチンを呼ぶ。同じファイル内ならstorage="xxx.ks"は省略可能。
[call storage="xxx.ks" target="*target_xxx"]
|
サブルーチンは以下の形式。
*target_xxx
【なまえ】[r]
「あなたはだあれ?」[c]
[return]
|
callとreturnが対応していないと、(callで呼んでないのにreturnがあると)、無視しないでエラーでとまる。
macro
マクロを自作する時。
josogame/game/ks/macro.ks
[macro name="macro_jisaku"]
[show_bg file="haikei/macro_jisaku.jpg"]
[action]
[endmacro]
|
josogame/game/ks/01.ks(など)
playbgm, playse
//BGM開始
[playbgm loop=true storage="ogg/xxx.ogg"]
//BGM停止
[stop_bgm]
|
//SE開始 再生終了を待たない
[playse storage="ogg/xxxx.ogg" buf=0 loop=false]
//SEの再生終了を待つときはws。bufをあわせる。
[ws canskip=false buf=0]
//SEを終了する時。bufをあわせる。
[stopse buf=0]
|
・Web版:iOSではoggを再生しようとしてとまる模様?
(ファイルサイズが大きいのでWEB版はBGMを使わないことにしたので詳細は未調査)
・Web版:wav, mp3, ogg:Windows:OK
・Web版:wav, mp3, ogg:iOS?(未チェック)
・Web版:wav, mp3, ogg:Android?(未チェック)
・スマホ版:wav, mp3, ogg:iOS?(未チェック)
・スマホ版:wav, mp3, ogg:Android?(未チェック)
freeimage:2016.09.02
テストで立ち絵を連続表示させてたらメモリを食いつぶしてしまったので、一応適当に挿入。
[freeimage all=true page="fore"]
[freeimage all=true page="back"]
|
anim:2016.10.21
立ち絵を二倍サイズで表示。
立ち絵をアニメーションで拡大して表示すると、拡大の中心点が画像の中心じゃない模様。
拡大と一緒に妙な位置に移動してしまう。
→ backで拡大して、[action]でforeとbackを入れ替えようとするが、上手く動かず。
→ opacity=0で非表示状態で画像を読み込み+拡大、その後opacity=1にして表示させた。
※layer=5はデフォルトのmacro.ksで[show_c]に対応。
[image layer=5 page="fore" storage="char/XXX.png" left=500 top=300 visible=true opacity=0]
[anim page="fore" layer=5 scale=2 time=0 left=500 top=280 opacity=0]
[anim page="fore" layer=5 scale=2 time=1000 left=500 top=280 opacity=1]
[animstart layer=5]
[wm layer=5]
|
・マクロを作る 2017.01.21追加
マクロで変数を使う時、いまいち%とmpの使い方が分かりませんが、下記で動く模様。
明示的に読み込ませる必要がある?らしいので、macro.ksに追記するのが吉(の模様)。
変数をマクロに読ませる方法が良く分からない。
josogame/game/ks/first.ks
@call storage="macro.ks"
;茜のNo11の立ち絵を、1000ミリ秒で表示
[show_akane face=11 time=1000]
|
josogame/game/ks/macro.ks
[macro name="show_akane"]
;first.ksで指定したface変数をファイル名に変換。mp.faceを使う
[eval exp="mp.face='char/akane/akane'+mp.face+'.png'"]
;標準のマクロにface関数を引き渡す。%faceを使う
[show_c file="%face"]
;表示
[action time="%time"]
[endmacro]
|
・よく使うPlugin
josogame/lib/plugin/title.html
上の方のタイトル画面+ゲームスタート参照。
josogame/lib/plugin/cgmode.html
カンマの打ち忘れに注意。
josogame/lib/plugin/cgmode.html
/**
* CG設定
*
* expの部分には、変数名を入力します。変数に0や値が入っていない場合はCGフラグがオフとなります。
* imgの部分には、表示したいCGのファイル名を入力します。
*/
var cgdata = [
//page=1
[
{ exp:'sf.jpg1',img:'event/jpg1.jpg' },
{ exp:'sf.jpg2',img:'event/jpg2.jpg' },
{ exp:'sf.jpg3',img:'event/jpg3.jpg' }
],
//page=2
[
{ exp:'sf.jpg4',img:'event/jpg4.jpg' }
]
]
|
josogame/game/ks/01.ksはこんな感じ。
[show_bg file="event/jpg4.jpg][action][eval exp="sf.jpg4=1"]
|
josogame/lib/plugin/setting.html
初期設定をvol(100)やvol(60)で設定。
// 文字速度スライダー
$('#chspeed-slider').val(60).trigger('change');
|
josogame/lib/plugin/sidebar.html
html部分で不要なリンクを削除したり。
josogame/lib/plugin/load.html
特に設定不要
josogame/lib/plugin/save.html
特に設定不要
・セーブデータ格納先
チェック用にセーブデータを消したりする時に。コミュニティから抜粋。
>>パブリッシュしたゲーム(Windows、iPhone、Android)のセーブデータの消去は
>>出来ないのでしょうか?
■Windowsに関してはセーブデータの保存場所が
C:\Users\{user}\AppData\Local\{app}\Local Storage
app=almight
にありますのでそちらのほうで削除していただくか
デバッグ用のコンソール上で
for(var i in localStorage) {
localStorage.removeItem(i);
}
と入力すればセーブ全消し
一つずつ自分で選んで消したい時は、コンソールのResourcesタブを開き、
Local Storage のプルダウンを開くことで、セーブデータを選択できます。
そして消したいセーブデータを選択し、deleteキーで削除できます。
■次にスマホアプリでのセーブデータに関してですが
誠に申し訳ございませんが現状セーブデータの削除機能はありませんので
アプリを再インストールして頂けるようお願い致します。
|
→別ゲームをプレイしても、おなじフォルダの同じファイルに保存される模様?
・Chromeのキャッシュは以下。
C:\Users\ユーザー名\AppData\Local\Google\Chrome\User Data\Default\Cache
|
■完成後作業
・設定ファイル更新
・lib/config/almight.config.js -> debug=1(true)→0(false)
・lib/home.png, fullscreen.html -> iphoneブラウザ用
・i18n/ja/app.json, thumb.jpg -> スマホ用
・パッケージ化
・josogame/i18n/jaフォルダ内のapp.json、thumb.jpgを編集する
・josogame/フォルダ内にappicon.icoを置く
・josogameフォルダをデスクトップに置く。(Dドライブだとうまく動かなかった記憶が)
・almight Packagerを起動
・インプットにデスクトップ\josogameを選択
・アウトプットにドキュメントフォルダ(他も可能かも知れないが)を指定。
・しばらく待ってると完成。
・Windows用はZIPファイルなので、一度解凍して、README.txtを同梱して、再度ZIP化。
・スマホ用に縦でパッケージングするには?
コミュニティより:
2013/07/31
「まず最初に、ゲームをスマホに向けてパッケージ化する際、
自動的に横画面対応になるよう回転するようですが、
縦向きのままパッケージ化する方法はないでしょうか。」
「非公式の方法ですが可能です。
lib/viewer/almight.api.js というファイルをエディタで開きます。
そして、冒頭を以下のように編集してください。
/*
* Almight AVG Engine
* Mobile Only API
*/
setTimeout(function(){
Titanium.UI.currentWindow.orientationModes = [Titanium.UI.PORTRAIT];
}, 1000);
」
|
→ダメっぽい:2016.05.07(調査中途半端ですが)
→日付追加。当時のVerで試してみようかと。つーか、この関数の書き方正しいのかな。
ver 3.0:2013/3/15
ver 4.0:2013/9/20
ver 4.1:2013/11/12
ver 4.1.1:2013/11/12:4.1とおなじもの?→http://almight.jp/release/almight-sdk-4.1.1-beta-win.zipでDLすると2013/11/19
ver 4.2:2014/2/20
almight packager1.1は2013/2/15→http://almight.jp/release/almight-packager-1.1-win.msiが直接DL可能
almight packager2.0は2013/11/18
→Ver3+packager2.0はwindows版ブラックアウト。
「Packager 2.0でパッケージングを行う場合、
必ずAlmight 4.1.1のご利用をお願いします。」
だそうです。source:blog
→almight ver3.0 + packager1.1
ipod touch失敗。
almight ver3.1とかUPされてないかと探したけど無し。
→androidで試してみると成功。
→ipod touchは失敗、androidは成功なのはOSのVerの問題かも?
ipod touch=6.1.6, android=4.2.2
2013年9月18日からiOS 7らしいので、2013/7/31時点が再現できてるはずですが…。
→iOS11ではAlmightがインストールできないことが判明。
DLsiteがサポートやめた&64bit問題らしいので、今後almightがプレイできるiOSは無くなっていく一方。
iOSでエロゲーをプレイするためにalmightを使ってたのに、もう意味が無くなったなぁ。
iOSで下位互換エミュレーターとか出るのか?(出てるのか?)
2017.10.28付記
・アップロード
・WEB版:以下をアップロード
josogame/game
josogame/lib
次にjosogame/lib/index.htmlにリンクを張って公開。
ファイル名に大文字を含むとエラーになるので注意。
・DropBox
ドラッグアンドドロップでアップロード。
shareのURLをdl=0からdl=1に書き換えてHP更新。
iPhone, Android用にはhttp://をalmight://と書き換えてHP更新。
・FireStorage
Windows用を置くのに便利。
・iOS、Androidのテストでゲームダウンロードを一度失敗すると、何回試しても駄目っぽい。
Almightのキャッシュクリア、Almightでゲームをアンインストール、Almight自身を再インストールしても駄目だった。
結局Dropboxのフォルダ名を変えて、別URLを作ってHPを更新、ゲームをダウンロードさせた。
・DLsiteで販売
・工事中
■参考HP
・工事中
■フリーHP(ゲームUPできるところ)
アダルトOKのフリーHPは激減(2015に探したときのメモ)
結局FC2を使うことにした。
・FC2:アダルトOK、ファイルサイズは1MBがMAX。BGMなど普通に1MB超えるのでつらい
・tok2:アダルト不可
・AAS:個人が手作業で登録??
・x1x:フリーなし??
・Xdomain:わいせつ不可
・free-hosting:無料ということになっているが、ドメイン名をカネを出して取得しないと行けない模様?
・E-Adult-Host:海外、アダルトOK。だが「アクセス数少ない」から?メールで来た「コンサルするよ」を放置したから?消された。
|
What's New! |
2017.10.28 | 縦画面について追記&iOS11でAlmight終了かなぁ |
2017.09.08 | 複合演算子?(ifが複数)の場合追記 |
2017.08.19 | [l][r]の▽記号を同じにする方法追記、(c)について注記 |
2017.06.11 | backlay @action 追記 |
2017.01.21 | mp.para, appicon, macroをつくる, 追記 |
2016.09.10 | ページUP |
2016.09.03 | ページ作成 |
2017.09.15
config/almight.config.jsでdebug=0にしておいても、F5でdebuggerが開けてスクリプトが読めてしまいます。
josogame/lib/index.htmlの〜の間に以下を書くとデバッガーを起動すると暴走して読めなくなります。
(デバッガーが起動するまでのスクリプトは表示されてしまいます)
もっとスマートな方法があれば良いのですが(汗)
参考:こちら。IE11は無効にできない模様。うーん…。