Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Harminoff
Oct 24, 2005

👽
I also vote for godot, super easy to get into.

Adbot
ADBOT LOVES YOU

Bronze Fonz
Feb 14, 2019




I'm gonna be that guy and say GameMaker all the way.
It's easy and fast to get into, super fast to go from idea to prototype, GML is a breeze to learn and is as powerful as you'll need it to be and beyond.

If you're like me and bounce off Godot as soon as you try it, give GM a shot.

Quixzlizx
Jan 7, 2007
Great, I appreciate the quick replies. I never would've even thought about Godot or GameMaker. I think I'll test out Godot and see if my Python knowledge relatively carries over, and then go from there.

CitizenKeen
Nov 13, 2003

easygoing pedant

Quixzlizx posted:

Great, I appreciate the quick replies. I never would've even thought about Godot or GameMaker. I think I'll test out Godot and see if my Python knowledge relatively carries over, and then go from there.

As a former Python dev, the worst part of Godot is when you get to the weird places where GDScript goes in the opposite design direction from Python and you have to remember you're not writing Python. The overlap is high, day to day.

12 rats tied together
Sep 7, 2006

i write a lot of python for work and i can also vouch for godot being python-like enough that there will be meaningful skills overlap that will save you from re-learning stuff that isn't directly related to "how to make a game", which is important

xzzy
Mar 5, 2009

Unfortunately that means it has some of the same horrible issue as python: whitespace is significant, gently caress you person that decided that.

But gdscript has static typing, so good job fixing that.

leper khan
Dec 28, 2010
Honest to god thinks Half Life 2 is a bad game. But at least he likes Monster Hunter.

xzzy posted:

Unfortunately that means it has some of the same horrible issue as python: whitespace is significant, gently caress you person that decided that.

But gdscript has static typing, so good job fixing that.

It was a neat idea for Guido's toy programming language. It's not his fault everyone started using it.

CitizenKeen
Nov 13, 2003

easygoing pedant
Whitespace with significance is why I switched over to Godot C#. My understanding is it's mature enough in Godot 4 to run with it. Fingers crossed.

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe
The lack of strong typing in Python (by default) is a bigger issue than whitespace significance IMO. The whitespace significance just means that everyone is forced to format their code similarly, which is great.

12 rats tied together
Sep 7, 2006

python is strong dynamic gradual, which are not opposites, but different dimensions.

i otherwise agree that indentation mechanism is a weird thing to base your choice in a language on, but ultimately, language choice is not super important when it comes to making a game, so it doesn't really matter that much compared to e.g. line of business software

12 rats tied together
Sep 7, 2006

quick example, python is strongly typed because every label maps to a value that has a type, and that value's type does not change implicitly:

Python code:
>>> type(20)
<class 'int'>
>>> type("5")
<class 'str'>
>>> 20 - "5"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'int' and 'str'
javascript is weakly typed. it knows about types but it will implicitly convert between them if it thinks it would be helpful for you
JavaScript code:
typeof(20)
'number'

typeof("5")
'string'

20 - "5"
15

xzzy
Mar 5, 2009

12 rats tied together posted:

quick example, python is strongly typed because every label maps to a value that has a type, and that value's type does not change implicitly:

The problem is readability, my complaint is you can't declare "string butts = 'asdf'" so when you're trying to update your script 6 years down the road there's a bit of a reference of what variables do what.

I also don't like the ability to set "butts = 'asdf'" at the top of the function and then set "butts = 5" later on. One is a dumb programmer if they do this but I prefer the compiler to call me out on my bullshit.

conclusion: C# is the best language ever

12 rats tied together
Sep 7, 2006

you can do that these days. it would be

edit: added python code block since im not on my phone anymore
Python code:
butts: str = "asdf"
it is still a dynamic language though. also im not sure how much of this work is making it into gdscript.

solution: use actual python for your game instead of gdscript. yes this is way harder for no benefit. no more questions please

12 rats tied together fucked around with this message at 20:38 on Mar 27, 2023

Contentato
Jan 19, 2023

yay [short tooting]
I'll throw in my support for Godot. I've started a new project after signing up for a tutorial from HeartBeast (would absolutely recommend his stuff for learning Godot techniques) and I'm having a great time prototyping. The paid content was very worth it. I'm inspired. Search his name for some great free stuff on YouTube too.

My already-out project which I built with old school tools got a nomination for 2022 mobile game of the year with the GDWC, I'm pretty happy for the recognition, its a good feeling! https://thegdwc.com/nominees/ has all the picks that are up for awards. There's studio projects and some games I was following just cause they looked cool that made it on the list - pretty good company. Cliche or not, its an honor to be nominated.

