Roguelike port?

Yes. game.display.loadTileset(const uint8_t*) along with many other functions has already been added. I have been working hard. There is going to be automatic scrolling for the tile buffer etc. etc.

Users are also going to be able to “roll their own” tilebuffer and separately control tile colors. You can create “an explosion” or “fire” in the tile world.

Edit: and I am not doing this just to help this project. There is a very famous guy making a really great game for Pokitto who also needs this tile graphics mode. But that is a secret!!

3 Likes

This is awesome to hear. I’m interested in learning about this tilemap drawing method. Currently I made my own something like this:

//Defined the map as a simple array above this

void DrawMap(int x, int y){
    for (int i=0; i<MAP_WIDTH;i++){
        game.display.drawBitmap(x+(i%MAP_WIDTH)*TILE_SIZE, y+(i/MAP_WIDTH)*TILE_SIZE, sprite[map[i]]);
    }
}

So your saying there will be built in stuff for drawing maps efficient?

1 Like

There will be built-in support for tile-based modes. You can still roll your own. Its just a bunch of functions to make tile-based systems easier to make.

Edit: yes, these modes will throw data straight from the tilemaps to the LCD VRAM, no buffer in between. Meaning they are optimized for maximum performance.

1 Like

Oh I see. So will these modes and functions be more efficient for the hardware or anything than doing something like I did above? Because if not I think making my own would suit my own needs since I’d understand all of it.

EDIT after jonnes edit:
Gotcha. That makes sense.

1 Like

Consider these tile modes more like “background maps” that are used in Gameboy/NES type systems. If you want lots of animation / very dynamic graphics, then realize that background maps come directly from the flash. They are static.

So yes, do roll your own system.

These tilemap systems are needed because there are 2 interesting projects heading for Pokitto and they both need tilemaps.

1 Like

@adekto @VonBednar

Made a quick comparison using Excel to demonstrate the difference in view area based on tile sizes

So maybe 14x14 is a good compromize ?

1 Like

I think so. Sure, we are losing a bit of visible area, but the sprites can be a little bit more chunky. Here’s a quick update (rat to be done ;))

I am using (almost) the same layout for all those screens. The only diference is the door is a bit closer in the 14x14 and some characters moved a bit,

Edit: BTW, I found a roguelike that uses a scale similar to ours 22x22, but it is about digging the tiles, so the cramped claustrophobic feeling is excused there.

3 Likes

14x14 it shall be. 10 pixels left for UI on side of tile area, 8 pixels on top or bottom or however.

Could we make a sketch about the UI ?

@adekto: you agree with the 14x14 ?

Edit: tileset should therefore be 1-bit BMP and 224x224 pixels in dimensions

Edit2: characters should have facing left/right as separate characters (and animation if wanted)

Edit3: maybe use some sort of common charset for what char is what (in case we use an existing ASCII roguelike as base)

Edit4: you can also do this as a 14x14 font on a font editor. That could also be an easy way to do it.

1 Like

Hehe, you just answered basically all the questions I had (especially, facing).

Never made a roguelike, but I will do some research on charsets. We can stick to letters for enemies, # for a wall and @ for the character etc.

I think it will be easier for me to make it as a bmp, so I won’t have to redraw any sprites and pyxeledit (what I am using for pixelart) is great for working with tilesets.

How do I make the UI if I want to use graphics? Should they be 14x14 tiles that do not stretch all the way (so 10px wide for the side area)?

Here comes yet another cool thing: Pokitto can draw pixels, lines, print text and draw bitmaps directly onto the display and bypass the screenbuffer. The only caveat is that it is not as fast as drawing via the screenbuffer.

Edit: this is also implemented in the simulator. The Pokitto logo in the beginning uses this feature. It is shown before screenbuffer/gfx system is initialized

This means you can do anything you like in the spare areas, even use colors that are not in the palette

1 Like

Awesome, especially the use of color, as it will give us a bit of flexibility.

Also, do we want to make a generic fantasy roguelike or add some story to it? I am toying with the idea of adding corrupted/mutated enemies (akin to chaos in Warhammer or ADOM) and using color for the enemies to show how mutated/corrupted they are. I also have an idea of a backstory that explains that. Opinions?

1 Like

IDK to be honest. What would be cool is to have something ready before the #cgajam deadline and take part using a windows/linux sim entry. Thats the reason why I was thinking about using an existing roguelike with open source as base

Edit: though, I get good “classic” vibes from the tiles you have drawn so far. Dumb and corrupt goblins sounds good

Edit “Taxman RL - corrupt goblin king has failed to pay his dues year after year. As an officer of the imperial tax revenue, your task is to retrieve the owed amount with interest from the halls of the stinking caverns of king goblin.”

1 Like

That works for me. I can definitely crank out enough sprites for basic roguelike before deadline. Release a CGA jam version and later work on an expanded version with more colors and other mechanics.

It depends if @adekto is up for it as a programmer, because I will be no help there.

EDIT: Death & Taxes RL - every year you need to pay the taxes to the king, so you venture into the dungeon to collect the required amount (ticks the "history repeats itself theme). Goal, collect X gold and exit the dungeon. Then next year comes up, you need to venture into the dungeon again, now for even more gold. There are only two certain outcomes, either you pay your taxes or you’ll die :wink:

2 Likes

I have some experience with procgen dungeons if you guys want some help!

1 Like

yes plz though you know the style we going for it looks like we wanna use every tile in the map
thats why i preposed before a modified recursive division maze algorithm

as for map draw a double for loop might be easyer (and less math intensive)

for (int viewY = playerY-6; viewY < playerY+6; viewY++){
    for (int viewX = playerX-7; viewX < playerX+7; viewX++){
        game.display.drawBitmap(viewX*14, viewY*14, sprite[map[viewY][viewX]]);
    }
}
```
i dont think theres any drawback from using a 2D array right?
2 Likes

I am happy for all help @trelemar.

Here’s a quick question for the programmers. Would you rather have the tile numbers follow ASCII like a traditional roguelike would (so # for wall would be tile number 35 etc.) or create a new order based on usability (so things like walls, objects, monsters would all be kept together)?

Also, how much content you would be able to implement for CGA jam? Should we just do walls and monsters (how many monsters?), or should I work on some item, trap and other sprites?

Anyway, here’s a quick mockup of CGA. I am a bit busy today, but I will work on UI and more tiles in the afternoon (I am in EST timezone)

1 Like

I’d like to report that 14x14 mode is ready and awaiting your tileset

1 Like

If anyone has a good idea on where / how we make the basic gameplay (dungeon generation & interaction with objects and enemies) then please chime in. Time is running out to take part in #cgajam and I’d really like us be in it.

I was thinking of modding/hacking calcrogue but I don’t seem to have enough time to dig into it.

i would just keep them in diferent sprite pools enviorment seperating enteties
since thats how its going in the code aswell map has a 2D array of every tile and enteties are in an indexed array or something

on tile art can you try more colors per sprites like idk goblin have white swords or shields
rats tale could be a diferent color, just an example idk if it will look any good

if you also want to do some gui stuff, idk what the sidebar was going to end up as, but mostly the windows (idk if people liked mine)

1 Like

@VonBednar @adekto For my roguelike I made before I generated a maze, then placed random rooms throughout the map, then shrunk the maze corridors so there weren’t too many dead ends. I can come up with a function tonight that will return a dungeon as a 2d array where 0’s are floors and 1’s are walls if you guys want. I’ll plan on feeding it a map width and height, rooms amount, and the corridor shrink factor.

1 Like