(shouting)

Episode 2 Theme/Town Thread

The second SMBX collab!
User avatar
ztarwuff
What the heck is a flair and why am I being asked to write one for my profile?
Posts: 550
Joined: 10 years ago
Location: Within 2 miles of the Imperial Crypt of Napoleon III

Re: Episode 2 Theme/Town Thread

Post by ztarwuff »

Even though I read it a few minutes, I cannot remember who suggested that towns should serve as mini Castles of No Significance. However, I agree.

It was absurd that all the hints were located in one place. World specific hints should be portioned off into their respective worlds and towns are the perfect location to hold them. Have all the unlockables split amongst the towns, giving more incentive to visit.

Maybe bits of the postgame itself could be hidden away in the towns?
User avatar
Hoeloe
A2XT person
Posts: 1016
Joined: 12 years ago
Pronouns: she/her
Location: Spaaace

Re: Episode 2 Theme/Town Thread

Post by Hoeloe »

Hoeloe wrote: I'm just sorting out a slightly neater interface at the moment...

Okay, new code:

Code: Select all

raocoins = 0;
lastRaocoins = -1;
levelFinished = false;

function onLoad()
  loadImage("raocoins.bmp", 999999, 0xFF00FF);
  placeSprite(1,999999,234,47);
end

function onLoop()
   local rcs = findnpcs(274, -1);
  local raocounter = 0;
  for key,value in pairs(rcs) do
		raocounter = raocounter + 1;
  end
	
  if(mem(0x00B2C59E,FIELD_WORD) ~= 0) then --level is ending
	printText("RaoCoins:"..tostring(UserData.getValue("Coins")),1,134,47);
	if(levelFinished == false) then
		UserData.setValue("Coins", UserData.getValue("Coins") + raocoins);
		UserData.save();
		levelFinished = true;
	end
  else
	printText("RaoCoins:"..tostring(UserData.getValue("Coins")+raocoins),1,134,47);
	if(raocounter < lastRaocoins) then
		raocoins = raocoins+lastRaocoins-raocounter;
	end
	lastRaocoins = raocounter;
  end
end
And the image: Image

Getting the player's raocoins is, as before:

Code: Select all

UserData.getValue("Coins")
And, when changing them (e.g. by buying something - getting them in levels is handled by this code), don't forget to update the same value:

Code: Select all

UserData.setValue("Coins", newCoins);
UserData.save();
Image
Image
Image
Image
Image
User avatar
shaman
Posts: 6
Joined: 14 years ago

Re: Episode 2 Theme/Town Thread

Post by shaman »

let's try to avoid too many complications.

about currency, I like the idea. each world could have a shop, or something like that, it's a good idea
is this videogames?
User avatar
Hoeloe
A2XT person
Posts: 1016
Joined: 12 years ago
Pronouns: she/her
Location: Spaaace

Re: Episode 2 Theme/Town Thread

Post by Hoeloe »

shaman wrote:let's try to avoid too many complications.

about currency, I like the idea. each world could have a shop, or something like that, it's a good idea
The currency code is pretty much all there, but I've just realised that I've made it draw in the same place as the leek counter, like an idiot. We could perhaps shift it next to the coins counter...
Image
Image
Image
Image
Image
Kil
Posts: 13
Joined: 15 years ago

Re: Episode 2 Theme/Town Thread

Post by Kil »

Is there some reason you don't just save when collecting the coin? Also you might want to use a var name more descriptive than "Coins", since all of those variables are global to everyone.
DON'T PM me. Ask your question in the help thread so everyone can be answered.
User avatar
Lunikyuu
I forgot what I was going to put here after MaGL X3
Posts: 303
Joined: 10 years ago
Location: soup

Re: Episode 2 Theme/Town Thread

Post by Lunikyuu »

Kil wrote:Is there some reason you don't just save when collecting the coin? Also you might want to use a var name more descriptive than "Coins", since all of those variables are global to everyone.
I'm assuming it's because the dragon/raocoins respawn when the player dies, meaning the player could farm them by dying repeatedly in a level, unless there's a code I don't know about that makes them stay gone permanently after collecting them. It would be nice if the midpoint saved them though, so that the player doesn't have to backtrack to get coins they've already gotten. Maybe there could be a limit of 5 that can be saved after beating a level so the player can't exploit the fact that they respawn after the midpoint.
User avatar
Hoeloe
A2XT person
Posts: 1016
Joined: 12 years ago
Pronouns: she/her
Location: Spaaace

Re: Episode 2 Theme/Town Thread

Post by Hoeloe »

Kil wrote:Is there some reason you don't just save when collecting the coin? Also you might want to use a var name more descriptive than "Coins", since all of those variables are global to everyone.
Mainly to avoid the player farming by repeatedly dying or quitting the level via the pause menu. Renaming the variable might be a good idea.

As for the midpoint thing, I can easily get it to save when the midpoint is collected, but checking a max or 5 per level, or saving which you've collected, is a lot more complicated.
Image
Image
Image
Image
Image
User avatar
Lunikyuu
I forgot what I was going to put here after MaGL X3
Posts: 303
Joined: 10 years ago
Location: soup

Re: Episode 2 Theme/Town Thread

Post by Lunikyuu »

Hoeloe wrote: As for the midpoint thing, I can easily get it to save when the midpoint is collected, but checking a max or 5 per level, or saving which you've collected, is a lot more complicated.
Ah well, they'd still have to backtrack to get any extra coins out of it, and they wouldn't be able to farm them infinitely, so I guess it wouldn't be too bad if you decide to go with that.
Kil
Posts: 13
Joined: 15 years ago

Re: Episode 2 Theme/Town Thread

Post by Kil »

You could save which coins have been collected if you convert each coin collection into a deterministic hash (x pos y pos and level name rolled into one string should do it) and save that to the variable bank. Then when the level loads you can loop over npcs and do the same hash on each dragon coin, checking if their hash value is in the bank, and if it is, delete that coin from the level. But I still think a new currency is a horrible idea so I don't even know why I'm suggesting this.
DON'T PM me. Ask your question in the help thread so everyone can be answered.
User avatar
Hoeloe
A2XT person
Posts: 1016
Joined: 12 years ago
Pronouns: she/her
Location: Spaaace

Re: Episode 2 Theme/Town Thread

Post by Hoeloe »

Kil wrote:You could save which coins have been collected if you convert each coin collection into a deterministic hash (x pos y pos and level name rolled into one string should do it) and save that to the variable bank. Then when the level loads you can loop over npcs and do the same hash on each dragon coin, checking if their hash value is in the bank, and if it is, delete that coin from the level. But I still think a new currency is a horrible idea so I don't even know why I'm suggesting this.
That's feasible, but would be a huge drain on the save filesize, and wouldn't necessarily work if the raocoins were moving.

Why do you think a currency is a bad idea? I quite like the idea of giving some actual purpose to collecting the raocoins. In the original game, it's supposed to be for a life, but that's basically a non-issue in this game, so they're pretty much pointless as it currently stands.

Also, mended code to move the raocoin counter and save them on midpoint collection:

Code: Select all

raocoins = 0;
lastRaocoins = -1;
lastMPs = -1;
levelFinished = false;

function onLoad()
  loadImage("../raocoins.bmp", 999999, 0xFF00FF);
  placeSprite(1,999999,564,26);
end

function onLoop()
  local rcs = findnpcs(274, -1);
  local mps = findnpcs(192, -1);
  
  local raocounter = 0;
  
  for key,value in pairs(rcs) do
		raocounter = raocounter + 1;
  end
  
  local mpcounter = 0;
  
  for key,value in pairs(mps) do
		mpcounter = mpcounter + 1;
  end
  
  if(mpcounter < lastMPs) then --collected midpoint
		UserData.setValue("WorldRaocoins", UserData.getValue("WorldRaocoins") + raocoins);
		raocoins = 0;
		UserData.save();
  end
  
  lastMPs = mpcounter;
	
  if(mem(0x00B2C59E,FIELD_WORD) ~= 0) then --level is ending
	printText(tostring(UserData.getValue("WorldRaocoins")+raocoins),1,632,27);
	if(levelFinished == false) then
		UserData.setValue("WorldRaocoins", UserData.getValue("WorldRaocoins") + raocoins);
		UserData.save();
		levelFinished = true;
	end
  else
	printText(tostring(UserData.getValue("WorldRaocoins")+raocoins),1,632,27);
	if(raocounter < lastRaocoins) then
		raocoins = raocoins+lastRaocoins-raocounter;
	end
	lastRaocoins = raocounter;
  end
end
This should probably all go in the lunaworld.lua file.
Image
Image
Image
Image
Image
Kil
Posts: 13
Joined: 15 years ago

Re: Episode 2 Theme/Town Thread

Post by Kil »

I forgot someone might be crazy enough to make moving dragon coins. If you were to do that, it could be a rule stipulation that none of them should be on moving layers and such. An even crazier way to handle it that would support moving coins is, during level load, create a loop that checks all dragon coin positions on level load, and write those coordinates back into the NPC, into some of the unused NPC memory locations. Later, you could check those for the hash instead of the "current" position. basically - a makeshift "original position" memory field inside each coin.
Hoeloe wrote: Why do you think a currency is a bad idea? I quite like the idea of giving some actual purpose to collecting the raocoins. In the original game, it's supposed to be for a life, but that's basically a non-issue in this game, so they're pretty much pointless as it currently stands.
My issues
1) There's already 100 levels made with no consideration that this system will be there
2) Regular coins become even more useless
DON'T PM me. Ask your question in the help thread so everyone can be answered.
User avatar
Hoeloe
A2XT person
Posts: 1016
Joined: 12 years ago
Pronouns: she/her
Location: Spaaace

Re: Episode 2 Theme/Town Thread

Post by Hoeloe »

Kil wrote:I forgot someone might be crazy enough to make moving dragon coins. If you were to do that, it could be a rule stipulation that none of them should be on moving layers and such. An even crazier way to handle it that would support moving coins is, during level load, create a loop that checks all dragon coin positions on level load, and write those coordinates back into the NPC, into some of the unused NPC memory locations. Later, you could check those for the hash instead of the "current" position. basically - a makeshift "original position" memory field inside each coin.
Yeah that's potentially possible, but I have seen some issues looking up NPCs on loading, which might cause position errors that could break things. I'm not sure it's necessary to be honest. The current system means you can collect coins, hit the midpoint, and then quit out, but you can't keep dying and collecting more, because you can only collect the midpoint once.
Kil wrote: My issues
1) There's already 100 levels made with no consideration that this system will be there
2) Regular coins become even more useless
1) That's why I thought Dragon Coins might be a good idea for the currency system. There are specific rules as to how many you can get in a level (0 or 5), and they're usually not just in your path, so take a little effort to get. Unlike regular coins, where some levels have hundreds easily available, they aren't something you can easily farm. I think this system will work to how the levels are designed already, rather than forcing people to change how they design levels.
2) They're no more useless than they already are in my opinion - completely and utterly useless.
Image
Image
Image
Image
Image
Kil
Posts: 13
Joined: 15 years ago

Re: Episode 2 Theme/Town Thread

Post by Kil »

I feel like if you're going to have a second respawning currency for some reason, it does devalue coins, which would be the natural choice for a respawning currency and are already set up as one. Now if they're going to fill the niche as somewhere between leek and coin as a permanent collectible it makes somewhat more sense, but also... that coin counter is totally going to ruin the custom HUD of my level.
DON'T PM me. Ask your question in the help thread so everyone can be answered.
User avatar
Hoeloe
A2XT person
Posts: 1016
Joined: 12 years ago
Pronouns: she/her
Location: Spaaace

Re: Episode 2 Theme/Town Thread

Post by Hoeloe »

Kil wrote:I feel like if you're going to have a second respawning currency for some reason, it does devalue coins, which would be the natural choice for a respawning currency and are already set up as one. Now if they're going to fill the niche as somewhere between leek and coin as a permanent collectible it makes somewhat more sense, but also... that coin counter is totally going to ruin the custom HUD of my level.
Coins aren't set up as a respawning currency at all. They max out at 99 and then reset. We're looking at something you can collect infinitely to purchase hints and things. They aren't leeks, there aren't a limited amount, but they also aren't coins, as no matter what you do, you keep them between levels.

I put the coin counter somewhere that wasn't used by the default HUD. It wouldn't be hard to move it. Might I suggest below the score?

EDIT: Added a variable to move the raocoin counter, and set it to be underneath the score, which hopefully will save people's custom HUDs.

(These are just some of the changed lines)

Code: Select all

raoCoinPosition = {x = 472, y = 66}

function onLoad()
  loadImage("../raocoins.bmp", 999999, 0xFF00FF);
  placeSprite(1,999999,raoCoinPosition.x,raoCoinPosition.y);
end


function onLoop()
  if(mem(0x00B2C59E,FIELD_WORD) ~= 0) then --level is ending
	printText(tostring(UserData.getValue("WorldRaocoins")+raocoins),1,raoCoinPosition.x+61,raoCoinPosition.y+1);
  else
	printText(tostring(UserData.getValue("WorldRaocoins")+raocoins),1,raoCoinPosition.x+61,raoCoinPosition.y+1);
  end
end
Last edited by Hoeloe 9 years ago, edited 1 time in total.
Image
Image
Image
Image
Image
Kil
Posts: 13
Joined: 15 years ago

Re: Episode 2 Theme/Town Thread

Post by Kil »

Hoeloe wrote:
Kil wrote:I feel like if you're going to have a second respawning currency for some reason, it does devalue coins, which would be the natural choice for a respawning currency and are already set up as one. Now if they're going to fill the niche as somewhere between leek and coin as a permanent collectible it makes somewhat more sense, but also... that coin counter is totally going to ruin the custom HUD of my level.
Coins aren't set up as a respawning currency at all. They max out at 99 and then reset. We're looking at something you can collect infinitely to purchase hints and things. They aren't leeks, there aren't a limited amount, but they also aren't coins, as no matter what you do, you keep them between levels.
I mean, why not turn coins into the currency then? It's effectively making dragon coins into coins #2 when you already have coins #1 being unused. They would work much better as something more special than that.
DON'T PM me. Ask your question in the help thread so everyone can be answered.
User avatar
Hoeloe
A2XT person
Posts: 1016
Joined: 12 years ago
Pronouns: she/her
Location: Spaaace

Re: Episode 2 Theme/Town Thread

Post by Hoeloe »

Kil wrote: I mean, why not turn coins into the currency then? It's effectively making dragon coins into coins #2 when you already have coins #1 being unused. They would work much better as something more special than that.
Primarily because it's almost impossible to know how many coins someone will get in a level. The problem is that these will be used to buy things, and there are a lot of levels that have either very few coins, or far too many. Imagine an item that is supposed to be reasonably expensive to buy with coins. In most of the levels around it, there are a sensible number of coins that you can use to rack up enough. Then there's one level that gives you 1000 coins practically for free. This completely devalues the currency. You COULD go around collecting coins as you go, or you could just farm at this one level.

The problem is that coins aren't regulated. Dragon coins are. There was already a rule in place limiting levels to 5 dragon coins, which means this issue is already dealt with without having to introduce more restrictions. If we used coins, to make it work properly, we'd need to regulate the number of coins used in levels, which involves a lot of redesigning and restructuring existing levels. I think that's a bad idea. With dragon coins, this regulation already exists, and it's already built into all of the levels. Plus, it gives people a reason to care about dragon coins, and a lot of levels have extra fun and challenge from collecting all the dragon coins, while practically no level feels anything more than a chore when trying to collect all the coins.
Image
Image
Image
Image
Image
Kil
Posts: 13
Joined: 15 years ago

Re: Episode 2 Theme/Town Thread

Post by Kil »

Well I think you all ought to go back anyway and rebalance the dragon coins in all the levels if they're going to suddenly become important. But so long as my HUD doesn't get messed up I don't actually care that much and I'll let you guys decide what happens.
DON'T PM me. Ask your question in the help thread so everyone can be answered.
User avatar
Hoeloe
A2XT person
Posts: 1016
Joined: 12 years ago
Pronouns: she/her
Location: Spaaace

Re: Episode 2 Theme/Town Thread

Post by Hoeloe »

Kil wrote:Well I think you all ought to go back anyway and rebalance the dragon coins in all the levels if they're going to suddenly become important. But so long as my HUD doesn't get messed up I don't actually care that much and I'll let you guys decide what happens.
It would be ideal to go back and rebalance them, but I don't think it will need as much rebalancing as standard coins, and we can probably get away with leaving them as they are. They won't be super balanced if we do, but it should be enough to work as a currency system.
Image
Image
Image
Image
Image
User avatar
SAJewers
ASMBXT Level Wrangler/A2XT Project Coordinator /AAT Level Designer
Posts: 4200
Joined: 11 years ago
Location: Nova Scotia

Re: Episode 2 Theme/Town Thread

Post by SAJewers »

Maybe we shouldn't do this coin idea.
ImageImageImageImageImage | Image | Image
Sharenite | RetroAchievements | NameMC | IGDB
User avatar
Hoeloe
A2XT person
Posts: 1016
Joined: 12 years ago
Pronouns: she/her
Location: Spaaace

Re: Episode 2 Theme/Town Thread

Post by Hoeloe »

SAJewers wrote:Maybe we shouldn't do this coin idea.
I think it would be a fun way to make the towns more interesting, as well as giving raocoins a purpose, which could make a lot of levels more fun. The actual implementation is already done, so it's no extra effort, either (unless we want to make it so that specific raocoins are saved, which is possible, and wouldn't be too time consuming, just a bit awkward). Raocoins were chosen because they're already designed to be at least mildly awkward to collect, so the balancing effect is already there. If we want to include it, we don't need to do anything. At this point it's just a case of saying "yay" or "nay".
Image
Image
Image
Image
Image
User avatar
Oddwrath
The ghost of talkhaus unlikely
Posts: 95
Joined: 9 years ago
Pronouns: she/her
Location: Merry Old Europe

Re: Episode 2 Theme/Town Thread

Post by Oddwrath »

Hoeloe wrote: giving raocoins a purpose
Collect 5 of them and you'll get a 1up. In some levels you need to collect them to get the secret exit/leek. It isn't much, but it is something. Certainly, more than the average coins with are worthless most of the time. For an example: I have a level that I've been making since september that contains a treasury chamber filled with literally hundreds of coins. The only was to get to that chamber is to collect every raocoin in the level. And yet, if the player had 99 lives when he got there, then all of these coins are meaningless. So, I had to put a SMW leek just to make it not pointless for the player to get to the treasury. If you have coins actually being worth something as a currency, then you'd have the player enter the treasury and just be amazed at the majesty of it all. Hell, it would make simple bonus places matter again.
Also, what kind of purpose would raocoins serve in towns? We're not going to make player buy a leek to get a 100% completion, are we? And what happens if the player wastes all their raocoins trying to get a leek in a minigame and failing at it? Could the player go back to a level and just grind the raocoins, until he has enough?
:lesbian_pride: my avatar is from that obake game made in 2001 that you cannot play anymore unless you run it through a virtual machine and apply a locale patch
User avatar
Hoeloe
A2XT person
Posts: 1016
Joined: 12 years ago
Pronouns: she/her
Location: Spaaace

Re: Episode 2 Theme/Town Thread

Post by Hoeloe »

Oddwrath wrote: Also, what kind of purpose would raocoins serve in towns? We're not going to make player buy a leek to get a 100% completion, are we? And what happens if the player wastes all their raocoins trying to get a leek in a minigame and failing at it? Could the player go back to a level and just grind the raocoins, until he has enough?
I think the plan was to buy hints and access to bonus stuff, like some of the Castle of No Significance things. I don't think having leeks be bought is a particularly good idea. The way the system is set up is that when you enter a level, all the raocoins will be there, regardless of whether you've got them before or not, but to add them to your total, you need to either finish the level or reach the midpoint. If you die or exit the level, any raocoins you got in that level are lost. This means you can go back and grind for them, but you can't pick a level with an easy raocoin at the start and keep grinding that one coin by quitting via the pause menu.
Image
Image
Image
Image
Image
Rixithechao
https://www.youtube.com/watch?v=BODxOghVmko
Posts: 1812
Joined: 10 years ago
First name: Mack
https://rixithechao.talkhaus.com/

Re: Episode 2 Theme/Town Thread

Post by Rixithechao »

Arright, let's see here, what are some potential uses for raocoin currency, both in and out of towns?


- Powerup/Mount shops, assuming filters aren't going to be too much of a problem. Mushrooms should be complimentary, but making players pay for the better powerups would help with balance -- they can't just go grab a free hammer suit and cheese a level/boss, and when they find a good item in a level it'll be that much more rewarding.

- Minigames... maybe. Depending on the activity, charging players to try again may be too punishing. If a leek is given as a reward for doing well in a minigame, it should definitely be cheap or free. Or, maybe it's a one-time fee, you just pay for access to the minigame.

- Hint shops for tips, tricks and secrets not covered by library-esque areas.

- Sidequest-related purchases. Want access to this exclusive club to unlock a new section of the town? That'll be 5 RC.

- Toll gate sublevels for unlocking alternate paths/branches on overworlds.

- Pre-boss vending machines.

- Insert capitalism joke here

- Mid-level shortcuts. Your level shouldn't need them since mercy mode (or whatever it's called) should help make tough parts more doable, but idk, it might still be cool to let players bypass certain difficult parts for a few raocoins.

- Mercy mode (or whatever it's called): Maybe instead of having it show up after a certain number of deaths, players could simply purchase it for wait no that's a terrible idea scratch that


Not saying we should necessarily do any of these things, just offering some ideas if we do decide to use the system. Really, it'd be a bad idea to use all/most of these anyway lest we end up turning the game into Demo's Rosy Rupeeland.
Delightful Adventure Enhanced is out now!

Image

There's an official ASMT Discord server! Check it out to discuss Demo games and follow their development! thread, invite link

(Entry requires verification, either with a connected Youtube/Twitter/Twitch/etc account or manually by the server staff.)


Itch.io (albums and eventually games), Youtube (dofur pass and I guess other videos)
User avatar
Willhart
Stalker, Doxxer, and Sexual Harasser
Banned
Posts: 2434
Joined: 13 years ago
Location: Finland

Re: Episode 2 Theme/Town Thread

Post by Willhart »

There needs to be unlimited amount of coins in case the player uses all of them on cheap powerups or something. Alternatively the shop items can be bought only once and there is limited amount of money. Unlocking buildings like the powerup warm by repairing them for example can be done only once. I don't think we should ask the player to get every single Dracon coin in the game though. The cost for everything will need to be carefully balanced.
Rixithechao
https://www.youtube.com/watch?v=BODxOghVmko
Posts: 1812
Joined: 10 years ago
First name: Mack
https://rixithechao.talkhaus.com/

Re: Episode 2 Theme/Town Thread

Post by Rixithechao »

Except we're not doing it like A2MT, raocoins are renewable.
Delightful Adventure Enhanced is out now!

Image

There's an official ASMT Discord server! Check it out to discuss Demo games and follow their development! thread, invite link

(Entry requires verification, either with a connected Youtube/Twitter/Twitch/etc account or manually by the server staff.)


Itch.io (albums and eventually games), Youtube (dofur pass and I guess other videos)
Post Reply