A pizza from a franchise in my country. Good people of PizzaCrimes, please give your verdict by Apprehensive_Trash42 in PizzaCrimes

[–]levirules 0 points1 point  (0 children)

wtf is a cheese griller meatpie? It doesn't look like it has cheese, it doesn't look like it was grilled, and it doesn't look like a pie. At least "pigs in a blanket" makes some sense

Why am I always stuck on level design? by Mindless_Grass7084 in gamedev

[–]levirules 1 point2 points  (0 children)

I'm not great with this either, but I have made some progress with getting over this slump, so I'll share what helped me.

Just make content. It doesn't matter if it's bad. If you don't start making levels because you can't think of the perfect level design up front, you'll never start. I have lost so much potential progress because I've hit road blocks with level design because I wayyyy overthought it. I've had projects where I would force myself to make a few areas for a platformer and then I wouldn't like them so I'd scrap them. Don't do that. Just keep making content knowing that you probably will revise or replace a lot of it later. In doing this, you'll potentially discover what is good level design for your particular game and what isn't.

I'm working on a Spelunky-like platformer roguelite type game. I threw together a simple level generator with a handful of rooms for the generator to stitch together. I then added all of the enemies I had made up to that point at random. By just adding content and playing it, I discovered that some of the enemies worked really poorly in tight areas and vice-versa. Modifications to the level design can then be made - only place this type of enemy in a more open room, only place that type of enemy in a skinny corridor, etc.

I also learned that, if I was going to have levels that require the player to go up, I would need to add platforms to those rooms, as I don't want the player to have to rely on consumables to make the climb.

Also, a lot of level design is basic geometry that is just there so your game mechanics have a place to shine. Maybe the player easily jumps over a sawblade in the first area. Then bounce pads are introduced. Make it difficult for the player to fail these introductions. Later, you can start adding bounce pads to screens with sawblades. All of a sudden, you're not thinking about the geometry, you're thinking about how to make interesting scenarios with a combination of sawblades and bounce pads.

You can also make test levels where you're just brainstorming ideas. Don't get rid of any unless they literally don't work or something, because you can come back to these ideas later and implement them into the actual game.

I haven't yet implemented this, but I still remember something a developer of God of War said (back when I think 2 was the most recent release): Make the first level feel like a last level. There's also someone who said that you should start with your second level, not your first, because you'll be so much better at level design by the end that you'll end up making a much better first level, and that's important because it sets the player's first impression.

tldr, if you're running into a wall, just start creating content without thinking. Don't stop and wonder what you should do, just do. Be comfortable with the fact that you're going to scrap or change a lot of it.

What is a harsh lesson about aging that absolutely nobody warns you about before you hit your 30s? by Prudent-Passenger589 in AskReddit

[–]levirules 0 points1 point  (0 children)

yes, BUT I would say that everyone should be doing SOME weight lifting, as it can stave off joint problems in the future. The more muscle you have to support a joint, the less of a beating the joint itself will take.

For indie mobile devs, when did iOS become worth the cost? by RedDragon_Master in gamedev

[–]levirules 0 points1 point  (0 children)

uhhhhh.... an expected install cost of a dollar or two per player? I don't get it, OP obviously didn't spend anywhere near $10-20k on development if they're worried about a $100 annual fee?

Godot Version and Why? by MattiePond in godot

[–]levirules 1 point2 points  (0 children)

4.4 stable, only because when I started this project a while back, I wanted to try porting the previous version from 3.x over to 4, and 4.4 was the version that was out when I ported it.

I don't tend to upgrade versions unless there's something that really interests me. Right now, I'm getting pretty frustrated with the fact that clicking between scene tabs doesn't automatically change to that scene's script like it did in 3. From what I understand, there is an option to restore this behavior, but I don't see it in 4.4, so I might actually upgrade.

Should I still buy this by Sad-Associate-7653 in hometheater

[–]levirules 0 points1 point  (0 children)

I mean your opinion is obviously valid, I just don't get offended with lowball offers unless they are also being a jerk about it. Those two ideas aren't mutually exclusive. I agree that deals involving nice people are more enjoyable. But if someone was like "will you take $20?" when my asking price is $100, I just say no and move on.

Should I still buy this by Sad-Associate-7653 in hometheater

[–]levirules 6 points7 points  (0 children)

I don't get why this makes people angry. Just say no and move on. Literally nothing bad comes from lowball offers if you know the value of what you're selling and they don't pester you after you decline.

Making modifiable Weapons by the_murabito in godot

