パチスロゲーム第二弾の開発進捗状況③
2021.01.06
あけましておめでとうございます。
久々の更新となります。
昨年末は多忙でブログの更新もままならないまま約1カ月半放置してしまいましたが、パチスロゲームの開発は順調に進んでいます。

(現在開発中のゲーム画面)
 
 
 


凝りすぎるあまり公開延期となってしまいましたが、その分さらに面白く仕上がっているので、皆さん楽しみに待っていてください!

では、次回はゲームシステムについて説明していきたいと思います。
パチスロゲーム第二弾の開発進捗状況②
2020.11.22
RPG風パチスロ「パチスロクエスト~伝説への道~」の制作進捗状況は以下の通りです。

液晶演出用の画像加工(約20パターン)
・何かが空を横切る
・空に何かのオブジェクトが現れる
・地上にモンスター(小型・中型・大型)が現れる
・主人公が立ち止まる際のアクション(3パターン)
・カエル師匠のセリフ(5パターン)
など

液晶ステージを3種類用意(通常・高確・超高確)

小役の確率調整

プログラムの修正いろいろ

3択ベルのアシストシステム制作→完成

今のところはこんな感じで順調に開発が進んでいます。
特にATのシステム関連は我ながらうまく制作できたと思います。
ちなみにベルナビが6択ではなく、あえて3択にしたのは、少しでもプレイの負担を軽くするためです。
わざわざ毎回ナビ通りに押すのはさすがに面倒ですよね。
とはいえ、ちゃんとスペースキーのオートプレイにも対応させたので、結果的にはどちらでもよかったのですが。

ではまた次回に報告したいと思います。
パチスロゲーム第二弾の開発進捗状況①
2020.11.15
ようやくパチスロゲーム第二弾の開発が本格的にスタートしました!

今作は液晶演出に力を入れたRPG風パチスロです。
前兆モードでは特に演出面にメリハリがあって面白いものにしたいと考えています。
とりあえずリール関連のシステムは前作でほぼ完成しているので、開発期間は大幅に短縮できると思います。(年内完成予定)
ちなみに現在の開発進捗状況については以下の通りです。

液晶画面の制作
・主人公となる魔法少女キャラクターの歩行アニメーション作成
・キャラクターが歩いている場所の背景アニメーション作成(空と地面が別々にスクロール)

その他、システムの調整や見直しを行いました。

ではまた次回に報告したいと思います。
Rubyの基本
2020.11.08
今回はこれからRubyを勉強する人のために最も重要なポイントをいくつか紹介したいと思います。
僕なりの考え方ですが、先に大まかな仕組みや押さえるべき要点を知っているだけで理解する速さが格段に違うので、少しでも勉強の手助けになれば幸いです。
では早速。

①Rubyはオブジェクト指向の言語である
ここで重要なのがクラス・メソッド・オブジェクトの概念
クラスには複数のメソッドを定義することが可能で、そのクラスから作成されたオブジェクトはクラスに定義されているメソッドが実行できる。
製品に例えて分かりやすく説明すると
 クラスは設計図
 オブジェクトはその設計図をもとに作られた製品
 そして、その製品をメソッドで操作する・・といった流れです。

②文字列や数値もオブジェクト
文字列や数値もオブジェクトのため、それぞれの元となるクラスに定義されているメソッドが実行できる。
具体的には文字列はStringクラス、数値はNumeric(Integer、Float)クラスとなり、それぞれのクラスには文字列や数値を操作するメソッドが用意されている。

③トップレベルの考え方
Rubyプログラムを実行する基本的な流れ
クラス定義 ⇒ クラスからオブジェクトを作成 ⇒ オブジェクトのメソッドを実行
しかし、特定のクラス定義を行わずに直接メソッドだけを定義した場合は、どのクラス内からでも実行できるメソッドとして定義することができる。
さらに詳しく説明すると・・
クラス定義の外側の部分(メインプログラムの部分)はトップレベルと呼ばれ、そこで定義されたメソッドはKernelモジュールの中に追加される。
Kernelモジュールはすべてのクラスの元となるObjectクラスに読み込まれているため、トップレベルに定義されたメソッドはどのクラス内からでも呼び出すことができる。
また、メソッドを呼びたす際に呼び出し元のオブジェクト(レシーバー)を省略できるので、あたかも関数のように使用することができる。

