Android Studio v3.1.x. & kotlin_version = '1.2.30+' にアップグレードするとRealmが動かない問題

kotlin_version 1.2.30からビルドの仕方が変わったのかRealmのビルド時にエラーが出るようになった。 Original kapt is deprecated. Please add "apply plugin: 'kotlin-kapt'" to your build.gradle. ので言われたようにプラグインを追加する apply plugin:…

Java屋にもわかるScalaのImplicit

KotlinともFEHとも関係ありませんがScalaMatsuri 2018でImplicitの発表を見てようやく理解できたのでJava使いから見たImplicitの話を書きます。なお私はScalaは素人同然なので記事は修正・削除される可能性が大いにあります。 これもScalaMatsuriの感想ブロ…

ゲーム(FEH)におけるダメージ管理で学ぶ増やせるメソッド設計

前置き あるオブジェクトのメソッドはそのオブジェクトを操作対象にしたコードブロックである、という話をしました。↓の二つは同じオブジェクトを対象にするときは等価です。 class A (var x : Int){ fun incX() = x++ val incX:(A)->Int = {a->a.x++} } そ…

ゲーム(FEH)におけるダメージ管理で学ぶメソッド設計の前置き

RPGやSLGの多くでは敵味方キャラクター間の戦闘が発生し、お互いにダメージを与えHPを削りあいます。この時に能力値をパラメータとしてダメージを計算することになるのですが、これがゲームバランスやギミックの要求により結構面倒な計算式になったりします…

Kotlin1.2でAndroid用のモデルをJavascriptから利用する

Javascriptのブラウザ版を作ったのをQiitaに書いたけどこっちに書いてないのすっかり忘れてた…。 Fire Emblem Heroes Battle Simulator そろそろなんか機能追加とかプレイ画面作成とかしないとな。 要約 Javaに依存せずDDD的にKotlinだけでモデルを記述すれ…

ORMラッパーライブラリRoomをRealmと取り換えてみる(Kotlin)

本当はKotlin multi-platformでAndroid用のソースをjsに変換していたのだが上手く動かないので断念してQiitaへ投稿した記事を転載する。変換してオブジェクトを作るまではうごくのだがinit()内で自分の関数が呼べない…明日Kotlin側のソースを修正して上手く…

AndroidStudioでjdkを指定してGradleが死んだ話

Error:Failed to complete Gradle execution. Cause:Write access is allowed from event dispatch thread only とGradleがエラーをはくことがある。File > Project Structure > SDK LocationでUse embeded JDKを選ぶと直る。 今マルチプラットフォーム対応…

com.android.applicationとcom.android.libraryを取り違えると.BuildTypeAttr 'debug' and found compatible value 'debug'.で死ぬ

またやってしまった… Androidでライブラリのモジュールを作るにはbuild.gradleで頭の apply plugin: 'com.android.application' を apply plugin: 'com.android.library' に変えればいいのだが、 適当にプラグインをコピペするとapplicationに戻ったりしてこ…

Kotlinで委譲:enumに委譲することでenumの機能を拡張する

今日も忘れないうちにQiitaへ投稿した記事の転載。いいねは一個もつかなかったな…みんな値オブジェクト嫌いなのかなあ。便利なんだけどなあ。 アカンならアカンで罵倒くらい欲しいな… Kotlinでは実装を他のクラスへ委譲(Class Delegation)することができます…

ファイアーエムブレムヒーローズの戦闘結果計算ツールをKotlinでDDD的に作ってみた

個人開発 Advent Calendar 2017 の三日目の記事からアプリの説明を転載。自分で書いた奴だから良いよね? qiita.com この記事は筆者が初めて作ったAndroidアプリの設計を解説します。何分初めてなものなので問題があったら指摘をいただければ記事(とアプリ…

基本的な構成

UI(android依存部) UIは実質画面のみ。シミュレータ画面とキャラ登録画面。登録画面は後で。 シミュレータ画面では選択したキャラと他のキャラをRepositoryに出してもらって戦いを指示するだけ。戦うロジックは全てビジネスロジック部に入っている。 ロジッ…

ドメイン駆動設計(DDD)でAndroidアプリを開発する実例を作る

最近よく見るでも前からあるけれど実践するにはどうすればいいかさっぱり分からないドメイン駆動設計(DDD)でFEH Battle Simulator(以下FEHBS)を作ってみます。個人開発でないと実践するチャンスが少ないですからね。 ドメイン駆動設計 - Wikipedia なんに…

Google Playにてリリース※ただし戦闘結果予測ツールのみ

Google playでリリースしました。と言っても、FEH Mass Duel Simulatorのようにユニットを指定して全ユニットとの戦闘結果を予測して出すだけですが。 play.google.com しばらくオープンベータにしていたけど反応が無いというかオープンベータ画面へのアクセ…

ソースをGitHubに公開する準備※ただしGit使うの初めて

構成かえて作り直したら2か月経ってる…だと… とはいえ戦闘結果を出すシミュレータはできたのでそのうちにAndroidで公開する予定 どうせ公開するならソースも公開しようと思うので初めてGitHubを使ってみる。 まずはGitをインストール。設定は全部デフォルト…

AndroidStudioのKotlinバージョンアップ?でビルドは通るけどテストしようとすると落ちるように……

Actorの話をする予定だったのがupdateのサジェスチョンをホイホイ通したらスクリーンショットをとろうとして起動するとエラーを吐くように。 エラーメッセージは以下 Error:Error converting bytecode to dex:Cause: Dex cannot parse version 52 byte code.…

とりあえずサンプルをKotlinに変換する

westplain.sakuraweb.com のソースをそのまま使ってしまいましょう。実行画面はこんな感じです。 さてこのサンプルは当然ながらJavaなのでKotlinに変換する必要があります。 とはいっても、対象のファイルを選択してからメニュー>Code>convert Java File to…

とりあえずLibGDXを取ってきてセットアップします。 libgdx セットアップと言ってもgdx-setup.jarを落として実行するだけです。 AndroidStudio、つまりIDE用のセットアップ項目もあるのでこれもチェック。 Generateを押してプロジェクトを作成。 AndroidStud…

まずはユースケースシナリオ

いざゲームを作ると言ってもどこから手を付けていいか分からないものです。 そこで、まずシナリオを考えます。ゲームのストーリーではなくユースケースシナリオ、つまりユーザがこのゲームとどう関わるのか、どういう手順で遊ぶのか、というシナリオです。 …

FEHのシミュレータを作る

ファイアーエムブレムヒーローズ(以下FEH)というスマホゲームがあります。つい先月リリース1/2周年を迎えました。 fire-emblem-heroes.com このFEHと言うゲームがどういったゲームであるのかはまあ遊んでみればわかるとして、このゲームは ルール・ダメー…