Visual scripting in CT.JS -introduction

Exceptional 3D tutorials
10 Apr 202413:34

Summary

TLDRこのスクリプトは、C.Jのためのゲームエンジンの大きなアップデートについて説明しています。注目の焦点は、視覚スクリプト機能の追加です。2年間にわたって議論されてきたこの機能は、開発パイプラインに取り入れられ、ついに完成しました。新しいプロジェクトを作成し、言語としてCoffeeScriptが利用できますが、将来的にはJavaScriptに置き換えられます。CatnipというブロックバージョンのJavaScriptを使用して、コードが変換されます。プレイヤーの移動を制御するシンプルなデモンストレーションを作成し、マウスポインタで操作できるようにします。また、カプセル化された物理エンジンを使用して、ゲームオブジェクトに物理学を適用する方法も紹介されています。最後に、スコアシステムを実装する方法と、プロパティと変数の使い分けについても触れています。このアップデートは、視覚スクリプトを使用してゲーム開発を楽しむ人々にとって非常に魅力的です。

Takeaways

  • 🚀 新機能の追加:C.J(Corgi Jam)のゲームエンジンに視覚スクリプトが追加されました。
  • 📈 開発プロセス:2年間で視覚スクリプトのアイデアが議論され、開発パイプラインに沿って進化しました。
  • 🔍 言語の変更:Coffee Scriptが将来的にJavaScriptの簡略化されたバージョンに置き換えられますが、現在の主な言語はJavaScriptです。
  • 🎨 ビジュアルスクリプト:コードをブロックとして視覚的に表現し、後でJavaScriptに変換されます。
  • 🛠️ テンプレートの作成:新しいプロジェクトで、プレイヤーや床のようなプレースホルダーアセットを作成し、それらをワールドに追加します。
  • 🖱️ プレイヤーの制御:マウスポインタを使用してプレイヤーオブジェクトを移動させ、マウスポインタの非表示に設定します。
  • 🎮 ゲームオブジェクト:テクスチャと違って、ゲームオブジェクトとしてワールドに配置できるテンプレートを作成します。
  • 🔄 イベントの活用:フレームの開始と終了時にイベントを活用し、プレイヤーの移動やUIの描画などのロジックを実装します。
  • 🌈 色変化:プレイヤーが床と接触しているかどうかによって色を変えるロジックを実装しました。
  • 🧩 カットモジュール:C.Jの新しいノードを使用して、物理エンジンやオブジェクトの挙動を細かく制御できます。
  • 🔍 検索機能:ノードを検索し、必要なカテゴリーに追加することで、より柔軟なスクリプト作成が可能になります。
  • 🔑 プロパティと変数の使い分け:プロパティはプロジェクト全体で使用でき、変数は一時的なデータ保持に使われます。

