投稿

ラベル(TIC-80)が付いた投稿を表示しています

オリジナルのゲーム機で遊ぼう!「GameGo」プログラマー養成ギブス

イメージ
  現代の社会は、コンピュータが無くては一日たりとも生きていけないような複雑な社会システムが構築されています。 電気・水道・ガスといった生命に直結インフラや、交通、通信、金融、製造、運輸、医療、等々、もし一つでもシステムダウンすれば、社会全体が麻痺して住民はパニックになり、まとも生活は送れなくなります。 そんな社会システムを維持・管理・発展させていくためにはコンピュータを操れるプログラマーが必要で、そのための人材育成が課題になっています。 日本では2020年から プログラミング教育が小学校で必修化 され学習指導要領に組み込まれています。また中学校でもプログラミング教育は義務化されています。 もちろん全員がプログラマーになる必要はありません。 街にパン屋が必要なように、プログラマーも必要だということです。w マサチューセッツ工科大学といえばノーベル賞受賞者を多数輩出しているアメリカの名門校ですが、そのMITが共同開発を行っているプロジェクトで 「Scratch」 という教育プログラミング言語のサービスがあります。 システム業界に従事している端くれとして、将来の子供たちの育成に役立てばと思いプロジェクトに参加して一時活動を行っていました。今は距離を置いていますが、時々覗きには行っています。  https://ttripper.blogspot.com/search/label/Scratch 私のサイトでは、子供たちに斬新な着眼点と刺激を与えるようなプロジェクトを提供しています。各プロジェクトはブラウザで直接実行できるので試してみてください。 https://scratch.mit.edu/users/Time_Tripper/   ここで使われているコンピュータ言語は小さな子供さんにもわかりやすいように、言語をブロックに置き換えて、それを組み合わせることでプログラムを作っていく仕組みになっています。 コンピュータの基礎を理解するには十分な環境だと思います。 このような取り組みは他にも色々と実施されていて、今では大きなビジネスになっています。 マイクロソフトでは 「MakeCode」 というプロジェクトが運営されています。 Microsoft MakeCode コンピューター サイエンス教育 h...

古いパソコンを捨てる前に「CloudReady」、Lenovo G560で動かしてみた。

イメージ
ようやく年賀状ワークも終了して、年末大掃除も終わったので、暇つぶしに 「CloudReady」 を触ってみました。 Neverware CloudReady https://www.neverware.com/ トップページに 「Neverware is now part of Google」 と誇らしく記載されています。つい最近、NeverwareはGoogleに回収されて、CloudReadyはGoogleの正式なサービスになりました。 CloudReadyはGoogleの 「Chromium OS」 に基づいたOSで、古くてスペックの低いパソコンでも起動できる軽量のOSです。Windowsでは遅くて使い物にならないパソコンでも、CloudReadyならサクサク動く可能性があります。 CloudReady (Home Edition)は無料で配布されていて、 8GB以上のUSBメモリ さえあれば簡単に体験できます。年末の大掃除でパソコンを捨てる前に、是非一度お試しください。 【セットアップ方法】 まず、下記のページの「DOWNLOAD USB MAKER」から 「cloudready-usb-maker.exe」 をダウンロードします。 もちろん無料です。 https://www.neverware.com/freedownload#home-edition-install 次に8GB以上のUSBメモリを用意してUSBポートに挿します。 今回、手元に8GB以上のUSBメモリが無かったので、16GBのマイクロSDカードが余っていのを使いました。 これでもOK!です。 ダウンロードした 「cloudready-usb-maker.exe」 を起動して、メディアを選択するとダウンロードが始まりOSが生成されます。約20分くらいかかると思います。 あとは処理が終了するまで放置するだけです。 処理が終了したら 「 Finish 」 を押して終了してください。 ※ Windows がメディアをフォーマットするか?訊いてくるので「キャンセル」してください。メモリカードはChromium OSとしてフォーマットされるので、Windpwsで使う場合は再フォーマットが必要です。 これでメディアが完成したので、あとは古いパソコンを用意してUSBに挿して起動します。 今回テストに使った...

【TIC-80】新型コロナウイルスのシミュレーションを作ってみた。 COVID-19 infection simulation

