Androidアプリ「KIRIKA~同じ人間がいる、もう一つの世界~」第31話アップしました。

第31話はイベントシーンもありますので、

最新話まで読んでる人はお楽しみに!

今日から環境設定が追加されました。

オート時のページ送りの速度を変更できます!

ちなみに細々ではありますが、ロード速度とかも改善してるみたいです。
(私はシナリオ&イラスト担当なのでよく分かりませんが、そうらしいです^^;)

次回予告はADとディレクターのやり取りがちょっと暴走気味ですみません(笑)

ちなみに私はユーリ派です^^

※KIRIKAって何?
→全70話、エンディングまで完全無料の恋愛ノベルアプリです!

※内容の詳細、ダウンロードはこちら!
https://play.google.com/store/apps/details?id=net.darkdrive.android.kirika

2012.10.19
神森 真昼

Androidアプリ『KIRIKA~同じ人間がいる、もう一人の世界~』第30話突入!

今日、アップロードされたもので・・・

Androidアプリ
『KIRIKA~同じ人間がいる、もう一人の世界~』が
ついに30話に突入しました!

祝30話を記念して、次回予告ではスピンオフのストーリーを用意しています。
(※2日間の限定で、30話まで読みきらないと見れません^^;)

タイトルは「アントキノユーリ~野営地編~」です。
第24話のチャプター2のシーンをユーリの視点で描いています。
ユーリの視点になっていますが、表情も楽しんでいただきたいため、立ち絵はありの方向で!

ぜひ、この機会にご覧下さい^^

※KIRIKAって何?
→全70話、エンディングまで完全無料の恋愛ノベルアプリです!

※内容の詳細、ダウンロードはこちら!
https://play.google.com/store/apps/details?id=net.darkdrive.android.kirika

2012.10.17
神森 真昼

ユーリ君誕生秘話(第20話既読済の方対象)

※※ この記事はAndroidアプリ「KIRIKA~同じ人間がいる、もう一つの世界~」のネタバレ要素を含みます。※※
すでに既読済みの方のみご覧頂けたらと思います。

20121015_yuri

今回はユーリについての裏話を紹介します。

なぜ、このスクリーンショット・・・・。

私はこの船の上でのジンとユーリの掛け合いがわりと気に入っています^^

【 ユーリの顔 】

ユーリはもう最初からイメージが固まっていて、あまり苦労話がありません。

かっこいい雰囲気だが、子供っぽさを残すことを心がけてデザインしました。

現在28話まで作成していますが、彼の表情パターンが一番多く、

立ち絵のパターンとの組み合わせまで考慮すると2500~3000パターンあります。

イベントシーンはまた別途書き下ろしなのでそれも含めると・・・もう数え切れません。

【ユーリの髪色】

黄緑、水色、金髪でかなり悩みましたが、私がプロットを書いている時から、

ずっと頭の中で黄緑色のイメージで動いていたので、結局それを採用しました。

黄緑色の髪の男性キャラクターって恋愛ゲームであまり見かけない気もするし、

個人的には「本当にこの色にしてよかった」と思っています。

【ユーリの髪型】

ユーリの髪型も自分の中で固まっていたので、こちらもあまり苦労話がないです。

特徴としては中心の前髪が短く、外側になっていくにつれ長くなり、内にはねるようにしています。

【ユーリの服装】

マントとか・・・昔のRPGじゃないんだからと自分でも突っ込みつつも、

お金持ちのご子息感を出すために着用しました。

途中、部屋や船内にいるときは脱いだりするので、その違いを楽しんで頂ければ(笑)

ちょいちょい装飾品を身につけているのは、

自分で作ったアクセサリーが多いです。

わりと手先が器用なんですね!!

【ユーリの仕草】

10話の花火に誘われるシーンで、

ユーリが顔の近くで手をあててニコッと笑う、いかにも女の子っぽい仕草があります。

ユーリは父子家庭ですが、父はほとんど家にはおらず・・・

ほとんどは家政婦さんたちが育てたと言っても過言ではない状態。

そんな女性に囲まれて育ってしまったためか、

たまに仕草が女の子っぽいのがあったり、趣味がアクセサリー作ることだったりします。

ですが、決してそうしたくてしているわけではありませんので、

