Hatena::ブログ(Diary)

しんさんの出張所 はてな編 このページをアンテナに追加 RSSフィード

カレンダー
2007 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 05 | 06 | 08 | 09 | 10 | 11 | 12 |
2015 | 02 | 03 | 04 | 05 | 06 | 07 | 09 | 10 | 11 |
2016 | 05 | 08 | 10 | 11 | 12 |
2017 | 01 | 02 | 06 | 08 | 11 |
2018 | 02 | 08 |

2018-08-09

[][]Unityメモ #1 「コンポーネント」という言葉に注意

これから自分のためになんかあったときあとで思い出せるようにUnityのメモを残していくことにする。

おもに7月の1か月間で勉強した内容中心にかきなぐっていく。

が、第1回はいきなり勉強関係ない、プログラム関係ない所から。でもすごく大事。

コンポーネント

この単語を意味するところはプログラムを組んできた人なら何らかのソフトウェア部品を意味すると思う。

また、さらに狭義の意味ではGUI部品なども表すことが多いだろう。コントロールなどとかね。

でもUnityにはコンポーネントという名前の意味がちゃんと定義されている。しかも頻繁に使う。

そのためUnityしか知らない人や、Unityのプロダクト上での話に外野が上記単語を持ち出すとかみ合わなくて話が通じないので注意すること。

俺はこれをやらかしたことがある。びっくりするくらい通じない。

Unityコンポーネントというのはゲームオブジェクトに付与できる振る舞いのこと。大半のプログラムもこのコンポーネントの1つに過ぎないという不思議な感じのものである。

このコンポーネント、libGDXやcocos2dには当てはまる概念はないと思う。

2018-08-04

[][]Switch イース8 は間違いなくお勧めだ

概要

アクションRPGの名作であるイース。そのシリーズの8作目。

主人公はいつものアドルである。

が、話は独立しているので8だけで楽しめる。

元はVitaでそれの完全版的なPS4版が発売され、SwitchはそのPS4版の移植となっている。

DLCなども最初から入っている模様。



システム

3人PT。この3人をボタンで瞬時に切り替えることが可能。武器によって属性が違うため、敵の弱点属性をうまく使って戦うというのが基本的な戦い方。

最終的に6人で歩くのだが、操作できるのは3人まで。もちろんPT編成ができるため、その3人のHPが減ってきたら、のこりの3人に変えてプレイなどもできるため基本的に人数が増えるほうが有利ではある。

が、ボス戦になるとPT編成などが全くできなくなるため結局主力の3キャラだけで進めたほうが良いという感じに。というのはキャラ切り替えを設定していない控えのキャラは経験値の入りが少ないようだ。主力にLVを置いて行かれることになる。

スキルはたくさんあるようだが、成長要素もあり、使いやすいものだけに絞るのがよさそう。似たような範囲だったりどれがどんな感じか正直ダメージ的にもわかりにくいものだらけでスキルの差別化はできてない、あまり良いとは言えなかった。結局強いスキル1つだけ使う感じになっちゃう。


ロードは早い。特にスキップトラベルの速さは特筆もの。そのかわり、エリアが細かく区切られるエリア制になっているのが残念。エリアが区切られてはいるが、その先の描画もちゃんとされているのでせまっ苦しい感じはそこまでではないけれども、ロードが短くとも頻繁に入るのはすこしつらい。

元がVitaということで細かく区切る必要があったのとそれをベースにしてイベント類をそのまま配置でいるように無あ以外はきりかえをあまり変えてないのが原因だろうか。

アイテムやメニュー系が一瞬で出るため、快適さを意識したゲームといってよいとは思う。

クエストなどの位置がマップに表示差r、スキップトラベルも快適ということでクエストは意識していればクリアはしやすいかもしれない。


シナリオ

序盤はどうしても漂流者たちが生きるためにがんばるというだけで話がすすむのでそこはものたりないとおもう。話が動き始めるのはダーナを操作できるようになってから。

世界の滅亡などが絡んできていきなり話のスケールが広がる。