イメージ
新型コロナウイルス対策として日本でも一部の地域に非常事態宣言が出されて外出自粛や経済活動の制限がされています。 対策が長期化するなかで終息のめどが立たず、あちこちから苛立ちも聞こえてきます。 コロナで死ぬか?経済で死ぬか?まさに瀬戸際の選択が困難になりつつあります。 心配するのは「このまま自粛して大人しくしていたらコロナは自然に消滅するのか?」という疑問です。 気になるのは武漢のモデルです。 一時はあれほど爆発的に感染が広がっていたのに、今では収束宣言して街の閉鎖も解除されています。実態はどうなのかわかりませんが、少なくても以前のような状態ではなさそうです。現時点では新型コロナウイルスに対する有効なワクチンや薬もないのにどうやって収束したのか?興味深いですよね。 このカラクリには「ウイルス」の性質があるんじゃないか思っています。  地球上の生物であれば、生きている純粋な目的は子孫繁栄になります。 人の生活も、付き詰めると繁殖活動が基本になります。 命のないところに経済も文明もありませんからね。 ウイルスは自己増殖ができないので生物ではないと言われています。 しかし遺伝子は持っているので、繁殖する野望は持ってるんじゃないか?と思います。 今回の新型コロナウイルスは、宿主である人がいないと繁殖はできません。 ある宿主で爆発的に増殖すると、やがてその宿主は死んでしまいます。 結果的に自分達も死んでしまうので本来はそれを望まないはずです。 だからその前に宿主から離れて別の宿主を探すのですが、それが飛沫感染です。 感染者の呼吸や咳などの唾液に紛れ込んで空中に飛び出してしばらく浮遊します。 飛沫感染は空気感染とは違いますが、空気ダストなどに付着して長時間空中を漂うので、狭い空間でウイルス濃度が高ければ短時間で感染してしまいます。 三密「密閉、密集、密接」の中で、特に感染者と空間を共有しないことが大切です。 常に空気が流れている屋外なら、余程のことがない限り感染する確率が低いと考えられます。 今回の新型コロナウイルスは、感染しても8割は重症化せず、風邪程度の症状で自然治癒すると言われています。問題は2割の長期化・重症化する感染者で、この感染者からは他人への感染率も高くなります。つまりウイルスが十分繁殖することで...

レトロゲーム開発環境のTIC-80は流行っているのか?

イメージ
最近はSUPやスケボーばかり乗ってる危ないオッチャンに思われていると思いますが、本業はシステム屋でして、仕事ではデスクに縛りつけられている反動で休日は弾け飛んでいるわけです。w もちろん、もう仕事でプログラムを作る年ではありませんが、現場を離れてもプログラミング感覚は大切だと思っているので、リハビリとして時々レトロな開発環境で遊んでいます。 日本では2020年度から小学校でプログラミング教育が義務化されますが、今更かもしれません。やらないよりは、やったほうがマシですが「時すでに遅すぎた」感もあります。 40年前、私が学生の頃にパソコンが一般化しだしてハードからソフトへの大きな変革が起こりました。この業界に進んだのもそんな波に乗ったためです。 コンピュータの世界で使われる言語は、日本語や英語、フランス語、ドイツ語といった人が使う言語と同じように色々な言葉があります。それぞれの言葉で使う単語やフレーズも違うので、システム屋になるにはある程度バイリンガルに話せる能力が必要になります。 もちろん全てのプログラムは計算式なので、ベースには数学知識が必須となります。 簡単にはプログラマーとは計算式で小説を書くようなお仕事になります。 こういうと難しく思えるかもしれませんが、使う単語は知れてますので大したことはありません。特に一般事務系のシステムは難しい計算式も必要ないので簡単なものです。 もちろん大規模な金融機関システムやインフラ系の仕組みは別次元のノウハウやスキルが必要になってきます。 単純なショートプログラムで一番厄介なのはゲームプログラムじゃないかと思います。 最近のゲームは3D映像が当たり前で、高性能なグラボをブン回すゲームが多くなっていますが、膨大な量の物理計算を60分の1秒間で済ませなくてはならないので、複雑な計算式を最適化したアルゴリズムに変換する数学力と天才的な発想力が必要な分野になります。四則計算だけの会計処理をするシステムとは雲泥の差で、ゲームプログラマーにはかなり高度なスキルが求められます。 プログラミングの義務教育が始まることもあったので、入門的なプログラム環境を色々とウォッチしてますが、MITのScratchはかなり有望なようです。ただこの環境はプログラムの概念を捉えるだけで、一般的なシステムのプログラムスキルに...