Q & A

  • C.Jと呼ばれるゲームエンジンの最新アップデートで導入された新機能は何ですか?

    -C.Jのゲームエンジンの最新アップデートでは、ビジュアルスクリプト機能が導入されました。これは、ビジュアルプログラミングを使用してゲームのロジックを構築できるようになりました。

  • ビジュアルスクリプトを使用する前に、どの言語がC.Jで主に使われていましたか?

    -ビジュアルスクリプトを使用する前に、C.Jで主に使われてい语言はJavaScriptでした。C.Jは、JavaScriptをベースとした簡易化されたバージョンの言語を使用していました。

  • カットナイプ(Catnip)とは何ですか?

    -カットナイプは、JavaScriptのブロックバージョンです。ビジュアルプログラミングで使用され、コードは最終的にJavaScriptに変換されます。

  • ビジュアルスクリプトを使用して作成されたゲームの基本的なシーンはどのように構築されますか?

    -基本的なシーンは、プレイヤーのオブジェクトと床のオブジェクトを用意し、それらを新しいルームに追加することで構築されます。オブジェクトの座標や色、そして衝突オブジェクトの設定を行い、それらを中央に配置してシーンを完成させます。

  • プレイヤーオブジェクトをマウスで動かすために、ビジュアルスクリプトでどのような操作を行いますか?

    -プレイヤーオブジェクトをマウスで動かすためには、フレームの終了時にポインタのXY座標を取得し、それをプレイヤーオブジェクトの座標に適用する必要があります。また、マウスカーソルを非表示にするために、プロジェクトの設定でポインタのプロパティを変更します。

  • ゲームオブジェクトの衝突を検出するために、ビジュアルスクリプトでどのようなプロセスを使用しますか?

    -ゲームオブジェクトの衝突を検出するためには、「place」カテゴリを使用して、オブジェクトが他のオブジェクトと接触しているかどうかを判定します。もし接触していない場合、特定のアクション(例えば、オブジェクトの色を変える)を実行することができます。

  • ビジュアルスクリプトでオブジェクトの色を変更する際に、どのようなアプローチを取りますか?

    -オブジェクトの色を変更する際には、「set tint」ノードを使用します。これは、オブジェクトの色を指定した色に変更することができます。条件分岐を使用して、オブジェクトが衝突しているかどうかによって、色を変えることができます。

  • ゲームのスコアシステムを実装するために、プロパティと変数のどちらを使用すべきですか?

    -ゲームのスコアシステムを実装する場合は、プロパティを使用すべきです。プロパティは、プロジェクト全体でアクセスできるため、スコアを追跡するのに適しています。一方、変数は一時的な値を保持するのに使われます。

  • カットナイプの開発者が今後もアップデートを提供する予定はありますか?

    -はい、カットナイプの開発者は今後もアップデートを提供する予定であり、ビジュアルスクリプト機能はさらに強化され、変更が加えられる見込みです。

  • カットナイプを使用してゲームを作成する際には、どのような利点がありますか?

    -カットナイプを使用することで、プログラミング言語を知らなくてもゲームのロジックを構築できるため、ゲーム開発のハードルが下がります。また、ビジュアルプログラミングにより、コードのミスを減らすことができます。

  • カットナイプのビジュアルスクリプト機能は、どのような種類のゲーム開発者に向いていますか?

    -カットナイプのビジュアルスクリプト機能は、プログラミング経験が乏しい初心者ゲーム開発者にも扱いやすいです。また、プログラミングを知っているが、ビジュアルプログラミングで作業を効率化したい経験豊富な開発者にも役立ちます。

Outlines

00:00

🚀 C.J.S ゲームエンジンのビジュアルスクリプト機能紹介

C.J.S ゲームエンジンに新たに追加されたビジュアルスクリプト機能について紹介。開発者が2年間かけて期待していたこの機能がようやくリリースされ、プロジェクトの新規作成から、ビジュアルスクリプトを使用したシンプルなオブジェクトの移動の設定までを説明。また、ビジュアルスクリプトのイベント処理についても触れている。

05:01

🖱️ マウスによるオブジェクト操作と非表示設定

マウスを使用してオブジェクトを操作し、マウスポインタを非表示に設定する方法について説明。プロジェクトの設定でポインタのプロパティを変更し、ゲームオブジェクトの色変化をトリガーに応じて制御する方法が紹介されている。

10:01

🎨 ゲームの背景設定とプロパティの活用

ゲームの背景を設定し、アセットライブラリから選んだパターンを使用する方法について説明。また、プロパティと変数の違いについて触れ、スコアシステムのようなものをプロジェクト全体で使用する際にはプロパティを使用するべきだとアドバイスしている。最後に、ビジュアルスクリプトの楽しさと、これからも変化が加わる可能性について語っている。

Mindmap

Keywords

💡Visual Script

ビジュアルスクリプトは、プログラミング言語を視覚的に表現し、コードを記述することなくゲームのロジックを構築できるツールです。このビデオでは、C.J(CoffeeScript for JavaScript)の開発者が、ビジュアルスクリプトを使用してゲームエンジンの開発パイプラインを追跡し、新しいプロジェクトを作成しています。

💡Catnip Nodes

Catnip Nodesは、ビジュアルスクリプトのブロックバージョンであり、コードをより直感的に表現するのに使われます。ビデオでは、Catnip Nodesを使ってプレイヤーオブジェクトを制御し、マウスポインターに基づく移動を実現しています。

💡CoffeeScript

CoffeeScriptは、JavaScriptにコンパイルされるより簡潔なプログラミング言語です。ビデオでは、将来的にCoffeeScriptが別の言語に置き換えられると述べていますが、現在はC.Jで主に使用されています。

💡Collision Object

コリジョンオブジェクトは、ゲーム内の物体が接触または衝突したときの挙動を定義するプロパティです。ビデオでは、プレイヤーオブジェクトと床のコリジョンオブジェクトを設定し、衝突判定を行う方法が説明されています。

💡Template