のだが、どうしても舞台は島1つだけなのでバリエーションは乏しい感じ。


最終的にサブタイトルの意味が分かるのがクリア後というのが地味に素晴らしい。お話的には初期のイース1〜3よりはるかによいとは思う。

ただし、名声が低いとまともなエンディングが見れないのはよくないかな。恐らく200以上必要。普通のエンディングの上で特別なのが用意されているとかならわかるのだが、これは一番上のエンディングでやっと普通のエンディングなので。


サウンド

イースといえばファルコム黄金時代のBGMのよさは有名。

で、その8はどうかといえば、これがすばらしい完成度だった。

BGMがよいRPGならイースという名前を付けてよいのでは、というくらいやはりイースシリーズでは大事だと思う。


グラフィック

メニューの際に表示される絵はTOP絵と個別のキャラ絵の2つがあるがどちらも素晴らしくきれい

一方で酷評される3D絵のほうだが、これ自体はそれほど悪いとは自分は思わなかった。むしろモーションなどはきになる。

それよりは気になるのは影のちらつきや、テクスチャのモアレ。特に最初の導入部分のイベントの船の上はすごいことになっている。影のちらつきもそうだが、これらは画面全体がスクロールしているときは気にはならないが、画面が止まった感じのイベントシーンではかなりつらい感じになる。

それ以外は南国の島的なグラはきれいだとは思う。


評価

いつもの5段階評価。おすすめかかどうかは総合評価を見てもらえれば。

 評価
システム★★★−−
シナリオ★★★★−
サウンド★★★★−
グラフィック★★★−−
総合評価★★★★★

はい、まちがいなくおすすめです。

2018-02-16

[]株式会社Abby社員募集中(Unity)

株式会社Abbyでは技術者を募集しています。

今回募集している技術はUnity技術者です。

UnityなのでC#知識は古いくらいがちょうどよいです(PC以外だと動かない、エラーも出ないとか普通にあるの困る)。

言語よりもIDEを使い慣れている、勘所などそちらを重視します。


今まではスマホ向けに開発をしていましたが、今後はスマホのほかにもプラットフォームを広げる予定です。


https://www.abby.co.jp/

興味がある方は弊社ホームページの採用を参照、または自分宛てにTwitterのDM(@shinsan68k)などでもかまわないです。

もちろん自分以外の弊社社員と顔見知りでしたらそちらからコンタクトをとって構いません。

ご応募お待ちしております。

2017-11-16

[]株式会社Abby社員募集中(Go/Unity)

株式会社Abbyでは技術者を募集しています。


今回募集している技術はGoとUnity技術者です。

Goの技術者サーバーサイドの技術者となります。Go言語だけではなくRDBの基本的な知識も必要です。HTMLJS知識もあるとなおよいです。

Unity技術者Unityを触ったことがある、指示されて末端で作業をしただけだけという人ではなく、自分なりのベストプラクティスがある、スマホなどマルチプラットフォームでのノウハウがある、など開発面においてチームを引っ張っていける人を募集しています。



https://www.abby.co.jp/

興味がある方は弊社ホームページの採用を参照、または自分宛てにTwitterのDM(@shinsan68k)などでもかまわないです。

もちろん自分以外の弊社社員と顔見知りでしたらそちらからコンタクトをとって構いません。

ご応募お待ちしております。

2017-08-05

[][][]NetBeans 8.2で日本語を使えるようにする

NetBeansは8.0まではエディタは特に問題はありませんでした。

NetBeans 8.1にてエディタがおかしくなります。一応何とか我慢できるレベルのバグではありました。この挙動は6.x系だったか不安定なバージョンで一度やらかしたやつと同じです。一瞬どっかにスクロールしてしまう系ですね。

NetBeans 8.2ではなんと改善どころか悪化しました。もはや入力に支障が出るレベルです。


一か月半ほど利用してみましたが、以下の対応で問題は解決しました。問題は特に出ていません。jarを置き換えるだけのものです。

http://junichi11.com/?p=3620