ゾンビがやってくる。TIC-80レトロゲームの作り方

イメージ
PocketCHIPでPICO-8に出会ってから、すっかりレトロゲームファンになってしまいました。レトロといっても中身は最新式ですが、その削ぎ落とされた世界観は芸術性も高く、今流のCGメインのゲームとは一線を画しています。 PICO-8 https://www.lexaloffle.com/pico-8.php 「ゲームの要素とは何か?」よく議論されるテーマですが、どんなゲームでも物理的に捉えると中身は実にシンプルです。 コンピュータゲームは目や耳で仮想空間で起こっている現象を捉えて、それを解釈した上で戦略を練り、適切なタイミングにアナログ的なインフェースであるボタンやマウスでコンピュータに電気的信号の答えを返します。 この作業を時間軸に沿って繰り返しますが、そのゲームが2次元であっても3次元あっても、どれだけ複雑なゲームでも実は一つのウェーブの電気信号でしかなく、それをコンピュータが計算処理しているだけにすぎません。ゲームプログラムはそれを処理する長い1本の計算式なのです。 私の場合、そんなゲームで遊ぶことより、そのゲームをプログラムすることが楽しみで、いかに効率的な計算式を考え出して、ファンタジーな世界を表現するかにワクワクするのです。コンピュータゲームは計算式だけで作られた架空の世界ですが、その世界をゼロから作り出す作業はエキサイティングで楽しいものです。 今時のAIルーチンに丸投げするようなプログラムには何の魅力も感じません。 TIC-80はPICO-8のクローンで、同じLua言語でプログラムしますが、若干動作環境が違います。PICO-8は128*128のユニークなスクエア画面ですが、TIC-80は240*136の一般的な横長のアスペクトでフォントなど見やすくなっています。 パレットカラーはどちらも16色で、色の組み合わせはPICO-8のほうが艶やかで好きですが、TIC-80のパレットは簡単に変更ができるので問題はありません。そんなことで最近はPICO-8よりTIC-80をよく使っています。 もう一つ、PICO-8は有料ですがTIC-80は無料で利用できます。 ここが最大の利点です。w TIC-80 https://tic.computer/ 前置きが長くなりましたが、現在いくつかのゲームを並行的に作っていま...

本格的なオープンワールド系ゲームの開発環境がたったの200円!「Garry's Mod」

イメージ
  先日、 香港旅行 の時に実はもう一つポチりました。 「Garry's Mod」(ギャリーズモッド)という不思議なゲーム?です。 Garry's Mod 2011 Trailer https://youtu.be/jDchc5Ww_i8 Garry's Mod https://store.steampowered.com/app/4000/Garrys_Mod/ このゲームは2006年にリリースされて12年ほど経っていますが、いまだに人気があるようです。お値段はサマーセール中で75%OFFの245円(税込)でした。 インストール後、初めて起動すると何もない野原に放り出されました。 手探りで動かしてみると視点の移動はできたのですが、基地らしいもの以外他に何もありません。これはクソゲーを掴んだか?と思ったのですが、ネットで色々と調べていく内に遊び方が分かってきました。 Garry's Mod 公式 Wiki http://wiki.garrysmod.com/page/Main_Page このソフトはゲームを作るためのツールのようなもので、様々なゲームの世界をほぼゼロから作ることができる物理系サンドボックスになっています。スタートもなければ終わりもないので正確にはゲームではなくエディターが正しいジャンルかもしれませんが、まさに「WASTED」な世界です。 この仮想空間では簡単な物理法則が適用されていて、重力(引力)で物が落ちたり、摩擦で転がったり、衝撃で壊れたりします。そんな世界に用意されたオブジェクトやNPCという簡単なAIを持った住民も配置して自分の世界を作っていきます。 椅子やテーブルといったオブジェクトから自動車や飛行機、ボートなどの乗り物や、レゴブロックのような基礎部品も沢山用意されていて、それを組み合わせることで家を作ったり車を作ったりすることができます。 部品には歯車やモーターからジェットエンジンまであることで、静物オブジェクトだけでなく動的なオブジェクトも作れます。 Gmod - Testing with gears https://youtu.be/8TGBKwVokTw インストール時点で用意されてる部品はあくまでもお試し程度の...

