Skip to content

A PLAY EXPERIENCE MAKER'S WORK LOG FOR FUTURE SELF©2001 – 2023 Kyle Li 李肅綱 All Rights Reserved.

Category: Embodiment

Bubblemancer + Touch

Posted on October 2, 2019February 9, 2020 by admin

After successfully getting the custom Bubblemancer controller (v2) to work on Oculus Quest through a type C cable, I am now considering making a mount to combine the custom controller and Oculus Touch. The goal is to create a visual reference of the controller in the VR view based on the position of the Touch. With the current build, it has proven through playtesting that it is difficult to use the controller without seeing a visual reference in the VR view.

To work with the limited void spaces, first I need to find out how the Touch controllers are being tracked by the headset. The placement of the IR LEDs on Quest’s controller (Touch 2.0) is similar to those on CV1’s (Touch 1.0) – there are no IR LEDs inside of the ring.

BAD VR
Rift CV1 Touch 1.0 Original Clip: http://imgur.com/ryU6OPr

Tried a few different configurations.

Decided to make a rig in the middle and offset the Bubblemancer controller downwards so it doesn’t block the IR LEDs. I tried to put the wind sensor through the emitting ring for a smaller form factor but worried the tube shield will block LEDs. Also doing so puts the drum right in front of the Touch controller handle, it is not comfortable to hold the controller.

KHR-3HV Front Cowl Reimagined

Posted on July 11, 2019July 12, 2019 by admin

I purchased a KHR-3HV (black edition) Humanoid robot from Kondo in 2011. At the end of that year, I saw Gundam Head Collection No.1 toys came out in Akihabara and they seemed to be the perfect size for my KHR-3HV. The collection had been out for a few months, so I bought the RGE-B790CW on spot first, and slowly looked for others when I was in Japan. With a little modification of the original KHR-3HV headpiece, these Gundam heads fit nicely on it as if they were made for my KHR-3HV.

Gundam Head Collection Vol.1, 2011

The Gundam head + KHR-3HV in a video I uploaded in 2012.

Processing + KHR-3HV

Recently, I discovered that Kondo has released many design diagrams including parts for KHR-3HV. One of the parts I wanted to custom the most is the chest plate – the front cowl as Kondo calls it.

https://kondo-robot.com/archives/faq_category/diemension
https://kondo-robot.com/faq/khr-3hv-frontcowl-diagram

Inspired by Gundam RX-78, made a quick mock-up on Tinkercad.

My brother brought a Phrozen 3D printer home for me to use. Learning to use a new 3D printer is like taming a wild beast, especially this is an LCD resin based printer which I had never worked with before. A few notes from my brother (the master) to me:

  • Use ChiTuBox for calculating supports (.stl), and Asiga for slicing (.slc).
  • Avoid horizontal lines at all cause, ones that are parallel to the print plate
  • Set thickness to be 0.05mm in Asiga because it has to match the resin used
  • send the .slc to the printer

Since I have a lot of straight lines in my designs, no matter how I tilted the model in ChiTuBox, I would have lines that are parallel to the plate. Therefore, there were warping at some of the edges. I think the resin based printers cares more about the interior structure than filament printers. The warping could also be that I didn’t scrap the model off right after it was done. I guess I will find out when I print more. The print took about 8.5 hours (506 mins) which is much longer than printing the same model on a PLA printer. However, the detail is definitely superior @ 0.05mm with Phrozen. I miss my long-time partner, my well-tamed beast, Makerbot.

This was a great first step, Tinkercad skill levelled up!

MR Mechanic Study: FC ドラゴンボール Card Game Mechanic

Posted on March 26, 2019June 26, 2019 by admin