非常に助かってます。ありがとうございます!


アップデート系などが動いていると恐らくNetBeansインストールしたフォルダではなくAppData/Roamingなどユーザーのフォルダに各種jarがおかれていてそちらを利用しているので置き換える必要があります。

また、ここは隠しフォルダとなっていて隠しフォルダを表示する設定になっていても普通に検索して該当ファイルが見つかりませんので、意識して探しに行ってください。

2017-06-08

[][]株式会社Abby社員募集中(Go/Java)

久々のblogです。久々の募集エントリです。

できるだけわかりやすいところを書いていきます。

Abbyではプログラマを若干名募集しています

募集はプログラマです。若干名です。

また、比較的急募です。


会社のお話

勤務場所は東京本社、最寄り駅は中目黒駅というところです。

今住んでいる場所からだと通勤時間がかかるなどの場合、引っ越し代の援助もあるかもしれません。(応相談)


会社概要などはこちらを見ていただければと思います。

株式会社Abby


上のリンクを見ていただけるとわかりますが、うちは業務系とゲーム系の開発の2つを行っています。

ゲーム系は最近ですとクレヨンしんちゃんという漫画/アニメのゲームの開発のお手伝いをさせていただきました。その前はくまのがっこう、ムーミンといったものも開発させていただいております。ターゲットはスマートフォンタブレットといったものです。


業務系はいろいろと多岐にわたると思いますが、こちらもメインはタブレット向けの開発をしていたりします。


面白いことにどちらも技術的には、サーバー側はGo言語/Javascript/HtmlクライアントJava言語となっており、わりと統一されています。



募集スキル

というわけで、今即戦力としてほしいのはGoまたはJavaが書ける人です。

もちろん、どちらが得意でもう片方もある程度かけるなら完璧です。

どちらか片方が得意な場合即採用かと思います。特にGoを書ける人の絶対数は少ないかと思いますのでそちらが得意だと採用される確率はかなり高いかもしれません(個人的な感想です)。


環境について

開発環境は自由です。

マシンはMacLinuxWindowsなど好きに決めることができます。一番パフォーマンスが出せる環境を選択してください。

統合開発環境にしても自由です。例えばJava書いてる人でもNetBeansEclipseIDEA、AndroidStudio、自作IDEの人など自由です。

コードが出来上がれば何でもよいです。使い慣れたものでOKです。

技術書もほしいものがあればすぐ買います。


そのほかの環境としては机はかなり広いかと思います。椅子はいわゆるアーロンチェアです。

服装は私服で結構です。打ち合わせで外に出るのはほとんどぼ社長が行っており、ほかの社員はスーツを着る必要はまずありません。

自分もこの数年スーツを着たことはほぼないです。コードを書くのだけに集中してもらえればと思います。

基本出社が必要ではありますが、子供の世話をしないといけないときや台風で出社が困難、少し体調悪いかもといった場合など自宅で作業してもらって結構です。


腹筋マシーンやけんすい器具などもなぜかあります。


そのほか

うちの社長とCTOも同様の募集エントリ書いてますのでこちらも見てもらえればと思います。

社員募集

株式会社Abby エビイ で働くチャンス到来の話



上記内容を見て気になった方は、Abbyのホームページ上から申し込んでもよいですし、twitterで自分宛てにDMしていただいてもかまいません。twitter経由で入った方も何人かいる気がしますのでまずは会社見学から気にせずどうぞ。

2017-02-26

[][]libGDXの基礎20 シザーテストを使う

http://qiita.com/shinsan68k/items/ef84cf8590134c8d7ccf

今回はシザーテストを書きました。

特別扱いは難しくないのですが、SpriteBatchなどバッチ描画している場合(ほとんどの場合デフォルトではそうです)、バッチのフラッシュなどを意識する必要があるのだけは注意が必要です。

2017-01-14

[][]MD ファンタシースター2 クリア

はぁ、クリアした。ひたすら苦行の連続。こんなひどいRPGは89年程度だとあまりないはずなんだけどなぁ。