水と砂のアルゴリズム TIC-80

イメージ
  水と砂の違いは何でしょうか? 同じ粒子ですが、簡単には粒子の大きさと摩擦抵抗が違います。 このプログラムでは、キャラクタージェネレーターで適当に作った敵を撃つと水や砂の粒子に変化します。 プログラム的にはキャタクターを管理するパーティクルとビット粒子を処理するプレーンを別管理しています。 処理は簡単で、当たり判定で敵と弾がヒットした場合、敵のスプライトのメモリを粒子メモリに転送しているだけです。 粒子の移動処理は、砂なら真下、右斜め下、左斜め下をチェックして空白ならビットを移動します。水の場合はさらに真横にも移動チェックするだけです。応用すると煙や炎といった他の動きも処理できます。 パーティクルの粒子処理としてよくある古典的なアルゴリズムですが、ゲームの映像効果に利用すると面白いかもしれません。

ファミコンゲームの作り方「X6 Game Player」

イメージ
  アマゾンで入手したPSPっぽい謎のエミュレータの第三話になります。 【第一話】謎のエミュレータを入手「X6 Game Player」 http://ttripper.blogspot.jp/2018/05/x6-game-player.html 【第二話】謎のエミュレータをハックする?「X6 Game Player」 http://ttripper.blogspot.jp/2018/05/x6-game-player_17.html 前回はOSレベルからハックして遊ぶ方法を模索しましたが、OSが「eCos」というこで馴染みがなく、ここで無駄に人生の貴重な時間を浪費することもないか?ということで方向を転換しました。 わざわざネイティブのアプリに拘らなくても、このX6は様々なゲーム機(NES, SNES, GB、GBA, SEGA GENESIS)をエミュレートして実行できます。つまりそのソフトを自作すればX6を自由に操ることができるわけです。 結局やりたいことはそこですから、OSをハックする話は忘れましょう。w 最近はPICO-8やTIC-80で昔懐かしい8ビットのレトロゲームを作って遊んでいますが、その原点はやはり任天堂のファミコンでしょう。 PICO-8 Fantasy Console - Lexaloffle https://www.lexaloffle.com/pico-8.php TIC-80 tiny computer https://tic.computer/ ファミコンのソフトは個人でも自作することができます。 ただソフト開発にはそれなりの知識と環境を整える必要があります。 PICO-8やTIC-80のようにお手軽に作れるわけではありません。 下記のサイトではアセンブラでファミコンソフトを作成する方法を整理されています。 ギコ猫でもわかるファミコンプログラミング http://gikofami.fc2web.com/ 紹介されているコンパイラー「NESASM」は32ビット版なので、Windows7などの64ビット版はこちらにあります。 64ビット版「NESASM」 http://www.2a03.jp/~minachun/nesasm/nesasm_x86.html...

PocketCHIPにキーボードを貼り付ける

イメージ
そろそろPocketC.H.I.P.の本家の動きが鈍くなってきています。 PocketC.H.I.P. https://getchip.com/pages/pocketchip 最近はブログやTwitterも静かですし、ストアも閉店してサイト内のリンク切れも目立ってきました。ベンチャーにありがちなことですが、そろそろ終焉が近いかもしれません。今の内に拾える情報は掻き集めておいた方がいいかもしれませんね。 PocketC.H.I.P.の売りだったPICO-8も本家がバージョンアップしているので、出荷状態のままだとほとんど動かなくなっています。パッケージのバージョンアップをしておきましょう。これでPICO-8のバージョンは最新の「v0.1.11g」に上がります。 sudo apt-get update sudo apt-get upgrade ついでに「RetroArch」も入れてみました。 もっさりしてますが何とか動きます。 RetroArch http://www.retroarch.com/ いずれにしてもキーボードがダメなのでまともに遊べないと思います。 directinput対応のUSBゲームパットなら認識するようですが、お高いです。 とにかく直径6mmくらいのボタンを貼り付ければいいのです。 ホットボンドを輪切りにして両面テープで貼り付けてみました。 たったこれだけで操作性が全然よくなります。 もしお持ちならお試しください。 もう一つのファンタジーコンソール「TIC-80」も入れておきましょう。 下記からPocketCHIP用の「tic80_chip_0.60.3.tar.gz」をダウンロードします。 TIC-80 https://tic.computer/create ホームフォルダーにコピーしてアンパックします。 tar -xzvf tic80_chip_0.60.3.tar.gz インストール無し「 ./tic80 」で実行できます。 起動後コンソールで「surf」と入力するとsurfモードで実行できます。 キーボード配列が厳しいです。

