egomassive's Knytt Stories Plus mod

  • 1097 Replies
  • 444622 Views
*

Offline egomassive

  • 1852
  • 250
    • View Profile
    • egomassive games
Re: egomassive's Knytt Stories mod
« Reply #60 on: October 02, 2011, 19:43:04 »
I've made a new release today because I've just finished implementing the greatest improvement yet, a map system! As you may know, holding E will highlight the edges of the screen. Double tapping E or pressing M will now open the map. It tracks rooms as you progress, represented as white boxes. The map saves and loads, and your progress is regressed to your last save on death. I've added a Map power to the standard powers and keys. This gives you the ability to see rooms you haven't entered yet.

I want your input. How do you like the appearance? Do you think the number of rooms visible is adequate? Any thoughts, please share them with me.

I also finished the Golden Creatures and OCO's, but they both need testing and there are many problems with the GC's, so finished is a relative term.

Picture 1=Normal screen with Map power-up visible.
Picture 2=Map overlaying the normal screen showing visited rooms.
Picture 3=Unvisited rooms are visible with the Map power collected.

*

Offline sergiocornaga

  • 1286
  • 131
    • View Profile
    • Sergio's Games
Re: egomassive's Knytt Stories mod
« Reply #61 on: October 02, 2011, 19:58:13 »
The map system is a nice addition! Since the rooms on the map can convey the same amount of information using much smaller dimensions, I'd say the map could be scaled down (and thus display a larger area) quite easily. I don't know if this would require more processing power or anything, if so that would be a good reason to keep it how it is, otherwise a few more visible rooms would probably be helpful.

*

Offline egomassive

  • 1852
  • 250
    • View Profile
    • egomassive games
Re: egomassive's Knytt Stories mod
« Reply #62 on: October 02, 2011, 20:24:16 »
The map is a pretty slim addition code wise. I modeled it after the expandable map in the editor. That produces 2400 rooms in an instant. This map can be just as fast at 1200 rooms. Scaling up will be a piece of cake too. Bulk wise, I'm a little worried about saving the progress map. I'm saving it as a compressed bin file in the save directory. Basically, I'm adding all the room headers the player encounters and nothing else. To help that out I made it so it only saves if it's been altered --the player entered new rooms since last save.

That's another thing I'd like to ask. I went with a binary array because it was best/simplest option I saw, but I don't know much about the data storage options available in MMF2. Does anyone know if this was a good approach, or if there's a better one.

Here are some other map sizes I just made. The originals above show 13x13 rooms. These show 19x19 and 31x31.

Edit: 02Oct2011: I found a game breaking error. If you started a new application it wouldn't copy the default save .ini Meaning you started on screen x0y0 position x0y0. It worked fine when testing from within MMF2. Apparently It didn't like me creating the map's .bin file directly after copying the save .ini. Swapping the order of these instructions fixed it. Go to the top post to get the fixed version, KS12ego2b.

This version's map is 25x25 which I think is a pretty good size for the map. I darkened the unvisited rooms a bit and changed the appearance of the center room to make it more prominent.
« Last Edit: October 03, 2011, 05:34:25 by egomassive »

*

Offline GrayFace

  • 805
  • 61
    • View Profile
    • my site
Re: egomassive's Knytt Stories mod
« Reply #63 on: October 03, 2011, 15:18:18 »
I also like your idea of minimap, so I've tried to implement it in an interesting way. Here's what I got so far :crazy: Looks like it broke whole sprites cache of MMF2 or whatever it uses. This is a screenshot from The Machine.
« Last Edit: October 03, 2011, 16:01:46 by GrayFace »

*

Offline egomassive

  • 1852
  • 250
    • View Profile
    • egomassive games
Re: egomassive's Knytt Stories mod
« Reply #64 on: October 04, 2011, 00:32:02 »
@GrayFace: I think you're drawing the room tiles into the background. No matter what frame layer you do that at it draws to the bottom of the stack, or on top of layers 0 to 3 behind the objects. I kept all my tiles as objects.

So, I think I've really solved the loading bug from before. On further testing I discovered it was still there and only happened part of the time. It turns out that when a save slot was erased but there was no map .bin, it threw an error that could prevent copying the default save game .ini. I'm going to test it more before I re-upload it. But, that's not the only problem. I was testing the map system on a larger game and the saving was very slow. I have an idea for manually compressing the map data but executing it will be a mind bender.