https://shinsan.s3.amazonaws.com/diary/2017/0114-1.png

概要

メガドライブ初期のRPG。本体が出てから発売まで早いこと、雑誌でも大きく取り上げられていたため知っている人も多いと思う。

自分も当時やったがあまりの難易度でクリアできなかった。

中断機能のあるレトロフリークでプレイ。わからないところは攻略サイトなども見た。


グラフィック

ファミコンPCエンジンとの差別化として2重スクロールを取り入れてある。

問題はそれが効果的にできているところはなく、ひたすら見づらいだけのところがほとんどだということ。

これなら多重スクロールはやらないほうがよかった。

戦闘は敵キャラがアニメ、攻撃時にもアニメ。味方も攻撃時にアニメ。はじめてスライサーを見た時はかっこいいなと思ったものだ。

ただ、敵の攻撃で点滅したりするのはちょっとうざい。敵の攻撃アニメがあるというのもテンポが悪い。


BGM

ドラムが効いていて悪くはない。このゲームで唯一評価できる点だろうか。

とはいえ印象に残る曲がそれほど多いわけでもなく。

音源が強力だからといえばそれまでではあるが。


ストーリー

うーん。当時からテキストが寒いと思っていたけど、改めてやり直したらもっとひどかった。

お話そのものは面白くできそうな感じはあるのだが、全く生かせてない。

メガドラが出たてとはいえ、このころはドラクエはすでに3もでている。FFもあのドラマチックな2が出ている。あまりにもおそまつ


UI

まず、パーティーのHPなどを確認するだけでもメニューをたどらないとダメ。これはきつい。

ドラクエがメニューを出すといきなりステータスを表示する、ファイナルファンタジーキャンプ画面を出すと全員のステータスを表示する、こういった基本ができているのに、89年にもなってこのありさま。

UIのひどさはキャンプメニューだけではない。戦闘がひどい。

基本オート戦闘。テクニックや消費するアイテムの利用時はその行動が終わった後オート攻撃に切り替わる。

それ以外の時はひたすら同じコマンドを繰り返す。

攻撃メインで進むようなゲームバランスならまぁそれもありかもしれないが、基本1ターン目にパーティー全体の抵抗力を上げるスキルがほぼ必須というバランスのゲームではこれがあまりにも面倒。また、テクニックも全体的に消費が多く、気軽に使えない。そのためHP回復も自分が回復する装備アイテムを使うのが9割。自然とこまめにコマンドを入力するタイプの戦闘になるわけで、同じコマンドを繰り返す前提のシステムとの相性が非常に悪かった。

表示される攻撃力が何の役にも立たないというのもどうだろうか。両手剣は右手と左手に装備されているように見えるため、実際の攻撃力は半分くらい。そして武器の攻撃力以外のパラメータは誤差。

メガドラが出たてとはいえ、このころはドラクエはすでに1年近く前に3がでている。低スペックなファミコンで。あまりにもおそまつ

ゲームバランス

攻略サイトも見て、中断機能も活用してやっとクリア。

エンカウント率は特別高くない。この時代だとこんなものか。

ただ、ダンジョンの難易度はかなりひどい。最初のダンジョンから異様に難易度高く、とにかくクリアさせないように、プレイ時間を長くさせるようにという作りだ。

ラストダンジョンが一番簡単というあたりもやばさが伝わるだろうか。ラスダン程度にしてくれればよかったのに。

とにかくこのダンジョンの改良だけで大きく評価が良くなるはずなのだが。


戦闘に関してもバランスが悪いといわれているが、それほどでもなかった。ネクロマンサーとかのほうがきついことはきつい。

ただ、上で書いたようにUIがひどいので何をするにしても面倒で、戦闘が嫌になる。

火器系の武器が守備力完全無視、攻撃力に依存しないという仕組み。

敵の守備力も最後まで極端に上下するため、重火器系がほんと役に立つなぁと思うのは終盤近くなってから。序盤はライフルとかメインのはずのキャラがナイフ握るのが一番強いとか。


