本文へスキップstate=CHASE vy+=G*dt shake(0.3) perlin(u,v) fadeOut(1.0) RAYCAST LIGHTMAP MINIBOSS cross(a,b) sign(vx) FRAME if(combo>best) WEBGL moveTo(next) ease=t*t SKELETON vy=min(vy,MAX) ox=cx+cos(a)*d if(see(player)) perlin(u,v) orbit(t) shuffle(deck) FADE oy=cy+sin(a)*d present() dot(n,l) HITBOX MESH vx*=0.9 UPGRADE hitstop(0.05) play(hit) spin(0.05) shuffle(deck) spin(0.05) y+=vy*dt perlin(u,v) SPAWN scale=1+p*0.2 MINIBOSS WALK x+=vx*dt seed^=seed<<13 placeChest() dt=1/60 GAMELOOP fadeOut(1.0) STAMINA CRAFTING GRAVITY draw(sprite) PARRY GARBAGE play(hit) PLAYTEST if(see(player)) wave=sin(time*2) update(dt) SPRITE normalize(v) state=CHASE vy+=G*dt shake(0.3) perlin(u,v) fadeOut(1.0) RAYCAST LIGHTMAP MINIBOSS cross(a,b) sign(vx) FRAME if(combo>best) WEBGL moveTo(next) ease=t*t SKELETON vy=min(vy,MAX) ox=cx+cos(a)*d if(see(player)) perlin(u,v) orbit(t) shuffle(deck) FADE oy=cy+sin(a)*d present() dot(n,l) HITBOX MESH vx*=0.9 UPGRADE hitstop(0.05) play(hit) spin(0.05) shuffle(deck) spin(0.05) y+=vy*dt perlin(u,v) SPAWN scale=1+p*0.2 MINIBOSS WALK x+=vx*dt seed^=seed<<13 placeChest() dt=1/60 GAMELOOP fadeOut(1.0) STAMINA CRAFTING GRAVITY draw(sprite) PARRY GARBAGE play(hit) PLAYTEST if(see(player)) wave=sin(time*2) update(dt) SPRITE normalize(v) poll(input) y+=vy*dt PROFILER lives-- HEALTH HITBOX TWEEN pos=pos+vel SPAWN render() EASING draw(sprite) DROP aabb(a,b) TWEEN speed=8.0 LEVELUP ATTACK crit=rng()<0.1 TUTORIAL RESPAWN TWEEN VERTEX roll=rng(1,20) shake(0.3) SHADER if(lives==0) CHEST NOISE TUTORIAL score+=100 MEMORY PATROL BUGFIX orbit(t) if(combo>best) BUFF MANA fadeOut(1.0) HUD flood(x,y) perlin(u,v) update(dt) HEALTH flash(0.1) perlin(u,v) SEED state=IDLE sleep(rest) JUMP DODGE flee() neighbors(x,y) tile=map[idx] grid[y][x]=1 speed=8.0 RUN emit(particles) aggro+=1 MEMORY if(tile==WALL) noise(x,y) MESH die() TICK lvl=floor(exp/100) update(dt) WEBGL pick(table) sign(vx) state=IDLE score+=100 speed=8.0 clamp(v,0,1) IFRAMES if(roll>=15) poll(input) y+=vy*dt PROFILER lives-- HEALTH HITBOX TWEEN pos=pos+vel SPAWN render() EASING draw(sprite) DROP aabb(a,b) TWEEN speed=8.0 LEVELUP ATTACK crit=rng()<0.1 TUTORIAL RESPAWN TWEEN VERTEX roll=rng(1,20) shake(0.3) SHADER if(lives==0) CHEST NOISE TUTORIAL score+=100 MEMORY PATROL BUGFIX orbit(t) if(combo>best) BUFF MANA fadeOut(1.0) HUD flood(x,y) perlin(u,v) update(dt) HEALTH flash(0.1) perlin(u,v) SEED state=IDLE sleep(rest) JUMP DODGE flee() neighbors(x,y) tile=map[idx] grid[y][x]=1 speed=8.0 RUN emit(particles) aggro+=1 MEMORY if(tile==WALL) noise(x,y) MESH die() TICK lvl=floor(exp/100) update(dt) WEBGL pick(table) sign(vx) state=IDLE score+=100 speed=8.0 clamp(v,0,1) IFRAMES if(roll>=15) TICK play(hit) if(see(player)) TEXTURE sin(t)*r INVENTORY cooldown-=dt if(combo>best) WAVE VSYNC PROCGEN spawnRoom() FADE tween(x,to,0.4) DEADZONE FRAME PATROL SWARM lives-- combo*=2 lerp(a,b,t) fadeOut(1.0) if(lives==0) RAYCAST AGGRO vy=-JUMP orbit(t) BUFF LOOP MANA cos(t)*r play(hit) hp-=dmg WAVE dt=1/60 MINIBOSS draw(sprite) KNOCKBACK VIEWPORT scale=1+p*0.2 INVENTORY if(roll>=15) if(see(player)) fixedUpdate() VIEWPORT SPRITE cooldown-=dt FIXEDSTEP while(running) GRAVITY length(v) RESPAWN emit(particles) CAMERA speed=8.0 vy=min(vy,MAX) y+=vy*dt STAMINA crit=rng()<0.1 WEBGL HUD score+=100 connect(a,b) RIG ENEMY vy=-JUMP hitstop(0.05) MESH UPGRADE STAMINA lerp(a,b,t) SPRITE MESH PLAYTEST FPS ox=cx+cos(a)*d x+=vx*dt SEED alpha-=dt CRIT DEBUFF aggro+=1 exp+=50 tween(x,to,0.4) TICK play(hit) if(see(player)) TEXTURE sin(t)*r INVENTORY cooldown-=dt if(combo>best) WAVE VSYNC PROCGEN spawnRoom() FADE tween(x,to,0.4) DEADZONE FRAME PATROL SWARM lives-- combo*=2 lerp(a,b,t) fadeOut(1.0) if(lives==0) RAYCAST AGGRO vy=-JUMP orbit(t) BUFF LOOP MANA cos(t)*r play(hit) hp-=dmg WAVE dt=1/60 MINIBOSS draw(sprite) KNOCKBACK VIEWPORT scale=1+p*0.2 INVENTORY if(roll>=15) if(see(player)) fixedUpdate() VIEWPORT SPRITE cooldown-=dt FIXEDSTEP while(running) GRAVITY length(v) RESPAWN emit(particles) CAMERA speed=8.0 vy=min(vy,MAX) y+=vy*dt STAMINA crit=rng()<0.1 WEBGL HUD score+=100 connect(a,b) RIG ENEMY vy=-JUMP hitstop(0.05) MESH UPGRADE STAMINA lerp(a,b,t) SPRITE MESH PLAYTEST FPS ox=cx+cos(a)*d x+=vx*dt SEED alpha-=dt CRIT DEBUFF aggro+=1 exp+=50 tween(x,to,0.4) placeChest() if(lives==0) PROFILER placeChest() ENEMY BUGFIX SEED emit(particles) while(running) HURTBOX RESPEC seed^=seed>>17 rand()%6 spin(0.05) swapBuffers() FRICTION KEYFRAME LEVELUP MESH EASING GRAVITY if(near)attack() VSYNC coins++ RAYCAST atan2(dy,dx) noise(x,y) TILESET TILEMAP ATTACK HURTBOX PARALLAX SCREENSHAKE shuffle(deck) scale=1+p*0.2 VERTEX VSYNC abs(dx) PROCGEN tile=map[idx] if(see(player)) clamp(v,0,1) MINIMAP SHADER clamp(v,0,1) TWEEN combo*=2 shake(0.3) vy+=G*dt DEADZONE COOLDOWN PROFILER IFRAMES speed=8.0 vx*=0.9 CHECKPOINT DUNGEON BUFF PROCGEN DASH OVERLAY COLLIDER gameOver() orbit(t) MINIMAP orbit(t) ENEMY score+=100 DASH swapBuffers() hitstop(0.05) seed^=seed>>17 roll=rng(1,20) placeChest() if(lives==0) PROFILER placeChest() ENEMY BUGFIX SEED emit(particles) while(running) HURTBOX RESPEC seed^=seed>>17 rand()%6 spin(0.05) swapBuffers() FRICTION KEYFRAME LEVELUP MESH EASING GRAVITY if(near)attack() VSYNC coins++ RAYCAST atan2(dy,dx) noise(x,y) TILESET TILEMAP ATTACK HURTBOX PARALLAX SCREENSHAKE shuffle(deck) scale=1+p*0.2 VERTEX VSYNC abs(dx) PROCGEN tile=map[idx] if(see(player)) clamp(v,0,1) MINIMAP SHADER clamp(v,0,1) TWEEN combo*=2 shake(0.3) vy+=G*dt DEADZONE COOLDOWN PROFILER IFRAMES speed=8.0 vx*=0.9 CHECKPOINT DUNGEON BUFF PROCGEN DASH OVERLAY COLLIDER gameOver() orbit(t) MINIMAP orbit(t) ENEMY score+=100 DASH swapBuffers() hitstop(0.05) seed^=seed>>17 roll=rng(1,20) BUFF CRAFTING present() RESPAWN KEYFRAME TUTORIAL MINIMAP poll(input) ENEMY DELTATIME if(dist<r1+r2) tile=map[idx] PATROL NOISE PATROL present() PIXELART seed^=seed<<13 PLAYTEST scale=1+p*0.2 best=combo SHIELD RESPEC connect(a,b) CHECKPOINT RAYCAST oy=cy+sin(a)*d TRANSITION NOISE round(score) play(hit) if(roll>=15) y+=vy*dt JUMP PROFILER TILEMAP swapBuffers() hp-=dmg clamp(v,0,1) TUTORIAL PROFILER SPAWNER TRANSITION fixedUpdate() BUFF CRAFTING present() RESPAWN KEYFRAME TUTORIAL MINIMAP poll(input) ENEMY DELTATIME if(dist<r1+r2) tile=map[idx] PATROL NOISE PATROL present() PIXELART seed^=seed<<13 PLAYTEST scale=1+p*0.2 best=combo SHIELD RESPEC connect(a,b) CHECKPOINT RAYCAST oy=cy+sin(a)*d TRANSITION NOISE round(score) play(hit) if(roll>=15) y+=vy*dt JUMP PROFILER TILEMAP swapBuffers() hp-=dmg clamp(v,0,1) TUTORIAL PROFILER SPAWNER TRANSITION fixedUpdate() length(v) flee() TEXTURE JUMP PLAYTEST tween(x,to,0.4) LIGHTMAP SEED DEADZONE MESH aggro+=1 draw(sprite) aggro+=1 CHEST if(near)attack() ease=t*t overlap(r1,r2) for(i=0;i<n;i++) GRAVITY ox=cx+cos(a)*d alpha-=dt fadeOut(1.0) SPRITE PARRY ATTACK score+=100 flood(x,y) atan2(dy,dx) die() if(combo>best) next=path.shift() if(near)attack() COLLIDER TICK DELTATIME lives-- SEED SWARM PLAYTEST if(roll>=15) present() emit(particles) BUGFIX MINIMAP dt=1/60 SHIELD idx=y*W+x BUFF PARALLAX ATTACK FRICTION path=astar(a,b) FRICTION hp-=dmg lvl=floor(exp/100) roll=rng(1,20) dt=1/60 vy+=G*dt length(v) flee() TEXTURE JUMP PLAYTEST tween(x,to,0.4) LIGHTMAP SEED DEADZONE MESH aggro+=1 draw(sprite) aggro+=1 CHEST if(near)attack() ease=t*t overlap(r1,r2) for(i=0;i<n;i++) GRAVITY ox=cx+cos(a)*d alpha-=dt fadeOut(1.0) SPRITE PARRY ATTACK score+=100 flood(x,y) atan2(dy,dx) die() if(combo>best) next=path.shift() if(near)attack() COLLIDER TICK DELTATIME lives-- SEED SWARM PLAYTEST if(roll>=15) present() emit(particles) BUGFIX MINIMAP dt=1/60 SHIELD idx=y*W+x BUFF PARALLAX ATTACK FRICTION path=astar(a,b) FRICTION hp-=dmg lvl=floor(exp/100) roll=rng(1,20) dt=1/60 vy+=G*dt IFRAMES connect(a,b) COOLDOWN combo*=2 atan2(dy,dx) LOOP CHEST rand()%6 RESPAWN ATTACK NPC dot(n,l) UPGRADE FIXEDSTEP y+=vy*dt x+=vx*dt sign(vx) DELTATIME CRIT poll(input) round(score) sleep(rest) hp-=dmg clamp(v,0,1) fixedUpdate() SKELETON IFRAMES vx*=0.9 SAVEPOINT RESPAWN dist=hypot(dx,dy) sin(t)*r pos=pos+vel play(hit) rand()%6 DUNGEON overlap(r1,r2) wave=sin(time*2) LIGHTMAP poll(input) floor(x/TILE) play(hit) lerp(a,b,t) HURTBOX play(hit) shake(0.3) atan2(dy,dx) LIGHTMAP SPAWNER WAVE dot(n,l) while(running) vy=min(vy,MAX) placeChest() IFRAMES PATCH MESH pick(table) IFRAMES connect(a,b) COOLDOWN combo*=2 atan2(dy,dx) LOOP CHEST rand()%6 RESPAWN ATTACK NPC dot(n,l) UPGRADE FIXEDSTEP y+=vy*dt x+=vx*dt sign(vx) DELTATIME CRIT poll(input) round(score) sleep(rest) hp-=dmg clamp(v,0,1) fixedUpdate() SKELETON IFRAMES vx*=0.9 SAVEPOINT RESPAWN dist=hypot(dx,dy) sin(t)*r pos=pos+vel play(hit) rand()%6 DUNGEON overlap(r1,r2) wave=sin(time*2) LIGHTMAP poll(input) floor(x/TILE) play(hit) lerp(a,b,t) HURTBOX play(hit) shake(0.3) atan2(dy,dx) LIGHTMAP SPAWNER WAVE dot(n,l) while(running) vy=min(vy,MAX) placeChest() IFRAMES PATCH MESH pick(table) rand()%6 fadeOut(1.0) GAMELOOP sleep(rest) SKELETON GAMELOOP VELOCITY AGGRO if(near)attack() abs(dx) TILESET moveTo(next) SKILLTREE y+=vy*dt lives-- spin(0.05) DEBUFF CRIT SKELETON flash(0.1) ANIMATION pick(table) aabb(a,b) KEYFRAME neighbors(x,y) vx*=0.9 OVERLAY moveTo(next) TRANSITION KEYFRAME HITSTUN vy=-JUMP moveTo(next) while(running) perlin(u,v) if(see(player)) if(near)attack() if(near)attack() hp-=dmg moveTo(next) length(v) ENEMY sin(t)*r AGGRO crit=rng()<0.1 ox=cx+cos(a)*d KEYFRAME VIEWPORT lives-- sign(vx) HEALTH aabb(a,b) MINIBOSS GRAVITY ENEMY dt=1/60 die() DEBUFF dt=1/60 SEED cos(t)*r gameOver() SPAWN RUN MANA LIGHTMAP if(see(player)) STAMINA rand()%6 fadeOut(1.0) GAMELOOP sleep(rest) SKELETON GAMELOOP VELOCITY AGGRO if(near)attack() abs(dx) TILESET moveTo(next) SKILLTREE y+=vy*dt lives-- spin(0.05) DEBUFF CRIT SKELETON flash(0.1) ANIMATION pick(table) aabb(a,b) KEYFRAME neighbors(x,y) vx*=0.9 OVERLAY moveTo(next) TRANSITION KEYFRAME HITSTUN vy=-JUMP moveTo(next) while(running) perlin(u,v) if(see(player)) if(near)attack() if(near)attack() hp-=dmg moveTo(next) length(v) ENEMY sin(t)*r AGGRO crit=rng()<0.1 ox=cx+cos(a)*d KEYFRAME VIEWPORT lives-- sign(vx) HEALTH aabb(a,b) MINIBOSS GRAVITY ENEMY dt=1/60 die() DEBUFF dt=1/60 SEED cos(t)*r gameOver() SPAWN RUN MANA LIGHTMAP if(see(player)) STAMINA UPGRADE VIEWPORT MINIMAP VELOCITY die() sleep(rest) lvl=floor(exp/100) grid[y][x]=1 VERTEX JUMP wave=sin(time*2) WALK TILEMAP RAYCAST cross(a,b) tween(x,to,0.4) tween(x,to,0.4) aabb(a,b) ease=t*t SPAWNER dt=1/60 SPAWN SHADER CRAFTING sign(vx) vx*=0.9 clamp(v,0,1) orbit(t) neighbors(x,y) LOOT EASING LEVELUP abs(dx) dot(n,l) PROFILER next=path.shift() SKELETON vy=-JUMP TILEMAP if(near)attack() atan2(dy,dx) PARTICLE if(roll>=15) carve(room) speed=8.0 LIGHTMAP state=CHASE FADE present() FRAME TILEMAP vy=min(vy,MAX) orbit(t) UPGRADE VIEWPORT MINIMAP VELOCITY die() sleep(rest) lvl=floor(exp/100) grid[y][x]=1 VERTEX JUMP wave=sin(time*2) WALK TILEMAP RAYCAST cross(a,b) tween(x,to,0.4) tween(x,to,0.4) aabb(a,b) ease=t*t SPAWNER dt=1/60 SPAWN SHADER CRAFTING sign(vx) vx*=0.9 clamp(v,0,1) orbit(t) neighbors(x,y) LOOT EASING LEVELUP abs(dx) dot(n,l) PROFILER next=path.shift() SKELETON vy=-JUMP TILEMAP if(near)attack() atan2(dy,dx) PARTICLE if(roll>=15) carve(room) speed=8.0 LIGHTMAP state=CHASE FADE present() FRAME TILEMAP vy=min(vy,MAX) orbit(t) lerp(a,b,t) CULLING KNOCKBACK y+=vy*dt FRAME CHECKPOINT wave=sin(time*2) WEBGL next=path.shift() HITSTUN PROFILER RESPAWN flee() WALK TRANSITION grid[y][x]=1 SPAWN rand()%6 if(dist<r1+r2) noise(x,y) vx*=0.9 FIXEDSTEP RESPAWN draw(sprite) MANA abs(dx) VELOCITY JUMP seed^=seed<<13 PATROL shake(0.3) PROFILER alpha-=dt speed=8.0 LEVELUP angle+=PI/60 state=IDLE spawnRoom() lvl=floor(exp/100) dt=1/60 vy=-JUMP PATROL MEMORY BIOME CHEST state=CHASE if(tile==WALL) DEADZONE hp-=dmg placeChest() MESH WAVE round(score) shake(0.3) FRAME for(i=0;i<n;i++) IDLE BOSS abs(dx) lvl=floor(exp/100) SPRITE present() flood(x,y) RESPAWN present() sleep(rest) vy=min(vy,MAX) lerp(a,b,t) CULLING KNOCKBACK y+=vy*dt FRAME CHECKPOINT wave=sin(time*2) WEBGL next=path.shift() HITSTUN PROFILER RESPAWN flee() WALK TRANSITION grid[y][x]=1 SPAWN rand()%6 if(dist<r1+r2) noise(x,y) vx*=0.9 FIXEDSTEP RESPAWN draw(sprite) MANA abs(dx) VELOCITY JUMP seed^=seed<<13 PATROL shake(0.3) PROFILER alpha-=dt speed=8.0 LEVELUP angle+=PI/60 state=IDLE spawnRoom() lvl=floor(exp/100) dt=1/60 vy=-JUMP PATROL MEMORY BIOME CHEST state=CHASE if(tile==WALL) DEADZONE hp-=dmg placeChest() MESH WAVE round(score) shake(0.3) FRAME for(i=0;i<n;i++) IDLE BOSS abs(dx) lvl=floor(exp/100) SPRITE present() flood(x,y) RESPAWN present() sleep(rest) vy=min(vy,MAX) roll=rng(1,20) if(hp<=0) PATCH SKELETON shake(0.3) VERTEX seed^=seed>>17 grid[y][x]=1 MINIMAP vy=-JUMP fadeOut(1.0) lvl=floor(exp/100) FADE WEBGL MINIMAP carve(room) PARALLAX ENEMY HURTBOX cross(a,b) BUILD JUMP exp+=50 KNOCKBACK if(roll>=15) HUD clamp(v,0,1) RAYCAST TILESET dist=hypot(dx,dy) sleep(rest) aggro+=1 floor(x/TILE) SWARM while(running) if(lives==0) PROFILER if(near)attack() DROP clamp(v,0,1) gameOver() connect(a,b) if(roll>=15) PARRY HURTBOX update(dt) WALK state=IDLE overlap(r1,r2) BIOME LOOP VIEWPORT shuffle(deck) exp+=50 seed^=seed<<13 DEADZONE GRAVITY PATROL idx=y*W+x cooldown-=dt lives-- atan2(dy,dx) state=IDLE if(dist<r1+r2) onHit(dmg) spin(0.05) moveTo(next) flood(x,y) TWEEN SHIELD VSYNC render() BUGFIX gameOver() SCREENSHAKE roll=rng(1,20) if(hp<=0) PATCH SKELETON shake(0.3) VERTEX seed^=seed>>17 grid[y][x]=1 MINIMAP vy=-JUMP fadeOut(1.0) lvl=floor(exp/100) FADE WEBGL MINIMAP carve(room) PARALLAX ENEMY HURTBOX cross(a,b) BUILD JUMP exp+=50 KNOCKBACK if(roll>=15) HUD clamp(v,0,1) RAYCAST TILESET dist=hypot(dx,dy) sleep(rest) aggro+=1 floor(x/TILE) SWARM while(running) if(lives==0) PROFILER if(near)attack() DROP clamp(v,0,1) gameOver() connect(a,b) if(roll>=15) PARRY HURTBOX update(dt) WALK state=IDLE overlap(r1,r2) BIOME LOOP VIEWPORT shuffle(deck) exp+=50 seed^=seed<<13 DEADZONE GRAVITY PATROL idx=y*W+x cooldown-=dt lives-- atan2(dy,dx) state=IDLE if(dist<r1+r2) onHit(dmg) spin(0.05) moveTo(next) flood(x,y) TWEEN SHIELD VSYNC render() BUGFIX gameOver() SCREENSHAKE
Valentyne Stories Necromancy は Mesange Arts が開発したVisual Novelジャンルのゲームで、itch.ioにて無料で配信されています。ユーザー評価は5点満点中 4.73 点(225件の評価)です。
Valentyne Stories Necromancy とは
A story driven BL visual novel in a medieval horrific universe
本ページの情報は itch.io の公開データをもとに GAMEYARD が 集計・整形したものです。価格やセール状況、対応プラットフォームは変更される ことがあるため、購入・ダウンロード前に 配信元の公式ページ で最新情報をご確認ください。
基本情報
| タイトル | Valentyne Stories Necromancy |
|---|
| ジャンル | Visual Novel |
|---|
| 開発 | Mesange Arts |
|---|
| 価格(収集時点・USD) | 無料 |
|---|
| 対応プラットフォーム | Linux、macOS、Windows |
|---|
| ブラウザプレイ | 非対応 |
|---|
| 評価スコア | 4.73 / 5(225件の評価にもとづく) |
|---|
| itch.io の星平均 | 4.88 / 5 |
|---|
| データ出典 | itch.io 配信ページ ↗ |
|---|
Valentyne Stories Necromancy についてよくある質問
Valentyne Stories Necromancy は無料で遊べますか?
Valentyne Stories Necromancy は無料で入手できます。itch.ioの配信ページから追加費用なしで開始できます(アプリ内課金や投げ銭が用意されている場合があります)。
Valentyne Stories Necromancy はどのプラットフォームで遊べますか?
Linux・macOS・Windows に対応しています。プレイにはダウンロードとインストールが必要です。
Valentyne Stories Necromancy の評価はどのくらいですか?
225件の評価をもとにしたスコアは5点満点中 4.73 点です。itch.io に投稿された星評価(平均 4.88)を、Steam 作品と同じ Wilson 信頼区間の下限に換算した値です。評価件数が少ない作品が満点で上位に来ないよう、単純な平均ではなく信頼区間の下限を使っています。
Valentyne Stories Necromancy の開発元はどこですか?
開発は Mesange Arts です。
Valentyne Stories Necromancy が好きな人におすすめ
もっと見る
itch.ioGBPatch
Grow from childhood to adulthood with the lonely boy next door in this near-fully custo…

itch.ioTeam Salvato
Will you write the way into her heart?

itch.iorobobarbie
Welcome to our server!

itch.ioTwo and a Half Studios
Enter a week long bet against the Grim Reaper to keep your soul... and maybe fall in lo…

itch.iocutiesai
He's always going to be with you...

itch.iorosesrot
You're a writer that's been (mistakenly) invited to a serial killer server. Uh oh.

itch.ioDETCc
All customers are monsters. Oh no. Oh yeah?

itch.ioBrianna Lei
Gay girls playing baseball and falling in love

itch.ioWanderlust Games
A sci-fi themed Visual Novel game.

itch.ioDeersphereStudios
beware of toxic fungi. a slow burn yandere vn (in development)

itch.iosourmilk
What could go wrong when you finally meet your online friend?

itch.ioGBPatch
A paper airplane, two new neighbors, four autumns, and a one of a kind life.