「ユーリ君、かわいい!」なんて言ったら機嫌を損ねてしまいます。

本人は一応気にしているみたいですね!

本当はプロフィールとかも載せていきたいですが、

もう少しお話が進んでからの方が書けることが多いのでその辺で~!

ここまで読んでいただき、ありがとうございました。

2012.10.15
神森 真昼

Androidアプリ「KIRIKA~同じ人間がいる、もう一つの世界」がもうすぐ30話!

10月はじめに18話でリリースし、

明日の更新でついに28話になります。

15日間で10話って・・・頑張った私orz

その代償としてアップするストック話がありません:;

なぜそこまでアップし続けたかというと、
読者の皆さんに早く30話以降の話を読んでもらいたいという気持ちが強かったからです><

一応アプリ説明に記載しておいた通り、お待ちかね(?)30話からは恋愛要素が多くなります。
ドキドキする展開をご提供できたらと思いますので、これからも読んでいただけるととっても嬉しいです^^

2012.10.14
神森 真昼

ハルキ君誕生秘話(第1話既読済の方対象)

※※ この記事はAndroidアプリ「KIRIKA~同じ人間がいる、もう一つの世界~」のネタバレ要素を含みます。※※
すでに既読済みの方のみご覧頂けたらと思います。

20121014_haruki

今日は第1話に登場する藤堂ハルキのキャラデザに関する話をご紹介します。

初期設定は学校のアイドルぐらいのポジションでしたが、芸能活動に励む高校生におさまりました。

やっぱり芸能人から告白されるのはドキドキするし、

まだそこまでの知名度がないというのが私なりのリアリティです。

嵐並みに人気な人来ちゃったらおそらく収集つかなくなるでしょうし。(笑)

【髪型】

髪型はプログラマーのNECOと話し合い、

神森「男性から見てイケメンだと思う芸能人は誰?」

NECO「松潤と水嶋ヒロ」

神森「どっちも髪がウェーブなイメージがあるよね!それでいこう!」

こうしてハルキ君は髪がウェーブになりました。安直ですみません。

でも、私自身が絵が得意ではありませんし、ウェーブな髪も書いたことがなく・・・

試行錯誤の末こうなりました。

話が進むにつれ、上手くなったらまた少し手を加えるかもです。^^;

【名前の由来】

この物語は下の名前が全員カタカナ表記になっています。

これはもう一つの世界ルカでも違和感なく演出するために敢えてこうしたというのもありますが、

私が過去に書いた作品はわりとカタカナが多かったりします。

そして、ハルキは・・・名前を考えている時に、ふと某小説家の名前が浮かんだので、

そのまま採用しました。

(意外に適当ですみません^^;)

【ハルキ君の顔】

一際目立ってイケメンにする必要があったので、かなりキャラデザを書き直して制作しました。

おそらく5パターン以上はあるかと思います。

ナオトには申し訳ないけど、彼をむしろかっこよくしすぎないようにしました(笑)

【ハルキ君の髪色】

やはり2050年設定はともかく、バルを現実世界に置き換えて読んで欲しいというのがあるので、

オーソドックスな茶色にしました。

主人公がアッシュっぽい髪色なので、並んだときに現実にいてもおかしくない雰囲気を作ってあります。

主人公がバルに帰って、彼と付き合える日はいつになることやら・・・。

・・・とこんな感じで、ハルキ君は誕生しました。

また時間がとれたら他のキャラの裏話についても書いていこうと思います。

ここまで読んでくださいまして、ありがとうございました^^

2012.10.14
神森 真昼

【全70話・エンディングまですべて無料】恋愛ノベルアプリ「KIRIKA~同じ人間がいる、もう一つの世界~」を本日リリースしました!

20121001_kirika

ついに10月1日付けでリリース!

DARKDRIVE.NET第8弾アプリ
『KIRIKA~同じ人間がいる、もう一つの世界~』

女性向け恋愛ノベルアプリとしては異例の全70話、エンディングまですべて無料で読むことが出来ます!
(随時更新のため、10月1日現在は18話まで公開中で、出来次第アップしていきます!)

ズバリ!たくさんの方に読んでもらいたいので!!(*>▽<*)ノ

【アプリのDLはこちら】https://play.google.com/store/apps/details?id=net.darkdrive.android.kirika