I played ドラゴンボール 大魔王復活 when I was a kid and I was impressed by the card battle mechanic in the game. It was a brilliant idea to bring some strategic thinkings into dice rolling which is usually just pure randomness. I didn’t fully understand how it works because it felt like there were more than just comparing numbers on cards. The mechanic evolved over 6 Dragonball games on Famicom and then was carried over to Super Famicom. I missed old animes that were made into RPG games back in the days such as Saint Seiya, Jo Jo’s Bizzard Journey, and Dragonball. All of them had become fighting games in their recent video game adaptations. Looking back to those old RPG games, I really appreciated all the efforts went into telling a complex story with so few pixels.

ドラゴンボール 大魔王復活
wikipedia

128KB PRG + 128KB CHR
Card Design

カード

普段プレイヤーは5枚カードを持っており、このカードを使ってゲームを進めることとなる。各カードの上にはドラゴンボールをモチーフにした星、中央には戦闘時の攻撃手段、下には漢数字が書かれている。

  • 星(1〜7)- フィールド上では移動力で、この星の数だけ悟空が移動できる。バトル時は攻撃権兼攻撃力を意味する。詳しくは後述のバトルを参照。
  • 攻撃手段 – 後述のバトルを参照。
  • 漢数字(一〜九)- 防御力。もし敵に攻撃されても、この数値が高ければ回避できたり傷が少なくてすむ。

ドラゴンボール3 悟空伝
wikipedia

128KB PRG + 256KB CHR
Card Design

戦闘(カードバトル)

戦闘はカードで行われる。星の数(1〜7)で攻撃力、漢数字(一〜七)で防御力が決まる。星の数が高い方が攻撃権を取るが、こちらが1で相手が7の場合はこちらが攻撃権を取る。中心の漢字「拳」「蹴」「体」「武」「連」「必」によって攻撃パターンが決まる。「必」と書かれたカードを使うと必殺技ポイントを消費し必殺技を繰り出せる。敵に勝利すると修行値が貰え、一定の値になるとレベルアップし体力や必殺技ポイントが増えたりスピード、パワー、テクニック、タフネスを高めるレベルポイントが得られたり、新たな必殺技が覚えられる。レベルの上限はストーリーの進行具合によって決められている。敵を倒すと、その敵が持っていたアイテムを獲得できるときがある。

ドラゴンボールZ 強襲サイヤ人
wikipedia

256KB PRG + 256KB CHR
Card Design

戦闘(カードバトル)

戦闘はカードを使って行われる。星の数で(1 – Z)が攻撃力、漢数字(一 – Z)で防御力が決まる。またカードに書かれている流派と各キャラクターに設定された流派が一致すると攻撃力がアップする。「必」と書かれたカードを使うと、BEを消費して必殺技を繰り出せる。2体以上の敵キャラクターへの攻撃はキャラクターごとに設定するが、複数のキャラクターが1体の敵キャラクターを倒してしまうと。他のキャラクターはそのターンの間行動しない。敵に勝利すると経験値としてBPが貰え、一定の値になるとレベルアップ。キャラクターはHPが4分の1になると苦痛の顔に変わり、0になると死亡する(名前の横に十字架のようなマークがつく)。死亡した仲間を復活させるチャンスは、ゲーム内の特定のイベント一回きりである(ガーリックJr.編終了時の悟空復活イベント時に合わせて復活するため、終盤のベジータ・ナッパ編では復活不可能)。

ドラゴンボールZII 激神フリーザ!!
wikipedia

256KB PRG + 256KB CHR
Card Design

戦闘(カードバトル)

戦闘はカードで行われる星の数で(1 – Z)が攻撃力、漢数字(一 – Z)で防御力が決まり、攻撃は漢数字の多い順に行われる。カードの流派と各キャラクターの流派が一致すると、強力な「複合攻撃」や敵全員を攻撃する「複数攻撃」ができる。「必」と書かれたカードを使うと、BE(バトルエネルギー)を消費して必殺技を繰り出せる。必殺技には敵全体を攻撃するものもある。キャラクターはHPが29[3]以下になると、顔の上に「ピンチ!」の文字が点滅し[4]、0になると回復効果のあるおたすけカードを使って全快しない限り戦闘に参加できなくなる。前作とは違い死亡扱いではなく一時離脱扱いとなるため、回復さえできればいつでも復活可能。敵に勝利すると経験値としてBP(バトルポイント=戦闘力)が貰え、一定の値になるとレベルアップ。サイヤ人である悟空、悟飯、ベジータは、瀕死の状態から一気に全快するとレベルアップする。前作にあった「神」流派カードは本作には登場しない。