Edit: I've uploaded a version that fixes new game loading after old games were erased.


Edit: I've uploaded yet another version that dramatically increases save/load time. Get KS12e2d in the opening post.
« Last Edit: October 04, 2011, 07:28:52 by egomassive »

*

Offline GrayFace

  • 805
  • 61
    • View Profile
    • my site
Re: egomassive's Knytt Stories mod
« Reply #65 on: October 04, 2011, 11:27:33 »
@GrayFace: I think you're drawing the room tiles into the background. No matter what frame layer you do that at it draws to the bottom of the stack, or on top of layers 0 to 3 behind the objects. I kept all my tiles as objects.
No, it's a combination of loading object frame and replacing color. I've just tested it without map code:
1) I create two copies of the same Active object.
2) I load frame 0 from a file and then do some color replacement and set frame 0 for the first object
3) I load frame 1 from the same file and then do some color replacement and set frame 1 for the second object
As a result the second object may show anything, for example a tile from map.
I can't seem to find a workaround for this bug, so for beautiful minimap I'll need an extension that would allow actual drawing, because that's what I was trying to achieve with color replacement. I've also run into save/load times problem. You can see my idea of minimap in the attachment. Now I'm thinking I could at least paint minimap squares with the average color of corresponding screen, which I can get from my extension.
Another note about color replacement: it depends on color depth. In 16-bit colors when you replace 0x000000 with something you would also get 0x000001 - 0x000007 replaced for example.
« Last Edit: October 04, 2011, 12:58:25 by GrayFace »

*

Offline egomassive

  • 1852
  • 250
    • View Profile
    • egomassive games
Re: egomassive's Knytt Stories mod
« Reply #66 on: October 04, 2011, 20:14:13 »
Your drawing idea looks nice, but if you show the collision layer then you will reveal all the hidden passages. The average color idea is something I thought of as well, but it may not go so easily. A screen that is half blue and half red could come out fuchsia. Then, I thought about sampling the center of the gradient for a color. I may still pursue that possibility, but I do like the minimalistic look of my current map system.

The most important feature a map could have is not interfering with gameplay. If saving and loading cause noticeable frame rate drops, then it's no good. I tested my map at 3000 screens and didn't notice any performance loss. The map save file was only 7KB at 3000 rooms, so I think there's room for a few bytes of info, like a color.

*

Offline LPChip

  • You can only truly help other people by allowing them to fail.
  • 3510
  • 138
  • Excel at the thing you're the best at!
    • View Profile
    • LPChip Interactive
Re: egomassive's Knytt Stories mod
« Reply #67 on: October 04, 2011, 23:49:22 »
What if you calculate the greyscale value of the screen and show all those pixels instead? You could take the color in the exact center. That way, no hidden passage should be visible, but badly designed levels will just show a simple map like in the OP (which is the alternative anyway)

EDIT: you don't actually have to use the greyscale value at all. Just take that color and use it, then alternatively blend it with the background.
on the left, above my avatar.

MODPlug Central Forum
"If I tried to kill you, I'd end up with a big fat hole through my laptop." - Chironex

*

Offline GrayFace

  • 805
  • 61
    • View Profile
    • my site
Re: egomassive's Knytt Stories mod
« Reply #68 on: October 05, 2011, 09:04:11 »
Here's approximately how it would look with average color.

*

Offline LPChip

  • You can only truly help other people by allowing them to fail.
  • 3510
  • 138
  • Excel at the thing you're the best at!
    • View Profile
    • LPChip Interactive
Re: egomassive's Knytt Stories mod
« Reply #69 on: October 05, 2011, 12:57:27 »
And what if you do that on a pixel based instead of square based, like your first screenshot that shows the layout of the cavern based on layer 3 content?
on the left, above my avatar.

MODPlug Central Forum
"If I tried to kill you, I'd end up with a big fat hole through my laptop." - Chironex

*

Offline GrayFace

  • 805
  • 61
    • View Profile
    • my site
Re: egomassive's Knytt Stories mod
« Reply #70 on: October 05, 2011, 18:37:55 »
That would be cool. Looks like these extensions would be enough for that: Overlay Redux + Active Overlay + Get Pixel Colour Object. There's also Viewport Object that may be interesting.
The bad thing is that save game size would be much bigger with per-pixel drawing. 750 bytes per visited screen. 0.75 MB per 1000 screens... Not dramatic, although I won't be able to keep it in ini like I wanted. Binary storage should work fine I guess.