追記:2012年12月7日に無事完結いたしました!
続編はルート投票で決定します!全部読まれた方はぜひご参加ください^^

追記:2013年2月2日にルート投票50票突破で、ユーリルートの続編化が決定しました!
追記:2013年6月5日にご好評につき、ハルキルートの連載がはじまりました!
追記:2013年10月15日にご好評につき、バルルートの連載がはじまりました!

★ 作品の見所 ★

ファンタジー要素が強い前半ですが、30話以降は恋愛要素満載です!
50話以降はキスシーンも多く、年齢によってはちょっと過激だったりするかもです(^^;)

同じ人間がいる、もう一つの世界というサブタイトルだけに、
違う世界に暮らす同じ人間が登場します。
異世界(ルカ)の存在理由、2つの世界で揺れる恋心を描いています。

特にキリカ(主人公)を好きになる男性キャラクターは後半は特に偏愛っぷりが激しいです。

第70話はマルチエンディングを予定しています。

3つの分岐で続編を作成する予定です。
(一定数のダウンロード数があればね^^;)

★ プロローグ ★

高校2年生になったが、まだ誰とも付き合ったことがない・・・。

今年こそは誰かと付き合って恋に落ちたいと思っていた矢先に、

編入生で芸能活動をしている男子生徒から告白されたキリカ(変更可能)。

しかし、彼に返事をすることができないまま、
キリカは自分の世界と同じ容姿を持つ人間がいる異世界(ルカ)に行くことになってしまい・・・。

ルカでもう一人の自分が足の怪我が治るまでという約束で、
精霊使いの危険な巡礼をこなすことになったキリカ。

巡礼の中、キリカは様々な人に出会い、ルカの存在理由を知ることに・・・。

—————————————————————————————-
DARKDRIVE.NETはサイト名及びAndroidアプリ制作チームのコードネームです。
新しいアプリのリリース情報などはサイトとブログで告知を行なっていますので、ご利用ください。
(アプリの感想、お問い合わせなどありましたらブログにお寄せください。)

[ DARKDRIVE(公式サイト)] http://www.darkdrive.net/
[ アンドロイド・ダークドライブ(公式ブログ) ] http://blogs.yahoo.co.jp/hiro5_188

—————————————————————————————–

検索用:恋愛ゲーム、小説、ノベル、女性向け、恋愛シミュレーション、ノベルゲーム、乙女ゲーム

2012.10.1

神森 真昼

【Androidアプリ作成】HTML5 Application Cacheを使ってみる

HTML5の「Application Cache」を使うと
WEBページのオフライン表示を比較的容易に実現できる。

この機能は、初めてアクセスした時に表示に必要なファイルを全部
ダウンロードし、次回以降は不必要な通信を行われずに
表示されるといった挙動となる。

オフラインでも表示できるのが最大のメリット。

いくつか対応に手間取ったので、備忘録も兼ねてメモ。

■HTMLにmanifestを記載
——————————
<html lang="ja" manifest="cache.appcache">
<head></head>
<body></body>
</html>
——————————
※便宜上「~.appcache」としているが別指定も可能

■cache.appcacheを作成
アクセスするディレクトリ直下にcache.appcacheを作る
——————————
CACHE MANIFEST

# Version 201207170123

## Cache Files
CACHE:
index.html
style.css
data/data.json
js/script.js

## Network Files
NETWORK:
*
——————————
一行目はCACHE MANIFEST固定
「CACHE:」以降にローカル保存するファイルを記載
「NETWORK:」以降は毎回取りに行くファイルを記載

■Content-Typeのmanifest対応
アクセスするディレクトリ直下に.htaccessを作り
以下の内容を記載。
——————————
AddType text/cache-manifest .appcache
——————————

■apacheの設定変更(必要に応じて)
——————————
<Directory />

Options All

AllowOverride All
</Directory>
——————————
※環境によっては'/'ではないことも。適宜 $DOCUMENT_ROOT に読み替える。
apache再起動も忘れずに。

■WebView対応
AndroidからWebView経由でアクセスする場合は追加で必要。
——————————
public class MainActivity extends Activity {

@Override

public void onCreate( Bundle savedInstanceState ) {

super.onCreate( savedInstanceState );

WebView webView = new WebView( this );

webView.getSettings().setAppCacheEnabled( true );

webView.getSettings().setAppCacheMaxSize( 32 * 1024 * 1024 );

webView.getSettings().setCacheMode( WebSettings.LOAD_CACHE_ELSE_NETWORK );

webView.loadUrl( "http://www.darkdrive.net/index.html?from=blog" );

ViewGroup vg = (ViewGroup)findViewById( R.id.vgApp );

vg.addView( webView );

}
}
——————————

ファイル更新時は、忘れずに cache.appcache を適宜書き換える。

本機能により通信しなくてもWEB表示できるようにはなるが、
あらかじめダウンロードを行う分、
最初のネットワークの使用量が多くなってしまう。

利便性を考慮すると、ユーザーが設定で切り替えられるように
したほうがいいかも。

2012.7.17
NECO

【Androidアプリ作成】SQLiteを使うには?(後編)

前回のページからの続きです。
見てない方は下記をご参照ください^^
http://blogs.yahoo.co.jp/hiro5_188/21863869.html

前回に引き続き、SQLiteのDBファイルからの読み込みです。
大体以下のようになります。

[1] アプリ起動時

(1-1) DBが既にあれば何もしない

(1-2) DBがなければ空のDBを作る

(1-3) assetsからコンテキストデフォルトのDBパスへコピー

(1-4) DB作成に失敗したらDB削除

[2] SQLite使用時

(2-1) DBを開く

(2-2) 自由に操作

(2-3) DBを閉じる

上記の処理を実際にプログラムすると
以下のような感じになります。
長いですが、全部書きます。

[1] アプリ起動時

public static boolean onCreate( Context context, String dbname )

{

if ( isExistsDataBase( context, dbname ) )

// (1-1)

{

// 既にDBが存在するなら何もしない

return true;

}

try

{

createEmptyDataBase( context, dbname );

// (1-2)

copyDataBaseFromAsset( context, dbname );

// (1-3)

return true;

}

catch ( IOException e )

{

try

{

deleteDataBase( context, dbname );

// (1-4)

}

catch ( Exception ignore ) {}

return false;

}

}

(1-1) DBが既にあれば何もしない

private static boolean isExistsDataBase( Context context, String dbname )

{

SQLiteDatabase con = null;

try

{

con = openDataBase( context, dbname );

// (2-1)

return true;

}

catch ( IOException ignore )

{

// 例外は飲み込む

return false;

}

finally

{

if ( con != null )

{

try { con.close(); } catch ( Exception ignore ) {}

con = null;

}

}

}

(1-2) DBがなければ空のDBを作る

private static void createEmptyDataBase( Context context, String dbname ) throws IOException

{

SQLiteOpenHelper openHelper = new SQLiteOpenHelper( context, dbname, null, 1 )

{

@Override

public void onUpgrade( SQLiteDatabase sqlitedatabase, int i, int j ) {}

@Override

public void onCreate( SQLiteDatabase sqlitedatabase ) {}

};

SQLiteDatabase db = null;

try

{

// このメソッドを呼ぶことで、空のデータベースが

// アプリのデフォルトシステムパスに作られる

db = openHelper.getReadableDatabase();

}

finally

{

if ( db != null )

{

try { db.close(); } catch ( Exception ignore ) {}

db = null;

}

}

}

(1-3) assetsからコンテキストデフォルトのDBパスへコピー

private static void copyDataBaseFromAsset( Context context, String dbname ) throws IOException

{

InputStream in = null;

OutputStream out = null;

try

{

// asset 内のデータベースファイルにアクセス

in = context.getAssets().open( dbname + ".sqlite" );

// デフォルトのデータベースパスに作成した空のDB

String dbpath = context.getDatabasePath( dbname ).getPath();

out = new FileOutputStream( dbpath );

// コピー

byte[] buffer = new byte[ 4 * 1024 ];

int size;

while ( ( size = in.read( buffer ) ) >= 0 )

{

out.write( buffer, 0, size );

}

out.flush();

}

finally

{

if ( out != null )

{

try { out.close(); } catch ( Exception ignore ) {}

out = null;

}

if ( in != null )

{

try { in.close(); } catch ( Exception ignore ) {}

in = null;

}

}

}

(1-4) DB作成に失敗したらDB削除

private static void deleteDataBase( Context context, String dbname )

{

String dbpath = context.getDatabasePath( dbname ).getPath();

File db = new File( dbpath );

if ( db.exists() )

{

db.delete();

}

}

[2] SQLite使用時
(2-1) DBを開く

public static SQLiteDatabase openDataBase( Context context, String dbname ) throws IOException

{

// Open the database

SQLiteDatabase db;

try

{

String dbpath = context.getDatabasePath( dbname ).getPath();

db = SQLiteDatabase.openDatabase( dbpath, null, SQLiteDatabase.OPEN_READONLY );

}

catch ( SQLiteException e )

{

// あえて検査例外で投げ直す

throw new IOException( e.toString() );

}

return db;

}

(2-2) 自由に操作

Cursor rs = con.rawQuery( "select ITEM_ID, ITEM_NAME from ITEM_INFO", null );

rs.moveToFirst();

int len = rs.getCount();

ArrayList<ItemDao> list = new ArrayList<ItemDao>( len );

while ( 0 <= (–len) )

{

int offset = 0;

int id = rs.getInt( offset++ );

String name = rs.getString( offset++ );

list.add( new ItemDao( id, name ) );

rs.moveToNext();

}

return list;

(2-3) DBを閉じる

db.close();

結構手軽に扱えるので、お試しください^^

2011.12.23
NECO

【Androidアプリ作成】SQLiteを使うには?(前編)

大量のデータを使う際にはSQLを使うのが便利。
WEBサービスではデータの定義や永続化にSQLを使うことが多いと思われるが、
Androidでも小規模ながらSQLを使うことができる。

■データの定義
データの定義はPCからできる。
今回はWindowsで行った。

sqlite自体はAndroidSDKに付属してる。
バージョンは 3.6.22 のようです。("sqlite3 -version"で確認できる)
その気になればコマンドラインからでも操作できますが、
今回はめんどくさいので管理ツールを使う。

■各種インストール
・Apache
http://httpd.apache.org/
2.0.63 入れた。
[httpd.conf]
LoadModule php5_module C:\php5\php5apache2.dll

<IfModule mod_php5.c>
AddType application/x-httpd-php .php
PHPIniDir "C:/php5"
</IfModule>

・PHP
http://www.php.net/
5.3.1 入れた。

[php.ini]
必要なextentionは3つ
・php_mbstring.dll
・php_pdo_sqlite.dll
・php_sqlite3.dll

・SQLiteManager
http://www.sqlitemanager.org/
1.2.4 入れた。
ついでに日本語化。

■データ作成
・DBの作成
以下のコマンドで作れる

>sqlite3 test.sqlite

".quit"で抜けれる。

SQLiteManagerへの登録
SQLiteManagerのdocbaseと同じ階層に
DBファイルを置く。
ブラウザから名前、パスにDBファイル名を指定。
アップロードは非チェック。
私の環境ではなぜかアップロード出来なかった。
よくわからない。

・テーブルの作成
自由に CREATE TABLE すればいいと思う。

Android用に、別途
android_metadataなるテーブルが必要。
無いとアプリ起動時に例外が出る。
CREATE TABLE android_metadata ( locale text default 'en_US' );

・データの登録
自由に INSERT INTO すればいいと思う。

■データをプロジェクトディレクトリにコピー
SQLiteManagerのdocbaseからAndroidプロジェクトディレクトリに
DBファイルをコピーするバッチファイル作る。
コピー先は$PROJECT/assets以下とかで。

…とりあえず読み込む準備ができたので、
Androidから読み込む処理はまた今度。

2011.12.20
NECO

Twitterはじめました!

このたび、Twitterをはじめました!アカウントはDARKDRIVENET@神森真昼です。
よかったらメッセージくださいね^^

DARKDRIVENET@神森真昼 https://twitter.com/DARKDRIVENET
(Twitterアカウントはドットが使えないので、お間違えがないように)

DARKDRIVE.NETからリリースされるアプリ情報やゲームの不具合に関するフィードバックに
使えたらいいなぁと思っています。前にメールでユーザー様から不具合の連絡があったのですが、
相手側のメールの受信設定がサポートのメールアドレスを受信可能になっていなかったので
ご連絡差し上げることができないことがありましたので。(:_:)

今後もよろしくお願い致します。

2011.10.26
神森 真昼