ドラゴンボールZIII 烈戦人造人間
wikipedia

256KB PRG + 256KB CHR
Card Design

戦闘(カードバトル)

今作では3Dと2Dバトルの2種類に別れる。基本的に戦闘はカードで行われる星の数で(1 – Z)が攻撃力が決まる。敵に勝利すると経験値が貰え、一定の値になるとレベルアップ。またサイヤ人(悟空、悟飯、ベジータ、トランクス)は、戦闘中HPが1桁や戦闘不能になったときに仙豆などで一気に全回復すると、レベルアップする特性を持つ。

3Dバトル戦闘に参加するメンバー3人と、控えているメンバーとで、敵との戦闘が展開される。引いたカードの右下のマークにより様々な効果が起こる。戦闘中に敵が放つ必殺技は、画面上のキャラクターに「!」マークが出ると同時に十字キーの上を押すことによって2分の1の確率で回避できるというテクニックがある(技の命中が確定のときは、双方のキャラクターのカットインが入る)が、ボス戦ではこれが不可。ランダムではね返したりはね返されることはある。またオートバトル時やサブメンバーは、ステータス画面でのオート設定によって「わざをつかうな」「よわいテキから」「とにかくオート」「おおわざでいけ」の4つの戦い方を選択できる。マップでの移動画面でスタートボタンとセレクトボタンを同時に押すと、常に2D戦闘にするか、あるいは3D戦闘にするか、といった選択も可能(ボスキャラクターとの戦闘は必ず3D戦闘になる)。

必殺技カードに書かれている流派と、そのキャラクターの流派が一致したカードを選ぶと、KI(気)を消費して必殺技を出すことができる。KIを練ることで1ターン無防備状態となるが、次のターンでより強力な技を出すことができるようになる。

2Dバトル戦闘に参加するメンバーのみで戦う簡略化されるバトル。主に(CPUが)弱いと判断した敵に対して展開される。※フィールド移動中にスタートとセレクトボタンを押すことによって設定が可能。

ドラゴンボールZ外伝 サイヤ人絶滅計画
wikipedia

256KB PRG + 256KB CHR
Card Design

戦闘