テンプレートは、ゲームオブジェクトを作成するための事前定義された設定です。ビデオでは、プレイヤーと床のオブジェクトをテンプレートとして作成し、それらを新しいワールドに追加する方法が紹介されています。

💡On Events

On Eventsは、ゲームエンジンが特定のイベントを検知したときに実行されるアクションを定義する機能です。ビデオでは、フレームの開始と終了時に実行されるイベントを使用して、プレイヤーオブジェクトの移動を制御しています。

💡Pointer UI

Pointer UIは、マウスポインターの位置を取得し、ゲーム内のオブジェクトに影響を与えるために使用されます。ビデオでは、Pointer UIを使用してプレイヤーオブジェクトをマウスポインターで動かす方法が説明されています。

💡Tint

Tintは、ゲームオブジェクトの色合いを変更するプロパティです。ビデオでは、プレイヤーオブジェクトのTintを白にしてから、衝突判定に基づいて赤に変える方法が紹介されています。

💡Property

プロパティは、ゲームオブジェクトに関連付けられた変数で、ゲーム全体でアクセス可能です。ビデオでは、スコアを追跡するためにプロパティを使用し、その使用方法が説明されています。

💡Variable

変数は、一時的な値を保持するオブジェクトで、通常は特定のイベントまたは状況に限定して使用されます。ビデオでは、変数とプロパティの違いを説明し、一時的なブースト効果を実現するために変数を使用する例が示されています。

💡Nightly Build

ナイトリービルドは、ソフトウェア開発で定期的にコンパイルされるビルドのことで、新しい機能や修正をテストするのに使われます。ビデオでは、Catnip Nodesのナイトリービルドを使用しており、まだ実験的な機能であることが触れられています。

Highlights

C.J, a game engine, has introduced Visual Script after two years of development.

Visual Script is an experimental feature not yet available in the main branch.

CoffeeScript will be replaced in the future with a simplified version of JavaScript.

Catnip is a block version of JavaScript, which is the primary language used in C.J.

Creating new assets involves using the built-in Gallery and customizing placeholder assets.

The process of setting up a basic scene includes creating a floor and player object.

Visual Script nodes allow for simple movement control of objects using mouse input.

The frame end event is used for UI-related tasks, such as drawing on the screen.

Pointer category in Visual Script provides access to mouse coordinates for controlling game objects.

The project's cap mods allow for easy control of various game object properties.

Physics can be applied to game objects using the Mat.B Library.

Matter categories in nodes enable control over different physics behaviors like pushing.

Using the place category in Visual Script allows for collision detection without physics.

The if-else branch in Visual Script can be used to change object properties based on conditions.

Setting a tint on objects can be controlled through Visual Script nodes.

Custom loading screens and background changes can be implemented in the project settings.

Properties and variables in Visual Script have different scopes and uses within a project.

Creating a property allows for the use of a value throughout the entire project.

Variables in Visual Script are more suited for temporary use within a single event.

The introduction of Visual Script in C.J is expected to make game development more accessible.

Transcripts

play00:00

huge update for the cc. JS update uh

play00:04

game engine we have visual script and

play00:06

finally after two years pretty much I've

play00:08

been trying to follow this sort of

play00:10

development pipeline there's been ideas

play00:12

about visual scripton for C.J for a

play00:15

while and like forums I forget where uh

play00:17

so very interesting this is finally out

play00:19

let's make a new project uh in the new

play00:22

section here of the CGS this is the

play00:24

nightly build by the way I forgot to

play00:25

mention it's not available in the main

play00:27

branch this is still an experimental

play00:29

phase you can select obviously project

play00:31

folder we have uh the language coffee

play00:35

script which is actually going to be

play00:36

replaced in the distant future with a

play00:39

different language which is just a

play00:40

simplified version of JavaScript uh and

play00:43

JavaScript is what is used in CJs

play00:46

primarily a simplified JavaScript

play00:48

language and catnip is essentially just

play00:51

a block version of JavaScript and order

play00:53

the code is converted into JavaScript

play00:55

afterwards so if you know how to use

play00:56

JavaScript inside of c. JS you're

play00:59

halfway there let's create some new

play01:01

assets so a new one you can see we have

play01:03

the ability to use the built-in Li uh

play01:06

Gallery we have a bunch of assets there

play01:08

let's just make some simple placeholder

play01:10

assets I'm going to make one uh sort of

play01:13

longer width maybe five 100 width

play01:18

rectangle here set the filter to non we

play01:20

don't want any text set the color to be

play01:23

maybe s of a uh black just leave it

play01:25

black or no just set to Red I like red

play01:29

or dark dark Rudy red let's set this to

play01:34

be our floor or platform whatever you

play01:37

want to call it create and add another

play01:40

one so let's create a new one uh no not

play01:43

texture my bad we want to go to uh

play01:46

placeholder texture let's set this to be

play01:48

a round circle and set this to be uh o

play01:53

we can call it the player this is what

play01:54

we'll control set it to be non and

play01:57

change the color to be a

play02:00

my mouse is bugging out uh to be white

play02:03

fully white and we're going to be able

play02:05

to change the tint and all that when

play02:06

it's white whereas if it's already got a

play02:08

color it's not going to work it's like

play02:09

pain in the house you got to add white

play02:11

paint first before you can choose

play02:12

whatever paint you want let's set the uh

play02:16

Collision object to the center of the

play02:18

image to be the center the Collision

play02:20

shape to be Circle apply that same for

play02:22

the floor set the origin of the image to

play02:25

be in the middle if you don't do this

play02:26

then it's going to be pivoted around

play02:28

obviously top left handti corner or the

play02:31

CL shape isn't going to be great uh so

play02:34

once you got that you can create a new

play02:35

texture from it and by right clipping

play02:38

and create a new template for me I said

play02:40

texture I meant template it allows you

play02:42

to create an object that isn't a texture

play02:43

but in fact is a template that you can

play02:45

add into your world so let's create a

play02:47

new world a room let's grab that new

play02:49

room okay we have a new room here and

play02:52

over here we have the two templates

play02:54

these are different from the textures

play02:56

textures are just images you can't place

play02:58

just images in the world they they need

play03:00

to be game objects essentially so let's

play03:02

add in our Circle in the middle is of

play03:05

our thing and down here our ground we

play03:09

can actually go to the selection item up

play03:12

here uh we can actually just grab both

play03:15

and move them up a little bit so they're

play03:16

more centered and there we go we can

play03:18

apply this and now we have a basic scene

play03:21

that we can launch and we haven't even

play03:23

got into visual scrutin yet so let's go

play03:26

and do that let's click on our player

play03:28

and we can open up and see we have brand

play03:30

new visual script to noes what we're

play03:32

going to do is create a very simple sort

play03:33

of movement not of setup so let's go

play03:37

ahead you can see here on the on events

play03:39

which uh gives us a bunch of different

play03:41

events like on update which is the c one

play03:43

frame start which means every single

play03:45

frame at the start of the frame and we

play03:47

also have a frame end which is one we're

play03:50

going to use now which is every single

play03:51

frame when the frame ends you use the

play03:54

frame start to do like calculations and

play03:55

stuff like that you use the frame end

play03:57

typically to do UI type stuff like

play04:00

drawing stuff on screen like scores or

play04:03

Uh custom Mouse cursors stuff of that

play04:05

nature so what we're going to do is

play04:07

similar to a cust mouse cursor cursor

play04:09

we're going to allow our uh Mouse to

play04:10

control this player object so you can

play04:13

see down here we have a bunch of

play04:15

different categories you can click on

play04:16

them to jump to those categories in the

play04:18

movement we want to change the movement

play04:20

of our object obviously so we're going

play04:22

to set the x and Y2 and then pixels it's

play04:25

blank so what we're going to do is you

play04:28

can see we have a bunch of different

play04:29

green boxes that fit in here X Y but

play04:33

this is XY of the object we want XY of

play04:35

our cursor let's go all the way down to

play04:39

our pointer category and here you can

play04:41

see we have our pointer X our pointer UI

play04:46

X so let's grab that the UI of the

play04:48

pointer well the pointer is essentially

play04:51

the same thing but the UI is is the one

play04:53

we really want it could work with

play04:55

pointer uh just normal as well but let's

play04:58

grab the UI for extra measure and there

play05:00

we go now we have our new mouse but the

play05:03

mouse actually is still visible I don't

play05:05

really want the mouse to be visible so

play05:07

let's go ahead to our project let's go

play05:09

down to the cap mods and you can see in

play05:11

cap mods here I'm just doing a detail

play05:13

the C mods here we have pointer for

play05:15

example which is what we saw down here

play05:18

pointer and we also have place so all

play05:21

these different C mods um C mods they

play05:23

come with all the brand new nodes so you

play05:25

can control them really easily for

play05:27

example let's go ahead and grab the mat.

play05:29

B Library which is essentially physics

play05:32

you can apply 2D physics to your game

play05:34

and now go back and you see we have

play05:36

obviously good the Behavior Uh Collision

play05:39

group physics enable physics you got all

play05:41

the the the standard physics uh

play05:44

properties and physics constraints but

play05:46

also if you scroll down a little bit

play05:48

more we have the matter category of our

play05:50

nodes so now we can control all the

play05:52

different matter for example uh uh

play05:54

pushing it uh teleporting matter matter

play05:57

push for example we can use that and you

play05:59

see where it says copy if you go to the

play06:01

top here to the properties you got this

play06:05

and this is our object it's essentially

play06:07

uh self in the code and then you can

play06:09

object uh XY you can go down of to here

play06:13

to the object uh gForce from its X and

play06:18

it's y gForce value of maybe zero for

play06:21

the X and like one like that this is how

play06:24

you basically program your different NES

play06:27

but also if you right clicking can do

play06:29

delete them or duplicate we're going to

play06:31

delete this because what we want to do

play06:33

is actually uh go ahead to

play06:36

our frame start and we're going to run a

play06:39

small L calculation using the

play06:42

place category the place cat mod which

play06:45

allows you to detect overlays and stuff

play06:47

like that but without using physics or

play06:49

rigid bodies of that uh or anything of

play06:52

that nature so let's go ahead and use

play06:55

the uh detect if it's free the place is

play06:58

free but as you can see I can't drag it

play07:00

in because I can't detect whether or not

play07:02

it's colled with anything yet because

play07:03

it's one of those rounded bever noes you

play07:05

need one of these uh different box type

play07:09

edges on this one so what we can do is

play07:12

instead of searching for everything if

play07:14

you know what you're looking for instead

play07:15

of looking for the different categories

play07:17

to see where it is that node kept is if

play07:19

you hover underneath or even on top of

play07:22

this we have a little plus icon so if

play07:24

you click it we have a new search so

play07:26

what we're going to search for is a

play07:28

condition so if we grab an

play07:30

if uh and grab the if else Branch so if

play07:34

and now we have a condition which is as

play07:36

you can see the same uh outside um place

play07:40

as here the same orange beveled Corners

play07:44

that is a perfect fit obviously so what

play07:47

we want to do is fill Lear the same as I

play07:48

showed previously in the previous

play07:49

example get the properties grab this as

play07:52

in this player object it's XY so let's

play07:56

go down to grab its

play07:58

XY just to fill it in you know and uh

play08:02

the uh Collision Group which we don't

play08:03

actually have a collision group yet so

play08:05

let's go to our assets open up our floor

play08:09

and in the floor over here we can go to

play08:12

our Collision group and call this and

play08:15

very Innovative so let's call it flaw

play08:17

again apply that and we can go back to

play08:20

our player and here type

play08:24

in floor there we go and we have nothing

play08:28

to do yes so let's go ahead and grab

play08:31

something to do so for example let's go

play08:34

here type in set tint cuz I said we're

play08:38

going to set it white on purpose so we

play08:40

can apply any color we want later we're

play08:42

going to set the tint to B and leave it

play08:45

white and if not cuz what we're doing

play08:48

here is obviously check in every single

play08:50

frame at the start if the place of this

play08:54

item is free as in it's not colliding

play08:56

with anything else it's liberated it's

play08:58

way from everybody else it it's not

play09:00

colliding with any floor object if so

play09:03

set the tint to stay white if not let's

play09:06

go ahead and grab a new set tint

play09:10

node and this tint is now going to be I

play09:13

know pinkish maybe like a pinkish red I

play09:15

don't want to have just red or we can

play09:17

just grab a a just red on that side a

play09:19

red so let's go ahead and play this now

play09:22

cuz obviously it moves around with our

play09:24

Mouse and we can go ahead and there we

play09:28

go it's red and now white and red and

play09:31

white and red and white and red and

play09:32

white there we go and I actually went to

play09:34

disable but I got lost in Cat mods I

play09:37

actually originally wanted to show you

play09:38

if you go down to Brandon we can hide

play09:41

tjs and we can add a custom loading

play09:43

screen as well I don't like the loading

play09:45

so I'm going to set this to be black or

play09:47

you know you could set it to be fully