*

Offline egomassive

  • 1852
  • 250
    • View Profile
    • egomassive games
Re: egomassive's Knytt Stories mod
« Reply #71 on: October 09, 2011, 04:31:36 »
Progress update: I've now added the 100 collectable coins, finished tweaking the behaviors of Golden Creatures, and double checked the placement of Override Custom Objects. Next up, OCO support for bank 0, recoloring Golden Creatures (they still aren't golden), and adding a shift function allowing coins to be used for commerce.

Edit: I experimented with coloring the map and discovered that replacing the colors of an active object doesn't work the way I thought it did. I'd have to use a method like the ones described by GrayFace and LPChip above to color the map. I'll probably leave it as is though. I'm not sure I'd like it better with color.

Furthermore, my new understanding of color replacement revealed that changing the color of nature effects broke them. The yellow rain in the example level would appear with the normal rain object once the yellow rain had been seen. I've fixed it though. They'll be working properly in the next release.
« Last Edit: October 11, 2011, 11:14:27 by egomassive »

*

Offline PeppyHare4000

  • 445
  • 4
  • My time in this forum is over...
    • View Profile
Re: egomassive's Knytt Stories mod
« Reply #72 on: October 16, 2011, 22:51:03 »
I am against the idea of having a map because it can reveal secret areas easily...

*

Offline egomassive

  • 1852
  • 250
    • View Profile
    • egomassive games
Re: egomassive's Knytt Stories mod
« Reply #73 on: October 17, 2011, 16:14:24 »
I am against the idea of having a map because it can reveal secret areas easily...
By default, my map system will only show where you've been already. The map power-up must be included in a level and found by the player for unvisited areas to show. It's a lot like the map system in any Metroid or Castlevania game. In theory it only records what a player could track with graph paper or a good memory.

I can't see the map as anything other than an improvement, something Knytt Stories should have had from the start. But, since it hasn't been there from the start old levels were not designed for good mapping. I know I've tried to track my progress in a level in the past only to discover that the rooms overlapped. Most existing levels, including my own, will make little sense on a map. There are simple tools in my mod to allow good mapping despite warps and shifts, but old levels obviously don't make use of them. Also, many levels try to lose or confuse the player as they traverse the winding paths. Not so easy to do when the player has a map.

The point is, I think maps should be on by default for any level, but if many feel as PeppyHare4000 does, then maybe it should be off by default. Then, level designers and or cheaters could turn it on, or I could make it a menu option that remembers it's setting. Opinions please.

Updates: Golden creatures are now gold in color. And commerce with coins is now possible. Both will be available in the next update.

*

Offline BloxMaster

  • 363
  • 26
  • Master of the Bloxes!
    • View Profile
Re: egomassive's Knytt Stories mod
« Reply #74 on: October 18, 2011, 03:18:42 »
I haven't looked at any KS mods since stopping my own (KSA, which is actually embarrassing for me to admit), and although I could probably talk a lot about how impressed I am with current mods, I'm just going to limit it to the immediate subject:

Map views. I love the idea! But I also must say that there's a few little things that I want to point out. Firstly; shifts and warps. This is going to make it very confusing or even impractical for levels using shifts or warps. Just because physical location is thrown out the window. You could easily be a room beside the one you were just at (think shift animations or boss-fights), or halfway across a map with no orientation at all, since you haven't 'visited' any of the rooms, but yet- they might be only a little different than the rooms you have visited. In fact, they might -be- the same rooms you were already in- but since they are in another location, it doesn't show up. For this reason I think it'd be best to be able to turn off the map view, maybe via a per-save setting? The only other thing I can think of is maybe make it a power-up but that's not what you have in mind, and I can't think of a lot of levels really -needing- to use it...so they wouldn't.
I do think leaving it -on- by default is not harming anything, though.

Now, my second and last note..is that it's useful- but very plain. It shows you what screens you have been to...but there's no possible way to identify them as-is. If you are in the middle of a lot of visited rooms, how can you tell what room is say...two away from you? The map doesn't give you many clues in this case.

Anyway, keep up the good work!