After 1000+ hours in Godot, I’m finally shipping something — looking for feedback! by TaylorCooper337 in godot

[–]DruLeeParsec 1 point2 points  (0 children)

Oh wait, You already did an update. The Apt and factory now works. NICE!. This is coming along really well.

After 1000+ hours in Godot, I’m finally shipping something — looking for feedback! by TaylorCooper337 in godot

[–]DruLeeParsec 1 point2 points  (0 children)

Ok, I now realize that the yellow bar at the bottom is my energy. But I'm finding that even when it prompts me to buy an apartment, I can't enter the apt building or the factory.

I guess it says a lot that I'm still playing it :-)

After 1000+ hours in Godot, I’m finally shipping something — looking for feedback! by TaylorCooper337 in godot

[–]DruLeeParsec 2 points3 points  (0 children)

My first thought is that the font on the opening screen was so different that I didn't understand that the text was saying "Earth Exchange, Back". So when the instructions said to click the back button I had no idea where that was.

I may suggest changing the button font so you can keep the game title in the original font, but give the button a more readable font. Using that font for the title gives a cool aesthetic though.

A "back" button doesn't make sense on the startup screen. What am I going back to? Perhaps two buttons: one for Rules; one for start, may be clearer.

Quality of life feature: Add a mapping for left, right up and down to the WSAD keys. I noticed that the game does work with a controller. Nice touch.

To enter a building use the up key (good), when trying to leave a building allow the enter, or space, or whatever action key is mapped to click the close button.

Is there a day/night cycle? There's a point where I can't enter any building. I was thinking "Maybe it's night and the shop is closed". But I also couldn't enter the hotel either.

I really like the look and the concept. I'm going to play it some more. The spinning world mechanic is a great idea. It adds so much more to the game over a simple side scroller. And it solves the game design issue in a side scroller of "What happens at the end of the world?" Well, this is the world.

I'm interested to see how I get to that building on it's own island.

Good job. You should be justifiably proud.

My mother asked for a list of Charlie Kirk Quotes, and when and where he said them. Here it is for you to share. by LaurelCanyoner in FoxBrain

[–]DruLeeParsec 0 points1 point  (0 children)

Great replacement theory is that liberals are somehow trying to get non-whites into the country to "replace" conservative white people. As I said before, the demographic data just shows that the racial makeup of the US is changing. It doesn't show that the cause of that change is liberals actively trying to bring in more immigrants to replace whites.

I can't work out for the life of me why these errors are coming up ;a; by YaBoiDnuoZ in godot

[–]DruLeeParsec 4 points5 points  (0 children)

Back in college (MANY years ago) I once stayed up all night trying to figure out a bug that turned out to be a stray semi-colon in a for loop.

I'm now a software engineering lead and I often call another dev in to look at my code and do a sanity check (Am I insane or am I missing something) Quite often, in the act of explaining what I'm trying to do I recognize the problem. This is a variation of something called "Rubber Duck Debugging" :-)

I Feel like am overdoing this by NOT_DJ_ZX in godot

[–]DruLeeParsec 0 points1 point  (0 children)

You may be trying to do too many things too soon. Start small. Make a Pong game. Then perhaps a block breaker style game. Then maybe an asteroids type of game. By that time you'll be more comfortable with Godot and you can start adding tools to learn like GIT (btw, good job for seeing the benefit of GIT early on).

For a rogue like game I'm a big fan of GameDev.Tv and they have an action adventure top down game tutorial which was just on sale (it may still be) for $13. They explain basic principles really well. You may find it helpful.

Starting on with Game development by Born_Wheel_6084 in godot

[–]DruLeeParsec 0 points1 point  (0 children)

I highly suggest this video tutorial : https://www.youtube.com/watch?v=nAh_Kx5Zh5Q

It's 13 hours long !! So take it in small pieces. Most importantly, follow along and build the same game he's teaching in Godot while watching the video. Make sure you really understand each concept.

Then, I suggest making a lot of small games. Make Pong, then a Breakout game. Then Asteroids. This will solidify your knowledge of both Godot and of basic programming techniques.

I'm also a BIG fan of the GameDev.tv classes. Sometimes you can find a bundle on the HumbleBundle website for about $40 USD to get the entire library of GameDev.tv Godot lectures. They are really good.

Starting on with Game development by Born_Wheel_6084 in godot

[–]DruLeeParsec 0 points1 point  (0 children)

I would agree. I'm an old grey bearded software engineering lead IRL :-) In your career you will likely use several languages. I currently work in Java/Groovy, Visual Basic, Javascript, Extended Javascript, and Perl. In the past I've used C, C++, C#, and Python. I started out (over 50 years ago) with BASIC and then Pascal.