単体攻撃テクニックを一番使いこなすのが単体攻撃特化の両手剣使いの主人公という調整もどうなのだろう。中盤で120ダメージをたたき出すテクニックを覚えるが、これの数字は実はかなり大きく、最後まで使い物になる威力。ただし物理攻撃同様ミスはするので使いにくい。そもそもバランスのとり方としてTP消費を多くして連発できないようにさせたという感じの調整になっているのもおかしい。魔法が得意そうなキャラよりダメージを与えるのが得意というのも少し変。

ドラクエ3でたとえるならば戦士がメラゾーマダーマ神殿にたどり着いたころにおぼえる、そんなバランス。


評価

いつもの5段階評価。おすすめかかどうかは総合評価を見てもらえれば。

 評価
システム★★−−−
シナリオ★★−−−
サウンド★★★★−
グラフィック★★★−−
総合評価★★−−−

あと、攻略サイトにある情報はうのみにしないこと。

間違ってるところがぽつぽつある。

防御系スキルの効果は重ねがけをしてもほぼ効果はないはず。シフタの攻撃力もさほど上がらない。

メガドライブはこんなのを持ち上げないといけないくらい、序盤は本当にダメだったというのを思い出させる。あきらかによかったのはセガのソフトじゃない大魔界村などくらい。本当はPCエンジンファミコンを蹴散らすくらいの勢いが必要だったが、それができずにファミコンが好調なままスーパーファミコン登場。世の中スーパーファミコンを中心に回り始めたところでやっと少しよくなっていった感じだった。

ウルティマ恐怖のエクソダスのほうが話やバランスは10倍くらい良いのだが、どうも世の中そう思われてなさそう。

2016-12-07

[][]超高速に初めるJAX-RS + Guice

JAX-RSの起動は前回さくっと終わらせた。

http://d.hatena.ne.jp/shin/20161204/p1

あとはロジック回り。今回はGoogle Guiceを使う。CDIを使うならWeldSEは使わずpayara microなどEEコンテナをちゃんと立ち上げたほうが良い。

Guiceとのコネクタは用意されているのでそれを使おう。


依存ライブラリの追加

前回の状態からさらに依存関係に以下の1行を追加する

compile "org.glassfish.hk2:guice-bridge:2.5+"

おわり。JAX-RSの依存も前回の1行だけだったのであわせて2行だけ。


やること

前回作ったCalcというリソースクラスにFormatLogicという文字列を返すクラスのシングルトンのインスタンスを注入する。

そのクラスを使い、結果を返す。


プログラム

今回もソースコード一つ。

import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import java.net.URI;
import java.util.Scanner;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Feature;
import javax.ws.rs.core.FeatureContext;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriBuilder;

import org.glassfish.hk2.api.ServiceLocator;
import org.glassfish.jersey.ServiceLocatorProvider;
import org.glassfish.jersey.jdkhttp.JdkHttpServerFactory;
import org.glassfish.jersey.server.ResourceConfig;
import org.jvnet.hk2.guice.bridge.api.GuiceBridge;
import org.jvnet.hk2.guice.bridge.api.GuiceIntoHK2Bridge;

public class Main {

    //--------------------------------------------------------------------------
    //サーバー起動
    //--------------------------------------------------------------------------
    public static void main(String[] args) {
        
        URI uri = UriBuilder.fromUri("http://localhost/").port(8080).build();
        ResourceConfig config = new ResourceConfig(GuiceFeature.class, Calc.class);
        JdkHttpServerFactory.createHttpServer(uri, config);

        //Enter押すまで待つ
        new Scanner(System.in).nextLine();

        System.exit(0);
    }
    
    //--------------------------------------------------------------------------
    //JAX-RSリソースクラス
    //--------------------------------------------------------------------------
    @Path("calc")
    public static class Calc {
        @Inject
        FormatLogic logic;
        