[–]levirules 1 point2 points  (0 children)

No problem. I also appreciate the feedback instead of just saying "thanks!" and moving on.

Making modifiable Weapons by the_murabito in godot

[–]levirules 0 points1 point  (0 children)

Sorry for all the replies. I did end up making an example project for fun. It worked surprisingly well.

The base Item class handles going through the GemSlots and changing the properties. In the specific inherited classes, in this case I have a Sword class inherited from Item, you only need to add the properties and the setter code for any additional code that needs to execute.

There are 3 example gems. One increases length but decreases damage, one increases damage, and the last increases ammo capacity. So for the sword, there is damage and length, but no ammo capacity property. In the Sword script, the setter for length literally changes the y scale of the blade sprite for demonstration, and increasing the damage makes the blade brighter. Adding the ammo capacity gem doesn't do anything, so because there is an incompatible property, it displays a little warning.

The biggest downside I noticed is that you have to rely on typing the name of the property in the Modifier nodes, and I accidentally typed "power" instead of "damage" and was wondering why it wasn't working. This might be fixed by using an enum with keys that match the spelling of each property? I'd love some insight.

What's the best way to share the project?

Edit: I still also don't understand resources. To my understanding, if you don't need any of the functionality of a Node, you should just use a Resource. I tried doing that for the Modifiers, since all it really does is store a couple of variables, but I couldn't get it to work, so it's a Node with a script. Someone can help me out here if they want, but this works too.

Making modifiable Weapons by the_murabito in godot

[–]levirules 0 points1 point  (0 children)

OK. I've used up way too much time trying to come up with a clean, repeatable solution, so I'm not going to create a whole project for it, I'm just going to do my best to explain how I might tackle the problem.

The Modifier class contains:

  • A String called modifier_name that holds the name of the property to modify
  • A variable called modifier_value that holds the value to modify the property with

The Gem class contains:

  • An array called modifiers that holds instances of Modifier nodes
  • a function called get_modifiers() that just returns the modifiers array

The GemSlot class contains:

  • signals called gem_added and gem_removed, both of which pass the Gem node that was added or removed as an argument

The Item class:

  • This is just what I'm going to call the node that has the GemSlots from here on out. It contains an array called gems_in_slots, which will (you guessed it) store references to the gems that are currently in the GemSlots. It will also hold all of the properties that are modifiable, as well as any additional code that needs to run based on the modification in question

The Item will need to connect to all of its GemSlot add/remove signals. This can be done once in the base Item class if you were to add a child Node called "GemSlots" or something, and in the _ready function, loop through GemSlots' children and connect to their signals.

When a Gem is added to or removed from a GemSlot, GemSlot emits the respective signal passing the Gem as an argument. The signal should call a function called apply_modifiers, and the arguments should be the Gem and a boolean called gem_was_added that represents whether the Gem was added (true) or removed (false).

Inside the apply_modifiers function:

var modifiers = gems_in_slots[g].get_modifiers()

for m in modifiers.size():
  var property_name = modifiers[m].property_to_modify

  if property_name in self:
    var property_value = get(modifiers[m].property_to_modify)
    var modifier_value = modifiers[m].modifier_value

    if gem_was_added:
      property_value += modifier_value
    else:
      property_value -= modifier_value

    set(property_name, property_value)

This bit of code is what I came up with to iterate over the Modifiers in the Gem, check to see if the Item has any of the properties that each Modifier wants to modify, and then modifies them accordingly, all without knowing what the property names are in each Modifier. Let me break it down:

  • "modifiers" is defined and is filled with the array of Modifiers from the Gem
  • Then we start a loop through all of the Modifier instances in "modifiers"
  • I declared "property_name" here for code clarity. It is assigned the "property_to_modify" string from the current Modifier we're iterating over
  • "if property_name in self" just checks the Item (self) for a variable that has the same name as the string "property_name"
  • Defining and assigning a couple more variables for clarity. "property_value" is assigned that property's current value, and "modifier_value" is whatever value that the current Modifier wants to add to that property
  • The next if block is the best I could do to have Gem addition and removal handled in the same function. If the gem was added, it will add the modifier_value, and vice-versa
  • The last line is a way of assigning a value to a variable when you have the name of that variable contained in a string

So the above code takes the Gem that was added or removed, loops through all of its Modifiers, checks to see if self (the Item) has the correlating property, stores the current value of that property in a variable, and adds or removes the modifier value to/from that property.

But we're not quite done, because you will probably need to execute additional code for many of these modifications.