Quixzlizx
Jan 7, 2007

Contentato posted:

I'll throw in my support for Godot. I've started a new project after signing up for a tutorial from HeartBeast (would absolutely recommend his stuff for learning Godot techniques) and I'm having a great time prototyping. The paid content was very worth it. I'm inspired. Search his name for some great free stuff on YouTube too.

My already-out project which I built with old school tools got a nomination for 2022 mobile game of the year with the GDWC, I'm pretty happy for the recognition, its a good feeling! https://thegdwc.com/nominees/ has all the picks that are up for awards. There's studio projects and some games I was following just cause they looked cool that made it on the list - pretty good company. Cliche or not, its an honor to be nominated.

First off, congrats on your nomination.

I also have another question that kind of keys off of your HeartBeast mention, since I checked out the class myself and noticed it explicitly states it's meant for Godot 3 LTS and not 4. I'm assuming Godot 4 is a little too bleeding edge at the moment, especially for a newbie?

Love Stole the Day
Nov 4, 2012
Please give me free quality professional advice so I can be a baby about it and insult you
This might help:
https://www.youtube.com/watch?v=QKgTZWbwD1U

bobthenameless
Jun 20, 2005

Quixzlizx posted:

First off, congrats on your nomination.

I also have another question that kind of keys off of your HeartBeast mention, since I checked out the class myself and noticed it explicitly states it's meant for Godot 3 LTS and not 4. I'm assuming Godot 4 is a little too bleeding edge at the moment, especially for a newbie?

4 just came out a few weeks ago, and the devs have mentioned that it'll likely be a few versions before full stability.

fwiw, some of the new 4 features were backported to the latest 3 minor version. they talk about these things a bit in the opening paragraphs of this blog post: https://godotengine.org/article/godot-4-0-sets-sail/

3 should be fine and have plenty of resources out there, 4 will get there. id say stick with 3 for now until you have a specific need for a 4 thing which could be some time from now, and by then it may have matured more

Tunicate
May 15, 2012

Godot 4 still has issues but some of the features are noticable improvements.

If you want a pixel perfect game stick with godot 3, while it takes a little wrangling, g4 can't manage it at all.

Alterian
Jan 28, 2003

Edit: Wrong thread.

Relevant. Any devs going to the east coast game conference?

Contentato
Jan 19, 2023

yay [short tooting]

Quixzlizx posted:

First off, congrats on your nomination.

I also have another question that kind of keys off of your HeartBeast mention, since I checked out the class myself and noticed it explicitly states it's meant for Godot 3 LTS and not 4. I'm assuming Godot 4 is a little too bleeding edge at the moment, especially for a newbie?

Thanks!