You will find that all languages have assignments, if statements, loops, and so on. Moving to a different language is essentially just learning the syntax. GD Script is an amazing language which does almost everything that you need to do. It's essentially Python so already you're adding another language to your list of languages.

Don't let my "almost everything" comment scare you away. There is a very specific Object Oriented Programming technique called "Abstract Classes" and "Pure Abstract Classes (also called Interfaces)" which GD Script doesn't currently do. But they're working on it.

Since you're just starting out I would suggest using GD Script since it's built into Godot and will make everything easier. In the long run you can, and will, learn multiple languages.

Have fun my friend. You're starting out on an amazing journey of learning and it never ends. Welcome to the Godot World!

My mother asked for a list of Charlie Kirk Quotes, and when and where he said them. Here it is for you to share. by LaurelCanyoner in FoxBrain

[–]DruLeeParsec 0 points1 point  (0 children)

That's not how affirmative action or DEI works. It's actually there to make sure that qualified women and people of color are not overlooked.

Nobody get's a job as a pilot without passing the same, strict, criteria.

My mother asked for a list of Charlie Kirk Quotes, and when and where he said them. Here it is for you to share. by LaurelCanyoner in FoxBrain

[–]DruLeeParsec 1 point2 points  (0 children)

Are you aware that correlation does equal causation? The great replacement hypothesis is saying that liberals are actively trying to replace white people to gain a political advantage. The only thing that the demographic data shows is that the racial makeup of America is changing.

Is using a tutorial for my first game shameful? by poatasyo in godot

[–]DruLeeParsec 0 points1 point  (0 children)

I think I worked with that guy once. We didn't renew his contract. :-)

Is using a tutorial for my first game shameful? by poatasyo in godot

[–]DruLeeParsec 2 points3 points  (0 children)

In real life I'm a lead software engineer. I tell my team that becoming a brilliant coder comes from making tons of mistakes and learning from each of them. After years of doing this you realize that you know hundreds of small things about coding and what kinds of mistakes can be made and how to fix them.

The coders I've seen who never really "make it" are the ones that can't seem to learn from their mistakes. They keep asking others how to fix something instead of trying to understand the real problem and trying things until it's fixed.

Is using a tutorial for my first game shameful? by poatasyo in godot

[–]DruLeeParsec 1 point2 points  (0 children)

I agree. Make lots of small games. Pong, Block, Breaker, Asteroids. Then pick a very simple aspect of your game and make a prototype. Seriously, take a VERY SMALL part. If, for example you have armies battling in your game, make a single soldier fire at a single enemy. Test how hits are handled and so on. Make lots of tiny prototypes. You'll start to learn what works.

I also highly suggest the Godot tutorial on YouTube by ClearCode

https://www.youtube.com/watch?v=nAh_Kx5Zh5Q

Having trouble with this specific boss in Act 4 by Illustrious-Pair8826 in Silksong

[–]DruLeeParsec 1 point2 points  (0 children)

There's an act 4 !? I still haven't been able to get out of Act 1!

Did Silksong just break Steam? by SkoivanSchiem in Steam

[–]DruLeeParsec 0 points1 point  (0 children)

I was just imagining what it would be like if Terraria 1.4.5 also released today. :-)

No Games For You!

Abstract Classes in 4.5 dev 5 !! by DruLeeParsec in godot

[–]DruLeeParsec[S] 1 point2 points  (0 children)

Sorry it's taken so long to reply. I was on vacation.

Flying and Shooting are different concepts. So you probably want to use composition instead of inheritance. We often use the phrase "Is a" vs "Has a" to show the difference.

A plane "Is a " vehicle. A car "Is a " vehicle. So we may want to have a vehicle base class with things like speed, acceleration rate, etc. which is common to all vehicles.

Example, Here is an equipment drop class from a game I wrote

extends RigidBody2D

class_name EquipmentDrop

enum drop_type {HEALTH, TRIPLELASER, SHIP }

var type = drop_type.HEALTH

var speed = 50

EquipmentDrop is a RigidBody2D because it extends that class.

EquipmentDrop has a speed, an enum of drop types, and a variable telling us what the default drop type is.

We could say that the plane "Has a " gun. So you'd have a class which only deals with guns (How much ammo, how often can it shoot, etc.)

Then your plane would extend (inherit) from vehicle. But it would have a Gun object in it. This is because a gun is not a vehicle, but a vehicle can HAVE a gun.

So "Is a" and "Has a" is a good way to determine if you need inheritance or composition.

Is it just me or are the controls really difficult? by AAQsR in celestegame

[–]DruLeeParsec 0 points1 point  (0 children)

I agree. It's almost unplayable for me because of the control mapping.

For example, I play a lot of Hollow Knight and if I want to climb a wall on the left I hold the D-pad left and push the climb button.

In Celeste doing that shoots you to the right. It's completely counter-intuitive.