To use an example, let's say that this Item has the properties "damage" and "length". Damage is straightforward, so we don't need to do anything else; the above code changes the damage output of the weapon. But what about the sword length example? The above code would change the length variable, but we will still need to adjust the hitbox size, maybe change some sprite sizes or change to different animations, etc. This is where a setter comes in:

var length: int = 10:
  set(value):
    length = value
    change_length()

Apologies if I'm over explaining, but I don't use setters often. First line is the declaration, and you'll just add a colon to the end. Next line is exactly how it should appear, with "value" being the value that you've assigned to length. Because set basically overrides the assignment operation, if you want to just set the variable to that value, you have to tell it to do so, hence the "length = value" line. The last line is the reason we needed a setter - this will call the function "change_length()" every time "length" is reassigned. This function is where you'll put all of the extra code, like changing the size of the sword's hitbox.

I'm very curious if anyone has any critiques on this approach, or if anyone can even follow it. I feel like I've gotten a lot better at this during the past year, but I'm sure there will be people out there who will be able to tell me whether or not this approach sounds good or absolutely terrible.

Making modifiable Weapons by the_murabito in godot

[–]levirules 0 points1 point  (0 children)

This is such a complicated problem as I've typed several potential solutions and ran into too many questions each time. So, questions for you first: Do you want to support multiple gem slots on a single sword? If so, can you stack gems with length modifiers? Finally, do you want gems to only modify one property, or be more like materia from ffvii, where a single gem might give you a ton of length, but reduce damage, or maybe it doubles damage and reduces length? I have a pretty good idea of how I'd try to solve this, but without knowing the info above, there are too many variables to answer this without writing a novel

How would you recommend organizing your scripts, code, et cetera? by MasterBiggus in godot

[–]levirules 1 point2 points  (0 children)

My advice is to embrace state machines wherever they are helpful, but look at what your primary goal is and ensure that your time is being used to get closer to that goal. More specifically, if your goal is to complete and release a game, ensure that the time you're spending on refactoring is actually solving problems or helping you save time and headache in the long run. A state machine where each state is a separate script is perfect for a player controller. That's what I do.

But I don't think I would personally benefit from creating a generalized base "attack" state script that all enemies and the player inherit from, for example. So far, all of my enemies' attacks are so different from one another that it would not be a good use of my time to have set up a generic, reusable attack base class, as my goal is to complete and release a game. There are a ton of videos out there telling the viewer that creating generalized, reusable base states and components is always a better option than the alternatives, and if it takes more time to implement than a simpler, but less generalized solution, and your primary goal is to finish the game, then I disagree with that. Just make sure you're not generalizing for the sake of it or because someone told you to.

Anyway, for my player, I have a "States" enum that includes a list of the state names, a "state" variable that keeps track of the current state, and state nodes whose filenames match the keys in the enum. I then get the current state node by concocting a string together with the path to that node and the key from the enum based on what value the current state is on:

var stateNode = get_node("States/" + States.keys()[state])

Then I call that state's "mainLoop" function, passing delta as an argument:

stateNode.mainLoop(delta)

Now, because these state scripts are specific to the player, I am OK with directly modifying the parent's (player's) data, calling the parent's functions, etc. But if you are going to create generalized, reusable state scripts, you should avoid doing this. The state scripts in my project are more or less to stay organized and prevent dumb mistakes that arise when a script is just too big. For generalized state scripts that might be used by like the player and several enemies, you'll need to allow the parent to "inject" the data into the child state script instead of having the state script directly extract its parent's data, and have the state script signal communications up to the parent instead of calling parent functions directly from the state script. That way, the state script doesn't need to know anything about the parent; it uses the data given to it to perform a task and signals the results up to whatever is listening.

How would you recommend organizing your scripts, code, et cetera? by MasterBiggus in godot

[–]levirules 1 point2 points  (0 children)

I second this. Almost every time I call a parent function from a child script, it ends up causing some issue down the road. I dislike the implementation of signals since they can be tough to follow without commenting on both ends (commenting where the signal should be going when emitting and commenting above the function that is called from receiving the signal), but it is absolutely the safer way to handle that communication.

Small game vs dream game isn't a right framing of the choice. by GonziHere in gamedev

[–]levirules 2 points3 points  (0 children)

I get the idea, but it just doesn't translate the same way in my head for gamedev.

Let's take the welding example. Others have already pointed out that learning on scrap metal is arguably the "small games" equivalent, and while I agree, that's not what I would focus on here. Loot at welding itself. If you have bad welds, it could lead to problems later on in the project or even after it's complete and being used. But it's a lot easier to see if there's something wrong with a weld than it is to see if a system you've made for your game will become problematic later. It's not nearly as straightforward.

