It manages a lot of the fiddly annoying stuff for you while giving you the full power of the GPU. It's pretty easy to get a window up and a context attached with GLEW. There are some libs out there to do that stuff, but why? It's not particularly hard.
I also recommend using some good C data structure libs, like stb or my own sti: https://github.com/yzziizzy/sti Or you could write your own if you want the experience. Just make sure to learn and use the techniques from stb or sti in making typesafe generic data structures in C.
@gentoobro@hazlin > Months, minimum. Maybe years. The path to being a game dev isn't short or easy, but it is rewarding.
i dunno about that. i burned out of coding after ten something years of it being the only thing i could afford to do, while being plagued by the adhd demons that made it hard to impossible to care about sticking to a project nobody else cared about.
it doesn't really matter what you use to build stuff. valhalla was made in game maker but the code and design was beyond atrocious internally. it matters more that somebody cares you exist, because its a long road to finished and there's zero rewards along the way (what i call "reward deserts.")
Months, minimum. Maybe years. The path to being a game dev isn't short or easy, but it is rewarding.
One day I'll understand that, but it is too much for me at the moment.
It'll be too much for you until you take up the challenge and conquer it. The way you grow is by taking on difficult tasks.
I do really like the idea of a minecraft clone.
Me too. While you could use something like Godot for rendering, you're going to have to write the entire voxel system and inventory system from scratch, and that's the hard part. You'll also most likely have to write a bunch of custom shaders, mesh processing, and texturing code in order to efficiently render the voxels due to the great number of textures and the weird baked-in lighting.
And, I don't like minetest, it is super resource intensive for some reason.
Lua and an ancient graphics engine (Irrlicht).
Java vs C++
Minetest leans heavily on Lua. While luajit isn't the slowest thing out there, it's slower than Java. More importantly, the interface to the C++ is awkward and inefficient, and the semantics of Lua preclude writing efficient code (ie, tables instead of structs).
And, I still want to make a minecraft clone.
Do it. Use allegro for the boilerplate, per @icedquinn
Ah. I see the situation now. Unity makes it really easy to get a model to walk around a plane, or whatever terrain plugin you use. After that it's a massive net productivity loss for software developers. Sure, it's great for artists who don't really understand any code, but it's an anchor chain around the neck of a developer. You have to do things Unity's way. You can't just change core data structures or engine loops willy-nilly. There's a massive complicated pile of junk that you don't need integrated into the parts you do need, regardless of which things you need. This gets in the way and slows you down and frankly is a demoralizing clusterfuck. This is why all the new indie games coming out are disjointed piles of plugins and store-bought assets. This is why the "release" of Manor Lords wasn't really that much improved from the early access demo. This is why Valheim development essentially stalled. (And they still haven't fixed the horrible LoD popping.)
To be clear, it's a problem of using an "engine", not a problem specific to Unity; you'd have the same issues on Godot, Unreal or Lumberyard.
Lean code lets you iterate fast. If I want to test out a new feature, I just write a quick function and hack it in to whatever existing location makes sense. If it works, great. If not, rip it out. When I run into performance problems with it, then I optimize it.
This comes at the horrible cost of having to learn OpenGL and how a GPU works conceptually and writing a bit of boilerplate. That's maybe 10% of a 2D game, especially if you use existing libs to do things like load meshes into memory. Even in 3D it's smaller than the gameplay part, though everything is more complicated in a 3D game.
@gentoobro > it's an anchor chain around the neck of a developer
A hard lesson learned many times working at a company chasing web frame works xD
Quite a while back, I tried building a minecraft clone in Unreal, using their visual code. And, that was actually a lot of fun. Though, there were limitations as you'd imagine xD Still, I was able to place and mine cubes.
I spent the most time learning Unity. Some of my demo demos of stuff existed there. But, when they went to being a publically traded company, I knew it was not for me. (seem to be very justified, given some of their business practices as of late). Put away Unreal, when I realize you would always have to rent your software from them.
After that, I did spend a good amount of time learning webgl, but it is a lot lol. It I just, want to make a simple 3d game, I'll use godot for now. It can load, texture, transform, and play armature based animations, day one. Just reaching that same level from scratch would take... idk, a long as time? Weeks?
Discrete pieces is doable for 2d. I've tried to get started the same way for 3d, but man, that is a lot lol. One day I'll understand that, but it is too much for me at the moment.
Overall, my competency with godot + blender, is enough, to well, recreate a simple shooter, or some other such thing. I do really like the idea of a minecraft clone. Though I've been stumped by the technical aspects on that one a few times xD And, speed really does matter for a MC like game. And, I don't like minetest, it is super resource intensive for some reason. I was flabbergasted when I realized I could play minecraft on my laptop, no problem, but minetest would try to melt it xD
There is no way Java minecraft should be anywhere as close to performant as C++ based minetest.
In general. kek, I guess I really do still want to do game dev. And, I still want to make a minecraft clone. One that isn't retarded and going to melt my laptop xD I feel like that would make a great base for a game. There is a reason why modding was so prolific in minecraft.
@gentoobro Nope. And, the last attempt was with a group, I was their technical person, but I left what had been made for them (I wouldn't feel right sharing it, but be assured it was very very basic and straight forward xD). (That one failed because of, people problems, and the writers/lead had no idea what the game should actually be.)
Lots of leg work, but where was the project was supposed to go xD ? It became obvious over time, that no one knew. Though many insisted.
A few very rough prototype scenes were created. Some environment, a basic character controller. But, these things, do not make a game. It was quite an eye opening experience for me.
@gentoobro What you describe is how I was taught to make things.
I think it can be viable if you have a lot of resources to throw at it.
But, it almost has a 100% failure rate for me xD At the moment, I simply do not have the capacity to buffer and resolve design pattern issues, while finding what the game should be, via interactive discovery.
I've had a few attempts, where I made character controllers, setup environments, and, generally had all the parts of a working MVP game. But, every decision made from that point forward, required all the existing pieces to be adapted, and very quickly the complexity of making changes grew to great, and I had to give up xD
I'd say I've done that between 5-10 times, making it different distances each time. So, I'm pretty convinced that I can't go that direction xD
After trying to break this whole thing into pieces, and really evaluate where the problem was, it appears to be, in what the game should be.
Sort of like, trying to discover how a house should be, while you are building the house. When you realize something should be changed, the amount of work that will take, will be directly proportional to the amount of work already completed.
My hope for the power-point, is that, it will let me explore, and settle on ideas. Discovery of mechanics/design in a medium of code is very heavy, so I am trying to strike a balance and find an intermediary step where, change is nearly free, and I can see the effect the change has on the flow of the experience.
@gentoobro I am considering making another attempt at a game. I've tried several different ways, including working with a group of people.
Considering all the ways I've seen things fall apart, this is my dev-plan: 1) A short story of a short scenario, in English (15 minutes of play time) --The information here, will be the guide stones, shaping all later steps. 2) An animated power-point of the desired game play for those 15 minutes, but with only extremely expediently created assets. --fundamental world choices will have to be made --mechanics will have to be developed 3) Using #2 as a guide, build a interactive MVP version of the game. (pass/fail step) 4) If the experience is good, apply polish (should still be done with a focus on expedience rather than completion) --create better art assets --work on the "feel" of the mechanics
Typically a bad idea, unless everyone in that group has proven by their historical behavior that they are incredibly dedicated and hard-working, and also everyone in the group has enough available time to work on the game.
dev-plan
You have it all upside down. Get something super basic running and then playtest it aggressively as you build, bit by bit. Like, start with moving a square around on the screen, then making it jump, then making it collide with other squares, then... and so on. Work on the feel of the game from day one, and download some free decentish art too. A game is no fun if it's no fun and you can't determine that without playing it. A lot. And changing it when it's not fun. No need for corpo powerpoints.
If you think this method sounds strange, remember that it's what Valve did back when they made games.
@hazlin No problem. I'm always willing to answer gamedev questions to whatever capacity I can. The more devs the more better, and it can sometimes be hard to find good, modern info on the subject.