play09:49

white if you wanted to I just like a

play09:51

black screen and instead of writing

play09:53

something I'm just going to press space

play09:55

that's going to be our loading screen

play09:56

text a blank space so we're going to

play09:58

have nothing until our actual game shows

play10:01

up and I actually want to change the

play10:02

background cuz I don't like this black

play10:05

nothingness so let's add an asset let's

play10:07

look at the asset Library we can have a

play10:09

bunch of different shapes and stuff but

play10:11

I want to

play10:12

use this I like this sort of pattern

play10:15

this brown background pattern let's go

play10:18

ahead open it up set it to be a tiled

play10:21

background set the Collision to be uh

play10:23

the origin to be the middle and now go

play10:26

down to the backgrounds add a background

play10:29

and use the VG background yeah let's use

play10:31

this drop down and set the depth to be

play10:33

minus one so it's behind all our current

play10:36

objects and there we go we have a little

play10:40

project that we've made with uh just our

play10:44

catod uh catnip nodes there we go Isn't

play10:49

that cool and now maybe add damage

play10:52

whenever it touches it with a variable

play10:55

uh or something of that nature well I'm

play10:57

not going to do too much I'm going to

play10:58

end it in a second here uh but what we

play11:00

can do go to the properties on the top

play11:02

here and we can add a new property or

play11:04

new variable now a variable and a

play11:06

property is very different look it's

play11:08

let's create a new variable let's call

play11:10

it uh damage or score or something of

play11:13

that nature score that's great we have a

play11:16

new variable called score we don't

play11:18

actually it's not appeared let's create

play11:20

a new property call it

play11:22

score yeah that appeared I don't know

play11:25

why this it didn't appear so uh no

play11:29

apparently not uh we are in a nightly

play11:32

build so sometimes you'll have glitches

play11:34

and bugs you do actually need to create

play11:36

a variable can just set a variable so on

play11:39

start let's create a variable by just

play11:42

writing it a variable call it

play11:45

um

play11:47

hello oh we have a zero that appears

play11:51

sometimes in front that's another bug uh

play11:53

so we have set hello which isn't

play11:55

actually a variable that we've created

play11:57

uh to be zero and that is actually a not

play12:01

not a temporary variable if you go to

play12:02

this search here you can see it says

play12:04

it's temporary it only exists for one

play12:06

event what I wanted to show you is that

play12:07

if you create new variable and then go

play12:10

to one of these different events that

play12:12

variable isn't going to appear CU it's

play12:13

only allowed in a very limited uh uh

play12:16

category uh that this object can use but

play12:19

if you create a property you can see we

play12:20

have a little F little box like icon you

play12:23

can use that without throughout this

play12:25

entire project from different uh

play12:27

different rooms you can use it uh uh

play12:29

from different objects you can access

play12:31

that uh data that value so it's a much

play12:34

better way if you want to use something

play12:36

like a score system to use a property

play12:38

than a variable if you want to use

play12:40

something very temporary like uh yeah

play12:44

anything that's temporary like a

play12:45

temporary boost or temporary whatever it

play12:48

is I don't really have an example in

play12:49

mind then you can use this variable so

play12:53

that's a very important difference but

play12:55

like I said I'm not going to go much

play12:56

further the video is long enough this is

play12:57

just a quick introduction

play12:59

or more like me also discovering catnip

play13:03

with you guys this has come out a few

play13:04

days ago it's really fun to play with

play13:06

it's going to have a lot of changes in

play13:08

the future so if you don't plan on

play13:10

making full games with this but you can

play13:11

definitely go and enjoy this uh it's

play13:14

going to be really powerful really fun

play13:17

and this is going to allow a lot more

play13:18

people to use ct. JS I really do love

play13:21

visual scripting so this is an engine

play13:23

that I'm definitely going to be talking

play13:25

about and hey it's been like a year

play13:26

since I've uploaded to this channel so I

play13:28

thought now that was a perfect

play13:29

opportunity so I'll see you guys next

play13:32

time and have fun

Rate This

5.0 / 5 (0 votes)

Related Tags
C.Jビジュアルスクリプトカプセルジュースゲームエンジン開発パイプラインビジュアルプログラミングプレイヤー制御マウスカーソルコリジョンプロパティテンプレートアセットカスタマイズプログラミングチュートリアルエクスペリメントコミュニティインタラクティブブロックベースJavaScript
Do you need a summary in English?