Decoration and furnishing for dungeon

Decoration and furnishing for dungeon

This month, we focus on adding enemy ability and decorating generated dungeon. As Cogmind’s author mentioned, most traditional roguelike has pretty barren environment. In our game, Umbraseal, we use two process to make dungeon more interesting: Decoration for building structure Placing furnishing by area For decorating building structure, we define stage theme config by Tiled editor. Currently, each layer in tiled map present different part of dungeon skin. For wide space like wall or floor, their config layer allow multiple…

Read More Read More

Danmaku made by Haxe

Danmaku made by Haxe

To build a bullet hell / roguelike game we need both dungeon generator and bullet pattern engine. In Tunneling Maze Generator, we build a framework for dungeon generator. Now we need to decide what kind of bullet pattern engine to use. AFAIK, there are many types of bullet pattern engine. BulletML which is used by Enter the Gungeon; Touhou Danmakufu which can make Touhou Project-style game; and other engines like STGBuilder, LuaSTG, DanmakU .etc has their own followers. In some way, all these engines use fire-subfire model. In this model, each shot is usually…

Read More Read More

Tunneling Maze Generator

Tunneling Maze Generator

In our new game, we want a dungeon generation algorithm for bullet hell combat. Which means this algorithm should: Generate enough open space Prevent narrow corridor Most Roguelike games generate room first and use corridor to connect them. The narrow corridor and door can improve exploring experience but hurt dodging ability. So we choose Tunneling Algorithm instead of classic method like Space Partition or Graph Based. Although the generated structure of Tunneling Algorithm might be too boring, we apply Agent Based method to add more dynamic behavior and…

Read More Read More

Manage data by black magic

Manage data by black magic

In the past month, I found it is hard to manage data for the wide variety of  Entity. Although Unity already provides resource manage system, but it is not designed to handle object data. Components in ECS usually use a reference id to access resources or other components, so the data management tool should consider reference id as resource. Here is a list of features that tool should have: Can define schema to ensure data type ( make sure a field is Int /…

Read More Read More

Reflect is just too slow

Reflect is just too slow

After reducing collision objects in previous article and optimize memory usage, I think it is time to do some pressure test. So the entire scene is frozen when spawning 1440 bullets. The profile info looks like: The profile shows that every access operation rely on ‘Type.getClassName’ function, because Entity object uses [Class => value] Map to store components in traditional ECS framework. But Reflect is very slow, it takes 18% execution time just for adding components to Entity. There is second part: Because Bullet Entity use…

Read More Read More

Reducing AABB by combining tiles

Reducing AABB by combining tiles

Recently I make a terrible mistake, create AABB collision rectangle for each tile, in my wip game. The collision system contains 3941 object and takes 63% of execution time. The debug draw looks like a spider web: The most straightforward method is merging small tiles into larger rectangle to reduce total collision object number. This problems is very similar to Algorithm for “healing” multiple rectangles into a smaller number of rectangles . The algorithm has to step: for each row combine continuous tiles into stripe shape…

Read More Read More

The motivation behind Microsoft acquiring GitHub

The motivation behind Microsoft acquiring GitHub

Picture a future that every machine Windows server and all company pay for Microsoft. It sounds disgusting but is actually ongoing process. According to recently the effort Microsoft puts into Linux, Kubernetes and Docker, it becomes totally achievable future by following two concepts : Makes Windows docker image can run on Linux seamlessly Improve the management tools of  Kubernetes to guide users to use Microsoft solution Through docker image, every server in the whole world is ready to run Microsoft solution. Then…

Read More Read More