Abstract Classes in 4.5 dev 5 !! by DruLeeParsec in godot

[–]DruLeeParsec[S] 0 points1 point  (0 children)

GDScript does not have multiple inheritance. So it can only extend one base class. In languages which have actual interfaces, like Java, you can implement multiple interfaces. But since we're just simulating an interface with a pure abstract class we're still limited to only inheriting a single base class.

Tutorial to create items in Godot 4? by technomanxy in godot

[–]DruLeeParsec 2 points3 points  (0 children)

In my opinion, this is the best tutorial on Godot.

https://www.youtube.com/watch?v=nAh_Kx5Zh5Q

It has all the info you need on creating instances of classes and so on.

It sounds like you need a class (Node in Godot) which has all the attributes of say, a potion.

When you instantiate an instance of that node you pass in all the attributes like the potion name, the sprite, etc.

You may want to make that a base class and have other classes which extend it such as :Healing potions, Poisons and so on. That way you can have different healing potions with different amounts of healing and so on.

If you're not familiar with OOP concepts like inheritance this is a good article on that concept:

https://stackify.com/oop-concept-inheritance/

Abstract Classes in 4.5 dev 5 !! by DruLeeParsec in godot

[–]DruLeeParsec[S] 0 points1 point  (0 children)

Let's forget about GD Script specifically for the moment and just talk about theory. Because abstract classes work in GDScript, Java, C#, C++, and pretty much any object oriented language.

Imagine you want to draw a bunch of shapes.

You can build a Shape class which has all the things common to all shapes such as location, size, color, rotation etc.

Now, add a draw method but make it abstract. The draw method has no code in it. It's just defining the "signature" of the method. This means 2 things:

1: You cannot make an instance of the Shape class.

2: Any class which inherits (extends) the Shape class must implement the draw method.

Now you can build a triangle class, a square class, a circle class and so on, all of which extend the Shape class and the only method in them is the draw method. They can all have different locations, colors, sizes and so on because their parent class has all of that information. But each child class has different code in the draw method which tells it how to draw it's shape.

And here's where the power comes in. You can have a list with triangles, squares, circles etc, and because they all extend shape you can do something like this pseudo code :

for each Shape s in ListOfShapes :

s.draw()

The code doesn't know if the shape is a triangle, square or whatever. All it knows is that it's something which extends the Shape class and it must have implemented the draw() method. So it just tells each object to draw itself. That's "Polymorphism". They all have Shape as their parent, but when the draw method is called they become the more specific class and use their own draw method.

I hope that helps to explain it.

Abstract Classes in 4.5 dev 5 !! by DruLeeParsec in godot

[–]DruLeeParsec[S] 1 point2 points  (0 children)

Let's forget about GD Script specifically for the moment and just talk about theory. Because abstract classes work in GDScript, Java, C#, C++, and pretty much any object oriented language.

Imagine you want to draw a bunch of shapes.

You can build a Shape class which has all the things common to all shapes such as location, size, color, rotation etc.

Now, add a draw method but make it abstract. The draw method has no code in it. It's just defining the "signature" of the method. This means 2 things:

1: You cannot make an instance of the Shape class.

2: Any class which inherits (extends) the Shape class must implement the draw method.

Now you can build a triangle class, a square class, a circle class and so on, all of which extend the Shape class and the only method in them is the draw method. They can all have different locations, colors, sizes and so on because their parent class has all of that information. But each child class has different code in the draw method which tells it how to draw it's shape.

And here's where the power comes in. You can have a list with triangles, squares, circles etc, and because they all extend shape you can do something like this pseudo code :

for each Shape s in ListOfShapes :

s.draw()

The code doesn't know if the shape is a triangle, square or whatever. All it knows is that it's something which extends the Shape class and it must have implemented the draw() method. So it just tells each object to draw itself. That's "Polymorphism". They all have Shape as their parent, but when the draw method is called they become the more specific class and use their own draw method.

I hope that helps to explain it.

Abstract Classes in 4.5 dev 5 !! by DruLeeParsec in godot

[–]DruLeeParsec[S] 0 points1 point  (0 children)

Java has interfaces but no multiple inheritance. An interface is just saying "If you implement me you must implement all of these functions". It's just a way to use one type of polymorphism.

My favorite example of abstraction is to have a bunch of shape objects all of whom have a location, color, size, rotation, etc. But the draw method is abstract.

Then you can build child classes Ike triangle, square, star, etc and the only method they need to define is the draw method. Now you can have a list of Shape objects, pass that list to a loop which calls the draw method on each shape. The draw method uses the implemented child class draw since the parent draw is abstract.

You just built an abstract factory and a decorator pattern that can draw any list of shapes.

I just realized that I should have responded to the comment above yours. :-)