        //http://localhost:8080/calc?a=1&b=2
        @GET
        @Produces(MediaType.TEXT_PLAIN)
        public String add(@QueryParam("a") int a, @QueryParam("b") int b) {
//            System.out.println("calc:"+this);
            return logic.format(a, b);
        }
        
    }
    
    //--------------------------------------------------------------------------
    //GUICEのセットアップ
    //--------------------------------------------------------------------------
    public static class GuiceFeature implements Feature {
        @Override
        public boolean configure(FeatureContext context) {
            ServiceLocator locator = ServiceLocatorProvider.getServiceLocator(context);
            GuiceBridge.getGuiceBridge().initializeGuiceBridge(locator);
            final Injector injector = Guice.createInjector(new AbstractModule() {
                @Override
                protected void configure() {
                }
            });
            GuiceIntoHK2Bridge guiceBridge = locator.getService(GuiceIntoHK2Bridge.class);
            guiceBridge.bridgeGuiceInjector(injector);
            return true;
        }
    }
    
    //--------------------------------------------------------------------------
    //注入される
    //--------------------------------------------------------------------------
    @Singleton
    public static class FormatLogic{
        public String format(int a, int b){
//            System.out.println("logic:"+this);
            return String.format("%d + %d = %d", a, b, a+b);
        }
    }

}

実行

http://localhost:8080/calc?a=1&b=2

というURLブラウザで表示すると

1 + 2 = 3

と表示される。

2016-12-04

[][][]超高速に初めるJAX-RS

ソースコードは一つだけ。設定ファイルは1行追加するだけ。それですぐにJAX-RSを動かせる。

JAX-RSはわからなくても大丈夫。JavaSEなのですぐ確認できる。

GradleまたはMaven環境さえあればよいのでNetBeansに限らないけど一応NetBeansで説明していく。


Gradleまたはmavenの環境を用意する

NetBeansであればGradleはプラグインを入れる必要がある。今回はGradleでやってみる。

メニューの「ツール」−「プラグイン」から入れる。


プロジェクトの新規作成

メニューから「ファイル」−「新規プロジェクト」を選ぶ。

カテゴリで「Gradle」を選びプロジェクトは「Single Gradle Project」を選ぶ。


依存ライブラリの追加

プロジェクトツリーからBuilde Scripts/Project/build.gradleを開く。

以下の部分があるので

dependencies {
    // TODO: Add dependencies here ...
    // You can read more about how to add dependency here:
    //   http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:how_to_declare_your_dependencies
    testCompile group: 'junit', name: 'junit', version: '4.10'
}

dependencies の中に

compile "org.glassfish.jersey.containers:jersey-container-jdk-http:2.24.1"

の1行を加える。

プロジェクトのリロード

プロジェクトツリーのルートアイコンを右クリックして「Reload Project」を選ぶ。


インクラスを作る

import java.net.URI;
import java.util.Scanner;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriBuilder;

import org.glassfish.jersey.jdkhttp.JdkHttpServerFactory;
import org.glassfish.jersey.server.ResourceConfig;

public class Main {

    //サーバー起動
    public static void main(String[] args) {
        
        URI uri = UriBuilder.fromUri("http://localhost/").port(8080).build();
        ResourceConfig config = new ResourceConfig(Calc.class);
        JdkHttpServerFactory.createHttpServer(uri, config);

        //Enter押すまで待つ
        new Scanner(System.in).nextLine();

        System.exit(0);
    }

    //JAX-RSのコードをここに書く
    @Path("calc")
    public static class Calc {

        //http://localhost:8080/calc?a=1&b=2
        @GET
        @Produces(MediaType.TEXT_PLAIN)
        public int add(@QueryParam("a") int a, @QueryParam("b") int b) {
            return a + b;
        }
    }
}

サーバー起動

プロジェクトを実行する。F6でよい。


ブラウザ起動

上記のコードのコメント部分

        //http://localhost:8080/calc?a=1&b=2

ここをCTRL+クリックする。

ブラウザが起動して結果が表示される。

NetBeansでは文字列やコメントでURLぽいものがあればブラウザで開けるのでコメントで描いておくと楽。