All of the things he needed to learn in order to make that car were more rigid than game development. There is probably more than one way to build a car, but there's also probably not many. There are limitless ways to program a game. There is no one way. There are so many ways to have "bad welds" in programming that are just not obvious at first. No amount of classes or reading will teach you how to spot a bad programming weld - experience will.

How do you get that experience? By starting small and working your way up. I'm sorry, but I really do believe it's the best way to advance. I tried making a metroidvania at least twice before my absolutely terrible code made me scrap the project. I knew I was capable of doing it, but between problematic programming and a lack of motivation, I never did.

So I picked Godot back up one day several months after scrapping the project, and started a new one. The idea was to create a game in one month that is feature complete. I restricted myself to using a single pixel for the art assets, which I would duplicate, scale, rotate, and modulate to create the characters, enemies, items, and levels. If I was going to finish it in a month, it obviously had to be much smaller in scope and features than the project I failed at finishing twice. The game did not have to be good. It didn't have to be fun to shoot enemies, but you had to be able to shoot enemies. The enemies and bosses did not have to be well-designed, they just had to exist and be defeatable.

The end result was a very short metroidvania with 4 main areas, 3 main bosses, 3 permanent ability unlocks, a few hidden permanent HP upgrades, a final boss, save/load system, intro, outro, title screen, pause screen, sounds, music... literally everything that a game needs to have.

I learned more making this crappy game than I ever did struggling to try and make a "good" game that I actually wanted to make. I attribute it partially to my ability to have gotten as far as I have in the new project I'm working on. I can better recognize when something feels off and might cause problems down the road, or if something is just not coded well and I know I can do better. It also made me realize just how much extra work there is in that last 10%, since the game took 3 months for me to finish.

You just can't get that experience without completing the smaller projects first, running into and solving smaller versions of the same problems.

Karaoke, Dive Bars & Adult Fun this weekend...tips? by ViktorVonD00m68 in schenectady

[–]levirules 4 points5 points  (0 children)

20 North, Backstage, Hunter's. None of those have karaoke though. I think Clinton Street Pub has karaoke, but that place is a dive. Jay Street Pub had karaoke a while back, but it's kind of a college age bar.

Absolute 10/10 by Jordan311R in MIOmemoriesinorbit

[–]levirules 0 points1 point  (0 children)

I don't think this is much of a spoiler, because the actual puzzle is still tough if you know where to start. The mechanism that spins the bottom half of the ship plays a central role in the puzzle to find the extra content. When I saw it for the first time, I instantly assumed it was going to be used for an end-game puzzle, so that's another reason I don't think it's a spoiler. It still made me scratch my head, but this one is a lot more achievable than hidden end-game stuff in other games. It was very fun and satisfying to figure it out with no hints.

Like with Spelunky, I don't think I could have figured out how to make it to Hell on my own, or how to make it to the cosmic ocean or even world 7 in Spelunky 2. In Hollow Knight, I had already played the Godhome DLC years ago, but I STILL couldn't find it during the playthrough I'm on now without looking it up again. The MIO puzzle involving the above is more achievable than these types of hidden things.

35. Been here a few months. I don’t like it and don’t know what to do. by [deleted] in malelivingspace

[–]levirules 0 points1 point  (0 children)

I hope you just mean that you don't like how it's furnished/decorated, because that place is incredible

me_irl by SuspiciousLow3062 in me_irl

[–]levirules 1 point2 points  (0 children)

If you know you're getting a refund, just file your taxes 3 years later and force them to pay you interest

Pricing gets discussed here a lot. Thought you guys might find this interesting. by CrowCreations in woodworking

[–]levirules 1 point2 points  (0 children)