カードを数枚選んで行う。使用可能な枚数はストーリーの進行に従い増加する。前作までの流派ではなく、「拳」「蹴」など。「Z」は好きなものに変化させることが可能。 星の数と文字により、攻撃力および攻撃方法が決まる。アレンジメントを完成させることで必殺技が発動し、初めて使った技には各キャラクターのコメントが入る。敵の必殺技は、当たる寸前にAボタンまたはBボタンを押すことで、弾くまたはかわすことができる(巨大な光線技はかわすのみ)。ただし味方の必殺技も同様に敵に無効化されることがあり、ザコ敵は一部の技を吸収することも可能。前作では裏技的扱いだった光弾を弾くコマンドを説明書に載せたのはプレイヤーに戦闘を見せるだけでなく、参加させるためである[。

[SFC]ドラゴンボールZ 超サイヤ伝説
wikipedia

バトルカード

キャラクターが戦闘を行うときに使用するカードで、「星(1 – Z)」「漢数字(一 – Z)」「流派」の3つの要素から構成される。「星」は攻撃力、「漢数字」は防御力に対応しており、数が多いほど効果が高くなる。本作における「流派」は「神」「魔」「界」「惑」「特戦隊」「超」と、特別な効果を持つ「気」「必」と全7種があり、カードに書かれた流派とキャラクターの流派が一致するとそのターンの攻撃が強化される(敵が複数いる場合は全体攻撃、1体しかいない場合は攻撃力を上昇させる)。また、流派「必」のカードを選ぶとKI(気)を消費して各種の必殺技を繰り出せる(KIが不足している場合は必殺技を選ぶことができず、打撃攻撃を行う。なお必殺技のほとんどは「エネルギー波」など、気功波系による通常打撃攻撃よりも威力が高い強化攻撃であるが、例外もあり「太陽拳」のように対象相手の行動を1ターン封じる(お助けカード「じいちゃん」と同等)補助技もある。

ドラゴンボール 大魔王復活
ドラゴンボール3 悟空伝
ドラゴンボールZ・強襲サイヤ人
ドラゴンボールZII 激神フリーザ!!
ドラゴンボールZIII 烈戦人造人間
ドラゴンボールZ外伝 サイヤ人絶滅計画

ドラゴンボールのファミコンゲーム 7本
DBゲーム攻略本
Bootgod

MR Mechanic Study: Frog Life – Tongue Controller

Posted on April 28, 2016August 12, 2021 by Kyle Li

“Comfortably lying on a couch in any position you want, stripping a Cardboard VR on your face, bearing your arms behind your head, and let your tongue take over all the snapping, just like a hungry frog boss.”

Here comes my next experiment. The tongue controller is already working, the player has to reach his/her tongue out and touch the controller, and it will register a hit in the game. The feedback, SFX and Visual, has to be satisfying to make it a worthwhile experience.

model

Makey Makey Go is able to simulate a touch easily with just 1 contact (capacitive touch), in this case, it is the player’s tongue. This setup will require a USB adaptor from Makey Makey Go to the android phone.

vr

[2020] The Frogworld VR on Steam will be a perfect game for this interface.
https://store.steampowered.com/app/1379350/Frogworld/

Flashback Island

Posted on January 12, 2015November 9, 2016 by Kyle Li

Flashback Island is a 360 Panorama picture viewer for RICOH Theta. All the Panorama pictures are stored in the app so it might take sometime to load based on your internet connection. In the future and when I have more time, I will use google doc and store pictures externally instead.

Lunch it here.

You will see many yellow orbs around the island. If you center any of them on your screen, an orange circle will show up around it with some information about the picture. While you are at it, press spacebar to view the picture, and press it again to exit. Enjoy it!!

01/05/2014
Spacebar vs. Mouse-click. If this was meant to be a desktop experience, I would totally use a Mouse-click over Spacebar. However, this app is intended for Oculus Rift, and the Spacebar is a programmatic preparation for an external (arduino-driven) button that mounts on viewer’s chest.

12/18/2014
r0010010

360 Cameras like RICOH Theta produce pictures like the one above. It works perfectly as the texture for sphere in Unity.  The only technical hurdle to get this to work is that Unity 3D doesn’t render inside of the sphere by default. Since I am going to texture the sphere with the Theta picture and put a camera in the middle of the sphere for viewing, I need Unity 3D to render inside of the sphere as well. In order to make this happen, a new shader is needed, well I only changed 2 lines…

download the shader here

unzip it and put it in the asset folder. Replace this one with the default texture shader in the inspector window.

Lego Kinect SUMOBOT Battle 2012

Posted on November 30, 2012February 28, 2020 by Kyle Li


Combine two Processing Libraries (Kinect + NXT) and Lego NXT sets, I ran the Lego SUMOBOT Battle in my class before the semester is over. It was a lot of fun, 3 teams came up with very different theories and robots. The entire session took 3.5 hours and was divided into design, build, program, test, and battle 5 different stages.

Mac OSX, Kinect, Processing, and NXT Mindstorms

Posted on August 15, 2011February 28, 2020 by Kyle Li

READING FROM KINECT:

In order to run Kinect and OSCeleton on your Mac, I followed Tohm Judson’s long walk through, there is no short ones… It was written a while ago so some of steps are no longer apply. Here are my notes when I install them again on my new Mac (08/15/11).

My MacBook Pro (Mac OSX 10.6.8, 2.4GHz Intel Core i5, 4GB DDR3)

1. I didn’t install CMAKE and it works fine.
2. MacPorts SnowLeopard installer.
3. OpenNI: link to download OpenNI has changed to here.
4. NITE: link to download NITE has changed to here.*
5. I don’t have the avin2…>NITE>Data folder so there is no 3 files to copy from. Instead (important), open all 3 XML files inside of Nite-….>Data folder and change the value of the attribute “key” inside of the License syntax to 0KOIk2JeIBYClPWVnMoRKn5cdY4=

The line of code should look like this in all 3 XMLs:

<License vendor=”PrimeSense” key=”0KOIk2JeIBYClPWVnMoRKn5cdY4=”/>

6. pbox2d library errors: if there are errors, 99% is because of the latest version of pbox2d library. The OSCeletion example is based on an earlier version of pbox2d, a lot of function names are changed for the newer one. Replace the latest library with the old one above will fix the problem.

*If the link breaks again, go to http://www.openni.org, on the menu bar go to Download/OpenNI Modules, then choose “OpenNI Compliant Middleware Binaries”, then “Latest Unstable”, there pick the latest NITE version for Mac OSX.

OUTPUT TO NXT:

I use Jorge Cardoso’s NXTComm library to communicate with Lego NXT Brick.

The file tree on the website is a little bit messed up for me. In order to make it work for Processing 1.5.1, this is what I did:

1. Unzip and change the folder name to “NXTComm”
2. Open the folder and create a new folder named “library”
3. Drag NXTComm.jar into the newly created library folder.
4. Drag the entire NXTComm folder into Documents/Processing/libraries/

Ignore the RXTXcomm.jar, Processing 1.5.1 has serial library built in already.

There is an example using this library on Diego Baca’s NXT website. The example uses a library called SpringGUI, it is no where to be found. I commented out everything relates to SpringGUI in the code, then it works. I also experience some delay on the response, solved by commenting out unused port readings in the code. Since I am only using NXT’s motor ports, these two commands are all I need:

nxt.motorForward(portNumber, speed);

and

nxt.motorHandBrake(portNumber);

portNumber: 0, 1, 2
speed: -100 to 100 (directional)

SMALLab: Quollywood digital puppet show

Posted on March 20, 2010 by Kyle Li

1_4463221007_f79f518e6e_o

For the Boss Level this trimester, students are creating a play together. The idea behind the theme is to introduce system and components, and to create relationships between them. All kinds of workshops are provided to take students through different aspect of a stage play, such as script writing, site design, light design, prop design, and character design. To celebrate the theme and system thinking, in SMALLab we put on a real-time digital puppet show, named Quellywood. The characters are borrowed from Systemia, another very popular trimester theme at Q2L New York.

Students are divided into teams and each team collaboratively acts out a puppet show in SMALLab. A team consists of 2 puppeteers, 2 prop masters, 1 voice actor, and 1 director. Puppeteers use the SMALLab controllers to act with the digital puppets. They can create different facial expressions on their puppet by moving the controller up and down in SMALLab. Prop masters are in charge of sound effects, props, and the backdrops of the show. The voice actor and the director are usually the same person who dubs and keeps the team in sync with their script. They will spend the first 15 mins of the session to write a story. An online version of the Quollywood is available to them as a simulator during the writing. Afterwards, they rehearse their script once in SMALLab, make some last-minute changes,and go into the official recording. Projection screen, including sound effects and voice-overs, is recorded while they act out the whole play, we then corp out the stage area and publish the show to Youtube and BeingMe.

In this play experience, we have built in a few mechanisms that requires players to communicate with each other in order to put on a successful play. There is a special sound effect that requires both prop masters to trigger certain backdrops in a specific sequence. There are tricks to create seamless prop exchange between the two puppets and they are heavily relied on the synchronization between puppeteers and prop masters. Voice actor has to work with puppeteers to sync the voice-overs with the mouth animation.

Step 1: Writing and Simulating

Step 2: Rehearsing and Iterating

Step 3: Recording and sharing


The cheer at the end is real! That is all of us in the room congratulating them a job well done! A urban fairy tale in 45 mins!

SMALLab: Systemia and Angle Carnival

Posted on February 27, 2010 by Kyle Li

This trimester in Q2L SMALLab, we work with students on angles. The goal is to create SMALLab scenarios that reinforce the concept of supplementary angles and opposite interior angles created by two crossed straight lines. We also decided to create a story based on the Carnival theme they have for this trimester with the characters from Systemia.

“Rumor has it, Kalc is building a giant safe in her lab. She is one of the suspects in Professor PI’s kidnap incident. We haven’t seen her for the past three days, and worried that she is up to no good. Codebreakers, we would like you to sneak into her lab while she is gone and investigate the giant safe. But before that, you have to prove your codebreaking skill. We will be waiting at the carnival booth 13…”

img_8487

booth 13 is hosted by Arithmus and Wordix, they are Professor PI’s trustworthy assistants. In booth 13 players work together to measure angles generated by the game with an augmented protractor and recreated them accordingly. Every round consists of two major steps, the first step is measuring the given angle, and the second one is angle calculation, both steps require recreating the correct angle with angle generator to proceed. However, game master (teacher) holds the power to alter the questions for both steps, which means he/she can bypass the game logic and proceed the game if students creatively solve the problems. The goal here is to emphasis the understanding of the sum of supplementary angles is 180 degrees, the sum of complimentary angles is 90 degrees, and opposite exterior angles are congruent, and hopefully in the end of the SMALLab session, students would be able to measure one angle and calculate the rest.

After booth 13, students are packed with angle skills, it is about time sneak into Kalc’s lab. Kalc’s giant safe is secured with an eight-angle combination lock. Every angle will be announced by the safe in a futuristic female voice. This scenario doesn’t really have any controller inputs for interactivity, all the controls are on game master’s mighty clicker. All four angles are numbered when a new combination comes up. Game master will ask question related to the coved concepts, and player(s) have to step on the right angle to respond. Then game master will proceed to the next combination or ask more questions based on the answers. After the 8th combinations, students have successfully broke the lock, and the safe will open up and show the content. What is really in there? it is for students to find out…

We’ve discovered a new way of implementing Smallab into classroom. It is to shift part of game logics into teacher’s hands or even students’ hands. That way, the gameplay becomes more creative and dynamic, and teachers also have more control over the scenarios. It harden the bond between teachers and the scenarios.

SMALLab: Liferaft + Level editor

Posted on September 23, 2009 by Kyle Li

Liferaft is a jungle river adventure game made in SMALLab. Players use glowing controllers to paddle, pump, and signal inside of a broken liferaft. The goal is to get to the river shore without sinking the raft. To succeed this game, players have to avoid obstacles, gather power-ups, pump water out, and manage the weight of their raft.

This collaborative game also has a stand alone level editing tool that allows players to design their own levels on the fly. The tool provides a smooth transition from paper (analogue) prototype into digital game level design. Players plan their level on a set of of three narrow boards resembles the beginning, the middle, and the end of a game level in Liferaft. Then they put color-coded stickers on the board based on their plans. Each color sticker represents a kind of game events. During the planning, players will explain their levels to teachers and game designers including predictions of play experience that their level is going to invoke.

After putting down the stickers, they insert their boards underneath the Computer Vision Box, a support equipment I designed and built to read those color stickers on the three boards. They will then be translated onto the computer screen. The color stickers will be replaced with real game components. Players can either test their level on the screen or send the level into SMALLab and play the real deal there. We usually have groups of players play each others game and give feedback and they will then go through an iterative process to make their game more fun and be close to the play experience they predicted.

Posts navigation

Older posts

Recent Posts

  • BMP – Rearrange Colormap
  • Reset Allow USB Debugging? Notification
  • 8-bit Notes
  • AT29C256 90PI
  • Super-Toys Last All Summer Long

Archives

Proudly powered by WordPress | Theme: MiniZen by Martin Stehle.