スムーススクロールするインフィニティーな世界 TIC-80

イメージ
やってみたかったのは無限にスムーススクロールするインフィニティーな世界です。 マップは「パーリンノイズ」という計算式で、四方どの方向にも地理的に不変的なマップを無限に生成します。 ただこれは簡単なテストプログラムなので、ゲームとしては成立していません。 サンプルとして適当な当たり判定を付けていますので、シューティングゲームのベースして使えるか?と思います。 カーソルキーで移動と「Z」「X」キーでミサイルを発射します。 どこまで飛べるか試してみてください。w TIC-80 Drone Attack #TIC80 https://tic.computer/play?cart=514 ただしブラウザ版では処理落ちが激しく正常に動作しません。 ダウンロードしてからローカルで実行してください。

TIC-80 テクスチャーマッピングの例題

イメージ
まだ、ひっそりとTIC-80をやってます。 TIC-80 Rubber Texture Mapping #TIC80 https://tic.computer/play?cart=509 「textri」を使ったテクスチャーマッピングの例題です。 マウスでドラッグすると画像がグニャグニャに動きます。 元画像は0x4000~のスプライト領域に貼ってますが、 どうも関数の動きがイマイチです?・・・ lua言語を勉強しませんか? TIC-80、日本でやってる人ほぼゼロかも? チャレンジャー求む! ============================================ 以下ソースコードです。 ============================================ -- title: Rubber -- author: Time Tripper -- desc: Rubber Texture Mapping -- script: lua pic_data={ "000000 : 【省略】 : 0000000" } pal={ "000000", "070707", "0E0E0E", "151515", "1C1C1C", "232323", "2A2A2A", "313131", "383838", "3F3F3F", "464646", "4D4D4D", "545454", "5B5B5B", "626262", "696969" } function pallet() i=0x3FC0 for y=1,16 do for x=1,6,2 do poke(i,tonumber(string.sub(pal[y],x,x+1),16)) i=i+1 end end end...

キャラクタージェネレーター搭載! 一期一会なシューティングゲーム TIC-80

イメージ
  キャラクタージェネレーターを搭載したシューティングゲームを作ってみました。 Character Generator Shooting https://tic.computer/play?cart=451 キャラクタージェネレーターとは、キャラクターのデザインを乱数を用いてプログラムで自動作成するものです。ポケモンのキャラクターは約800種類ほどあるようですが、このプログラムを使えば天文学的な数のキャラクターを無造作に作り出させます。 今回作成するキャラクターは8×8ドットのサイズで、最大4色のカラーでデザインします。自動でデザインする仕組みは単純で、左右対称の相似性の形にドット色を配列することでそれっぽい?キャラクターを作ります。 例えばこんな感じです。 よく似たようなデザインもありますが、中には人がデザインしたような意味ありげ?なものも見られます。 実際のプログラムの仕組みはこんな感じです。 1.まず16色から4色を選択する。 TIC-80のパレット数は16色ですが、その中から4色を選択して使用します。 全て同じ色を選択してもOKなので選択される組み合わは「16*16*16*16=65536」パターンになります。この時、通過色(OFF)の0番のパレットカラーも含まれます。 2.選んだ4色で4ドットの配列色を作る。 色を決める時に配色するかどうかのON/OFFも合わせて選択します。 OFFは通過色の0番のパレットカラーに置き換えるので「4*2*4*2*4*2*4*2=4096」パターンになります。 3.4ドット配列を8組作る。 左の4×8パターンを作り、鏡面転写することで右のパターンを作成します。 つまりランダムに作られるキャラクターの種類は「65536*4096*4096*4096*4096*4096*4096*4096*4096=5.1923E+33」パターンになります。 おそらく、死ぬまでゲームを続けても二度と同じデザインのキャラクターに巡り合うことは無いと思います。そういう意味で一期一会なシューティングゲームになっています。 プログラム的にはもう一つ、キャラクターを回転したり拡大したりする独自のスプライト機能を追加しています。TIC-80のAPI「textri」を利用していますが、あ...