④クラスメソッドとインスタンスメソッドの違い
クラスメソッド ⇒ 定義されたクラスに対するメソッド(クラスからオブジェクトを作成する"new"メソッドなど)
インスタンスメソッド ⇒ クラス内に定義されたメソッド(クラスから作成されたオブジェクトに対して実行するメソッド)
メソッドを実行する際の記述の仕方はそれぞれ「クラス.メソッド」「オブジェクト.メソッド」となる。

⑤変数について
Rubyにおける変数は入れ物ではなく名札であり、どこかに存在するオブジェクトに対する目印となる。
そのため他の言語のようなデータ型は存在しない。(どのようなオブジェクトに対する変数も同じ扱い)

(例)
a = "ぽんこつ"
b = a

この場合、変数aは文字列オブジェクト「ぽんこつ」の場所を指し示す名札となり、変数bは変数aと同じというわけではなく、ただ変数aと同じ場所を指し示す名札となる。
つまり、変数aが指し示す場所のオブジェクト自体を変更すれば、必然的に変数bの指し示す場所のオブジェクトも変更される。

a = "あんぽんたん" に変更した場合
変数aが指し示すオブジェクトの場所が変わるだけで、変数bが指し示す場所のオブジェクト自体は変わらないため、変数aと変数bは別々のオブジェクトを指し示すことになる。
(実行結果)
a = "あんぽんたん"
b = "ぽんこつ" となる。

【重要】ローカル変数、インスタンス変数、クラス変数、グローバル変数について
・ローカル変数とは(name)
 メソッド内で使用できるが、一度メソッドを抜けると値は消えてしまう。
・インスタンス変数とは(@name)
 オブジェクト毎に値を保存しておくために使用
 クラス内の全メソッドで共通して使用することが出来る。
 また、クラスから作成されるオブジェクト毎に固有のものとなる。
・クラス変数とは(@@name)
 クラス毎に値を保存しておくために使用
 同一クラスから作成されるオブジェクト全体で共通して使用することが出来る。
・グローバル変数とは($name)
 全てのクラスに共通して使用できる変数
 下手なプログラミングほど多用する傾向にある?(そう、僕みたいに・・)

あと、Rubyの真骨頂であるWEBアプリ開発などデータベースを活用した本格的なプログラミングを目指している方は配列とハッシュを極めるとよいです。

ちなみに当サイトのパチスロゲームでは、基礎知識のみを活用してプログラミングされています。
具体的には以下の通りです。
・各種データの登録はハッシュ、フラグやリール配列、画像などの管理は配列を使用
・クラスは大まかに3つに分けて定義
 ①メインループ
  初期設定(フラグ各種、サウンド関連、ゲームモードのクラス定義を含む)、オブジェクトの作成やメソッドの実行など
 ②リール関連クラス
  リールの動きなど共通するメソッドは親クラスに、第1リール・第2リール・第3リール固有のメソッドと各種ステータス(インスタンス変数)は子クラスに定義し、クラスを継承
 ③画面レイアウト関連クラス
  画面全体のデザインや各種パーツ、演出面など描画関連はすべてここに定義

(よく使う便利な記述例)
条件演算子(三項演算子)
 条件式 ? 真の時の値 : 偽の時の値
式修飾子(if修飾子)
 真の時に実行する式 if 条件式

とまぁザッとこんな感じでしょうか。
ではまた次回。
ゲーム制作とDXRubyについて
2020.11.01
Rubyの基本を一通り勉強したあと、WEBアプリケーションを制作するため「Ruby on Rails」を勉強していましたが途中で飽きてしまい、気晴らしに何かゲームを作ろうとライブラリを探していたところ「DXRuby」という便利な2Dゲーム用ライブラリを発見しました。
DXRubyはゲーム制作に特化した非常に便利なライブラリで、主な特徴は以下の通りとなります。
①ライブラリ自体はC言語で直接DirectXを制御するように書かれているため、動作が非常に高速(これが一番!)
②簡潔な構成のため、初心者でも分かりやすい
③ループ(フレーム)の概念があり、描画は1ループごとにまとめて行われる(基本設定では60fps)
④スプライトや回転・拡大・縮小といったゲーム制作には欠かせない機能が豊富かつ高速描画が可能なため、2Dアクションゲームやシューティングゲームが容易に作れる

最初はRailsを使用することが目的だったため64bit版Rubyをインストールしていましたが、DXRubyは32bit版でしか動作しないため、仕方なく再度インストールしなおしました。
ちなみにパチスロゲームの要となるリールの動きはDXRubyの描画系メソッド「Window.draw_tile」を使用しています。描画速度が速いためリールの回転はスムーズかつコードも短くて簡潔。あまりにも簡単すぎて感動すら覚えました。
他にもDXRubyを使えば様々なことが簡単に行えます。

今時3Dゲームを作ろうと思えば誰でも簡単に作れる時代(Unityなど)
そんな中、わざわざ古臭い2Dゲームを作るために一からプログラミングしようなんて猛者はあまりいないかもしれませんが、Rubyの基本しか知らなくてもDXRubyを使えばこんな簡単にゲームが作れるんだということ少しでも多くの方に知ってもらえると嬉しいです。

ではまた次回。
Rubyの魅力について
2020.10.31
僕がなぜRubyを選んだのか?
その理由は以下の通りです

①習得が容易
Rubyは楽しみながらプログラミングすることをコンセプトの一つに掲げています。
コードの記述が少なく分かりやすいうえ、その都度プログラムを実行していくインタプリタ方式のため結果を確認しやすく、初心者には最適な言語となっています。

②なんでも出来て万能
Rubyでは出来ないことがないと言っても過言ではないくらい汎用性に長けています。
webアプリやゲーム開発、スマホアプリ、SNS、ブログ、ショッピングサイト、スクレイピング、機械学習など出来ることは非常に多くとても便利です。

③ほとんどのサーバーがRubyに対応
僕の場合、月額300円程度の格安レンタルサーバーを使用しているため、ワードプレスなどで利用できるデータベースは1つのみです。
そんな中、データベースを必要としないCGIプログラムはとても便利で、大半のサーバーがRubyをサポートしています。
Rubyを使用すればCGIのみで動作する掲示板やブログ、ランキングなど自由に作り放題です。

④現在も多くの開発現場でRubyが使用されている
習得が比較的容易なうえ出来ることが多く実用的。Rubyエンジニアの求人も多く、今からでも習得しておいて損はありません。(僕も最近になってようやく勉強を始めました)
ちなみにAI・機械学習の分野では真っ先にPythonと思われがちですが、当然Rubyでもできます。また、RubyとPythonでは共通点が多く似ていることから、まずはRubyを習得し、その後Pythonへ移行すると割と簡単に習得できると思います。(もちろん、逆でもOK)

⑤便利なライブラリ、フレームワークが豊富
ゲーム制作なら「DXRuby」や「GOSU」、WEBアプリ開発なら「Ruby on Rails」、その他にも便利なライブラリやフレームワークが沢山あります。

他にも日本語ドキュメントが豊富でわからないことはすぐに調べられることが人気の言語として定着していった理由の一つだと思います。
僕もネット上に存在する数々のドキュメントを参考にしながら勉強してきました。おかげで学習コストは0です。(じつはまだ参考書すら買っていません。立ち読みはしましたが・・)

では今回はここまで。
次回はゲーム制作とDXRubyについて語りたいと思います。
昔のプログラミングについて
2020.10.26
僕が中学生だった頃に初めて触れたパソコンの基本ソフト(OS)はDOSと呼ばれるコマンド入力方式で、Windowsのような視覚・直感的に操作できるGUIはまだ世の中に浸透していませんでした。
そして当時のプログラミング言語の主流はBASIC。命令をその都度コンピュータが理解できる言語(マシン語)に翻訳しながら実行するインタプリタ方式のため処理速度が遅く、さらに当時のCPUの動作周波数が16MHz程度だったことから、下手なプログラミングだとまともに動かない程シビアな世界でした。
でもそれが逆にプログラマーの心を熱くさせ、いかにして処理速度をアップさせるか技術力の高さを競い合うようになりました。
某パソコン雑誌の「1行プログラミング」はその名の通り短いプログラムでどんなゲームが作れるのかを投稿する企画でゲーム自体は大したことありませんでしたが、そこにはあらゆる技術力が凝縮されていたように思います。
そんな意味では「BASIC」は初心者プログラマーを著しく成長させてくれる本当に素晴らしい言語でした。
ちなみに僕が高校生の頃に作ったゲームは迷路脱出ゲーム、ブラックジャック、落ち物パズル、RPG、シューティング、ドット絵キャラクター作成ツールなど様々。

その後、なんとなくマシン語(アセンブリ言語)を勉強し習得。同時にハードウエアについての知識も身につけました。(CPUはZ80)
高校生でマシン語を使うなんて・・今じゃとても考えられん!!
さらにアセンブラ(アセンブリ言語で記述されたプログラムをマシン語にコンパイルするコンパイラ)を持っていなかったため、マシンコード表を見ながら手動でアセンブルしてました。(ハンドアセンブル)
もうマニアックを通り越してキチガイですね。
そしてなんとかゲームの描画部分をマシン語で記述し残りをBASICにしたところ、ゲーム全体の高速化に見事成功! そしてその圧倒的速さに驚愕!!(I/Oデバイス関連はBIOSを使用)
やっぱりマシン語って凄いし面白い!楽しい!! というのが当時イッちゃってた僕の感想です。

[MSXというホビーパソコン、X68000というモンスターパソコンの出会い]
MSXはCPUがZ80系(8bit)だったので使いやすかったです。
X68000はCPUの性能が16bitなのに32bit並のモンスター級!
その理由については複雑なハードウエアを勉強して理解できました。
今となってはかなり記憶が曖昧ですが、確かアドレスバスが32bitだったような気がします。

そんなどっぷりパソコン生活も高校卒業と同時に終了し、次第にパソコンから離れていくようになります。
(その後の学生生活では別の意味のキーボードにハマってました)

そして社会人6年目(20代後半)になった頃、最新型のキーボード(楽器)を買うかパソコンを買うかで悩んだ結果、友人のすすめもあって初めてWindowsパソコンを購入。(エ〇画像の誘惑に負けました)
その時に買ったパソコンはバイオノート。値段はなんと40万円! たっ、高すぎる!! (しかも内蔵ハードディスクは1年に1回壊れるし・・)
同時にWindowsとインターネットの仕組みを勉強し、すぐにホームページを公開!
その後はFLASH(アクションスクリプト2)を勉強し、さらにjavascriptやCGIプログラムをカスタマイズしながらインタラクティブなホームページを次々に開設。
また、FLASHゲームや素材を作成し無料配布も行ってました。
そんなこんなで今のゴリゴリのパソコン生活が再び始まったわけですね。

ちなみに僕の勉強法はすべて独学となります。
学生の頃は参考書を買うお金もなかったので、ほとんど本屋で立ち読みしながら習得しました。

しかし、こうやって過去を振り返ってみると、なんだかパソコン漬けの毎日に思えてきますが、実際は20~30代の頃は家にいることが少なく、ほとんど遊びまわってました。
どちらかというと、パソコンより飲み会・カラオケが大好き、コンパ大好き、女大好き(あっ)でしたね。

では次回はRubyの魅力について語りたいと思います。
パソコンのスキルについて
2020.10.21
パソコン関連スキルについて履歴書風に自己紹介をすると、僕の生態は大体こんな感じです。

▼PCスキルについて
・タッチタイピング(イータイピング:ランクB)
・学生の頃にBASICによるゲーム開発経験あり。(中3~高校までの4年間)
 また、アセンブリ言語、C言語等のプログラミング経験もあります。
 (当時、マシン語の勉強に伴いハードウェアの知識も身につけました)
・エクセルやワードについては初級レベルです。(ただし実務では20年以上使ってます)
・ラベルマイティにてPOP制作(実務経験5年以上)

▼インターネットスキルについて
 インターネットの仕組みを独学で学び、約20年前からホームページの制作・運営を行っております。
 現在は独自ドメインを取得し、レンタルサーバーにて10個以上のHP・ブログを運営中。

【ホームページの一例】
・記事内に指定したキーワードをもとに動画を自動表示させるニュースサイト(ワードプレスにて制作)
・ユーザー登録型の無料ゲーム、無料動画紹介サイト(無料HPテンプレートにCGIスクリプトを組み込みカスタマイズ)
 同時にFLASHアクションスクリプト2にて制作したFLASHゲームや素材を無料配布
・アフィリエイト支援サイト(無料のレスポンシブHPテンプレートをカスタマイズ)
他、多数制作

<実績について>
・ホームページビルダーや無料HPテンプレートによるレスポンシブデザインのホームページ、フルFLASHホームページの制作
・ムーバブルタイプ、ワードプレスの利用、CGIのカスタマイズ
・FLASHにてゲームや素材を作成し、無料配布
 また、友人の結婚式二次会で使用する映像やゲーム等もFLASHにて制作しました。
・グーグルアドセンス等のリスティング広告やASP広告によるアフィリエイト収入(全盛期で約20万円/月)

<フロントエンドスキル>
 HTML・CSSのコーディング、FLASHアクションスクリプト2のプログラミングなど

<サーバーサイドについて>
 Rubyの基本は習得済み
 現在ではライブラリ(DXRuby)を活用してWindowアプリ(ゲーム)を制作中

・・とまぁザッとこんな感じです。

で、実際に今どんな仕事をしているかと言うと、実はパソコンとは全く無縁の肉体労働をしています。しかも超がつくほどのブラック!!
毎日10時間以上拘束されて、休憩もほとんどなし!(基本、食事休憩の1時間のみ)
祝日はおろか、ゴールデンウイーク、お盆、年末年始の休みも一切なし!
完全週休2日制となっているが、月の出勤日数が22日に満たない場合は勝手に減給されます。公休のはずなのに・・
そして何時間残業しても給与は変わらず! 年末年始は繁忙期のため昼12時~朝3時までほとんど休憩なしで働いたが、その月の給与はたったの手取り16万円!! もちろん、今の会社にボーナスなんてしろものはありません。あるのはくろもの(ブラック)ばかりです。
ではなぜ働き続けているのかというと、それは唯一のメリットである「健康」のためです。
この会社で働いてからなんと10kg以上も痩せました。体脂肪率も10%台前半となり、当時脂肪肝の疑いがあった肝臓の数値も正常に戻りました。(健康診断では全ての数値が模範的数値に!)
しかし、そろそろ限界です。会社で体を使い、家では頭を使うことで健康を維持しようと考えましたが、このまま働き続けていると将来確実に破綻します。経済的に持ちません。なんとかせねば・・

と話は大きくそれましたが、そろそろ本題のプログラミングについて。
今日はいろいろと書き疲れたので、この続きはまた次回にしたいと思います。
では。
ブログを設置しました
2020.10.18
簡易ブログを新設しました。
ここでは更新情報の詳細やプログラミング・開発について、また趣味やコレクション、日常のつぶやきなどをゆる~く語っていきたいと思います。

- CafeLog -