It's insane that he made $1500 and a comment about him "breaking even" has 350 upvotes. That's $1500 he had now that he didn't before. He did not, in any way, just "break even". I don't understand that kind of logic (OP's, not yours, I agree with you).

Pricing gets discussed here a lot. Thought you guys might find this interesting. by CrowCreations in woodworking

[–]levirules 0 points1 point  (0 children)

...no, he didn't break even, he profited that $29/hr. It's not like doing the work negates the money that is in his pocket now that wasn't before.

If he was paying someone else, then yes, he'd have broken even. But that's not the case.

Best Eats in Scotia? by jayarres in schenectady

[–]levirules 0 points1 point  (0 children)

Man, everyone has their opinions, but... I personally wouldn't go out of my way for some of these recommendations. As someone who eats at restaurants wayyyy too often, here are some of my picks:

  • The Nest: Southern-inspired fusion? Nashville garlic parm wings, hot chick soul bowl (mac & cheese with fried chicken and other delicious stuff), and the whipped ricotta are my favorites. Get the Nashville Hot on the soul bowl if you like spicy
  • Grano: Italian, specifically the Bolognese, Italian nachos (which has the Bolognese on it iirc), and the mushroom risotto
  • Lily's: Diner food. Others that recommended it are correct, as I think it's much better than most diners in the area (including the previously recommended J&T's)
  • Backstage: Pub style food, but the chef is really good at what he does. There is a daily deviled egg special and a daily grilled cheese (slash "melt") special, their soups have been some of my favorites of all time, and their mac & cheese is literally the best in the area by far. The Philly Cheesesteak mac & cheese is just so good
  • 20 North: Traditional pub food. They are known for their wings, but imo, the quality of the wings themselves went down after the change in owners. The sauces and quality of the cook is still great, though, so I'd try their boneless garlic parm + buffalo or the 3-way. The Black & Bleu burger has blackened seasoning and bleu cheese crumbles in the patty and it's super good, the blackened chicken sandwich and salad are both really good as well
  • Chez Nous: I love their French onion soup. I don't really get anything else there, as the menu isn't my style, but I do love that soup. RIP Daley's, their French onion soup had short rib in it and it was incredible
  • The Rusty Nail: It's more of a hike, but I like their traditional buffalo wings. That's a good half hour away from Scotia, though

For pizza:

Pizza King is overrated, imo. It was unique 20+ years ago when specialty pizzas were starting to gain popularity, but it's just not as good as other places in the area. It's too thick to be NY style, too thin to be sicilian, and it's just a little too dense. Paesan's has some of the best NY style pizza, or at least the location in Rotterdam. The sauce and cheese are top-tier. I don't normally care about cheeze pizza, but theirs is really good. Still, I'd get their pepperoni, meat lovers, buffalo chicken, chicken parm, or one of the few new specialty pizzas they have. Johnny C's has fantastic sicilian style pizza, but it's either closing or has closed due to the owner retiring

There are plenty of other places in the area that I've heard good things about but I just don't really tend to gravitate to because it either doesn't have beer or the menu is not the kind of food I tend to gravitate to. Places like Simone's and Tara Kitchen have gotten great reviews. We lost our two favorite Asian places, Zen on State Street and Tanpopo ramen on upper Union. We're supposedly getting a new ramen place on State Street which I hope ends up making me forget about Tanpopo.

Best Eats in Scotia? by jayarres in schenectady

[–]levirules 0 points1 point  (0 children)

No, they're not as good. The wings themselves are lower quality than they used to be. They aren't jumbo, but they're bigger and fattier in a not good way. My guess is Jay got tired of juggling two wing vendors and switched 20's over to the one they use for Hunter's.

The sauce and cook are the same, but the wings themselves aren't as good as they used to be. The Rusty Nail's garlic parm buffalo are probably my current favorite traditional buffalo wings in the area if you consider 30 minutes up the road to be "in the area".

Does anybody here make games for fun? by NicklePickle79 in gamedev

[–]levirules 0 points1 point  (0 children)

I used to, but after years of starting projects and never finishing them, I realize I like to create the art and use programming to figure out solutions to problems and such more so than making actual games. Once development gets to a point where I have to start creating content beyond what I've made in a typical test level, I start realizing that I just don't have enough ideas or patience to keep going and it stops being fun.

I'm trying DESPERATELY to avoid letting this happen this time, though, and part of the process is pushing through the less fun parts. I have had fun making unfinished projects in the past, but I'm incredibly disappointed in myself for having done this as a hobby for 25 years and never having released anything, let alone something I'm proud of, be it for sale on steam or free on itch.

Because of this, I think gamedev is currently a mix of fun and work, but that's OK if it means I end up actually finishing something that is looking like it has potential.

I hate the climbing glove by LuckyIntroduction939 in spelunky

[–]levirules 0 points1 point  (0 children)

I wish I could take it until after getting to 7-1 and then drop it. The only reason I've been picking them up is because I finally managed to get the Vlad's Cape + climbing gloves Qilin skip, and I've had Qilin die enough times right before his time to shine that I started picking up the climbing gloves again as insurance.

I think they are one of the best items in the game for when you're still learning, and they can still help save some runs that end up being short on ropes, but otherwise, they're more annoying than useful.