I'm plowing ahead with 4, there's a few things here and there that don't match up with the tutorials, but it hasn't been hard to find help (HeartBeast's own discord has plenty of notes on the changes). I figure since I'm just starting with it might as well get used to the newer one.


Alterian posted:

Edit: Wrong thread.

Relevant. Any devs going to the east coast game conference?

I'm gonna go. Seems like the thing to do to get out there as an indie.

Alterian
Jan 28, 2003

Neat! I am talking. I have to go every year for my job so talking is an easy way to get a VIP pass.

CitizenKeen
Nov 13, 2003

easygoing pedant
I'm working on a card game, and I need a reality check.

Progress is going great (I'm a C# dev in my day job, using Godot), for a first game, at least. Got to a place where I can draw cards to a hand and then play them to locations on a board.

I've been building this in 2D, but is that a mistake? I've been reviewing the state of the art (StS, Inscryption, Stacklands, Griftlands, Gordian Quest) and it seems like some are 2D, some are 3D. But I honestly don't know - my attention to visual detail is not great.

Like, Slay the Spire and Griftlands are 2D, yeah? Just using tweening to give the illusion of depth? Or are they 3D with a fixed camera?

This is more of a broad "design aesthetic" question than a programming question, hope that's okay.

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe
You can make either work. Your goal should be to identify an aesthetic that you like (or that you think will make the game look good) and that you can achieve given your skills and resources.

CitizenKeen
Nov 13, 2003

easygoing pedant

TooMuchAbstraction posted:

You can make either work. Your goal should be to identify an aesthetic that you like (or that you think will make the game look good) and that you can achieve given your skills and resources.

Yeah, I figured the answer would be "do what looks good".

My skills are rough and my resources are low.

I say this very, very, very naively, but hopefully if I keep trucking with 2D and a year from now I regret my choice, a turn-based card game should be a manageable refactor to 3D (since all the game logic remains the same and C# provides compile time errors).

Catgirl Al Capone
Dec 15, 2007

Tunicate posted:

Godot 4 still has issues but some of the features are noticable improvements.

If you want a pixel perfect game stick with godot 3, while it takes a little wrangling, g4 can't manage it at all.

If you're wondering where the graphics filter settings went they moved it from individual resource import settings to node settings under the CanvasItem properties, and you can set an overall default under project settings -> rendering -> textures -> canvas textures. If you set that to nearest, then 1x and clean zoom levels on a camera should look crisp like they did if you imported them that way in G3.

roomforthetuna
Mar 22, 2005

I don't need to know anything about virii! My CUSTOM PROGRAM keeps me protected! It's not like they'll try to come in through the Internet or something!

TooMuchAbstraction posted:

You can make either work. Your goal should be to identify an aesthetic that you like (or that you think will make the game look good) and that you can achieve given your skills and resources.
To be clear, this essentially means "do it in 2D unless you are already good at 3D programming and modeling".

3D is like 5 times more complicated on the rendering front.

CitizenKeen
Nov 13, 2003

easygoing pedant
Well there it is. Thanks!

Tunicate
May 15, 2012

Catgirl Al Capone posted:

If you're wondering where the graphics filter settings went they moved it from individual resource import settings to node settings under the CanvasItem properties, and you can set an overall default under project settings -> rendering -> textures -> canvas textures. If you set that to nearest, then 1x and clean zoom levels on a camera should look crisp like they did if you imported them that way in G3.

That fets you part of the way there, but there are still problems with jitter and sprite bleed once you have moving objects and moving cameras

Raenir Salazar
Nov 5, 2010

College Slice
2D can sometimes have weirdness you might not expect, I remember struggling with some 2D related things like pixel issues resulting in weird artifacting. I'd say do whatever seems more fun to learn.

3D has the advantage that you can get away with very simple models and with some shader shenanigans own the aesthetic for retro PSX style points.

Ranzear
Jul 25, 2013

There needs to be a word or definition for demanding that certain kind of exact perfect visual control, like pixel perfect 2D despite arbitrary scaling/rotation or exact lighting models that output in perfect gamut.

Because gently caress all of that in the indie space. None of it is an aesthetic. It's programmers pretending at art direction. I'm guilty of this in the past. Nobody else sees it.

If your artsy pixels are small enough to be aliasing visually on modern screens your aesthetic is no longer 'pixelated sprites' regardless.

"Make more ugly games" is my fresh mantra. "Just be sure text is legible" is my stealth edit follow-up.

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe
I've been thinking about a problem lately, and it occurs to me that there may be a well-studied solution for a variation on the problem. The problem is "how do I make high-level Metroidvania maps that adhere to certain constraints", with "high-level" meaning that I don't care about the contents of individual rooms, just how they connect to each other and how big they are. I think this could generalize to "how do I make a planar graph that adheres to certain constraints", where the constraints are things like "there is a length-5 path between these two nodes", "there are two paths between these two nodes", "the path from this node to that node must pass through this third node", etc. Does anyone know of any such algorithms, or any resources I could read up on to get a better understanding of the domain?

I've made several stabs at this problem in the past, and had a moderate degree of success, but all of my approaches boiled down to "throw a bunch of stuff at the wall and then try to make sense of it." I'd like something a bit more formal.

Tunicate
May 15, 2012

Ranzear posted:

There needs to be a word or definition for demanding that certain kind of exact perfect visual control, like pixel perfect 2D despite arbitrary scaling/rotation or exact lighting models that output in perfect gamut.

Because gently caress all of that in the indie space. None of it is an aesthetic. It's programmers pretending at art direction. I'm guilty of this in the past. Nobody else sees it.

If your artsy pixels are small enough to be aliasing visually on modern screens your aesthetic is no longer 'pixelated sprites' regardless.

"Make more ugly games" is my fresh mantra. "Just be sure text is legible" is my stealth edit follow-up.

I totally notice jitter in games i play and it seriously annoys me when things vibrate back and forth for no reason

roomforthetuna
Mar 22, 2005

I don't need to know anything about virii! My CUSTOM PROGRAM keeps me protected! It's not like they'll try to come in through the Internet or something!

Tunicate posted:

I totally notice jitter in games i play and it seriously annoys me when things vibrate back and forth for no reason
Yeah, I *mostly* don't give a gently caress about pixel-perfection, but jittering and "worming" (where a thing varies between n and n+1 pixels wide as it moves) bother me.

Though also, when people do the letter-at-a-time text-reveal thing and it goes like
the quick brown fox ju
the quick brown fox jum
the quick brown fox jump
the quick brown fox
jumped

as it hits the end of the line and decides too late that it's going to need to word-wrap, that's the worst, and like 50% of things that do that, do it that way, including AAA games, so apparently absolute bullshit is fine.

Tunicate
May 15, 2012

My word wrap code checks a full word ahead specifically to avoid that.

Peewi
Nov 8, 2012

I feel like I see word jumps like that far more often in indie games than AAA.

Regardless, it's far too common and I hate it every time.

leper khan
Dec 28, 2010
Honest to god thinks Half Life 2 is a bad game. But at least he likes Monster Hunter.

Peewi posted:

I feel like I see word jumps like that far more often in indie games than AAA.

Regardless, it's far too common and I hate it every time.

It's the default behavior for unity text boxes and unity textmeshpro text boxes. Most people don't do anything whatsoever to fix it, since no one doesn't buy a game because of it.

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe

leper khan posted:

It's the default behavior for unity text boxes and unity textmeshpro text boxes. Most people don't do anything whatsoever to fix it, since no one doesn't buy a game because of it.

Depends on how you mean "default behavior". If you're filling in the textbox by changing its text contents, then yes, that's the behavior you get. If you set the text once and then set the number of visible characters (which is a TMP_Text property) then you get the better behavior.

Bongo Bill
Jan 17, 2012

For pixel art games, first make sure all the graphics are to scale with each other, because you'll have to redraw it if you want to change it. Figure out the "internal" resolution you want for the viewport in terms of how many chunky fake pixels you'll fit on screen; if desired, preserve the aspect ratio of the physical display, but don't use its size. Create a texture with that number of pixels, render your game graphics at their native size to that texture, and then put that texture on the screen, or scale it up with nearest-neighbor before rendering it. (Obviously also apply techniques like double buffering at appropriate points in the pipeline; that's not the entire process. If you intentionally want some elements that aren't part of the pixel scale, you can add extra steps for those as well.) You can get even better results if, instead of rendering it to the full resolution of the target display, you scale it up to the nearest integer multiple that's smaller than the target display, and windowbox it. As long is the physical resolution is sufficiently larger than the internal resolution, you'll have no jitter, no worming, no mismatched sizes, and no other amateur-hour artifacts of that kind.

Tunicate
May 15, 2012

Bongo Bill posted:

As long is the physical resolution is sufficiently larger than the internal resolution, you'll have no jitter, no worming, no mismatched sizes, and no other amateur-hour artifacts of that kind.

... assuming all sprites and cameras are internally aligned with exact pixels, so when rounding occurs for where they are positioned on your small canvas it is always 100% consistent, so characters never shift at different times than the ground beneath them

Adbot
ADBOT LOVES YOU

Red Mike
Jul 11, 2011

TooMuchAbstraction posted:

I've been thinking about a problem lately, and it occurs to me that there may be a well-studied solution for a variation on the problem. The problem is "how do I make high-level Metroidvania maps that adhere to certain constraints", with "high-level" meaning that I don't care about the contents of individual rooms, just how they connect to each other and how big they are. I think this could generalize to "how do I make a planar graph that adheres to certain constraints", where the constraints are things like "there is a length-5 path between these two nodes", "there are two paths between these two nodes", "the path from this node to that node must pass through this third node", etc. Does anyone know of any such algorithms, or any resources I could read up on to get a better understanding of the domain?

I've made several stabs at this problem in the past, and had a moderate degree of success, but all of my approaches boiled down to "throw a bunch of stuff at the wall and then try to make sense of it." I'd like something a bit more formal.

Outside of very specific problems, I'm fairly sure there's no closed-form solution generally available for this kind of thing. It's much easier to set up a generator that can produce garbage as well as the desired outcome, and you prune/retry any failure until you meet all constraints. Because as soon as you have two separate constraints, any closed-form solution (or tailored generator that guarantees the result) will be so complex that it's very hard to tweak behaviour.

I've done some research into this in the past but there's no real unified 'domain' that you can dig into directly because the problem is so broad. You're better off focusing on particular use-cases (generating graphs for terrain generation in games, or related to analysing a story, etc).

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply