Chess, Pencil Art, Piano, Composing, Playing Games, Programming Games, Acting on Japanese TV/Movies, Authoring, Designing Games, Martial Arts, LEGO® Technic™, 3D Modeling, Japan, Tokyo, ภาษาไทย, 日本語, le français
But creating 3d games without a gaming engine isnt really possible, right?
-Do I need a game engine
This doesn’t make sense. How did they make great games before there were engines? Of course you can make 3D games without game engines.
wich is a good one
You are 15. You learn very easily as your brain continues to develop until you are 25.
This is specifically the time in your life where you should be doing the hard work and walking the tough path. Falling back onto an engine at a young age is literally just throwing away your potential.
I am a game-engine programmer because I was making all my games from scratch even before I was your age. Difficulty and learning curves are irrelevant at this point in your life, and you only do yourself a disservice by taking “easy” routes.
Refer also to FantasyVII’s reply, as it is exactly what you should be doing at your age. This is the time when you learn the in’s and out’s of the technology.
not just learing for wasting time
Learning is never a waste of time. Unless you’re studying liberal arts, fine arts, or philosophy. But any learning related to programming is never a waste of time.
-How do I learn a programming language well?
I think there is much experience I need too,
So start programming and get that experience.
So I wanted to start with a book.
No, you want to start with coding. Books are secondary but can be applied at the same time.
Once again you don’t seem to understand how to maximize your youthful potential. Once again you are doing a disservice to yourself by thinking in terms of, “Do this, and then do that.”
Yes, you need to learn to walk before you can run, but using 1 arm to hold a book doesn’t prevent you from crawling, walking, or running. There is absolutely no reason you should not be doing these things simultaneously, if you even read a book at all, which again is secondary. The top priority is always coding.
Should I just go in the internet and try to find exercises for my level?
Why don’t you just make your own “exercises”?
Instead of asking if you should try to find exercises, why don’t you understand that everything you do is a learning experience and in some way beneficial?
You don’t need to ask before looking for exercises, just go do it.
Why do you need someone holding your hand at every single step of the way?
A normal growing programmer: “Hmm, I want to program better. I might be able to do Pac-Man now.
Okay, that was fun. I bet I could do Tetris now.
That was fun. I am curious about exercises, so let’s look online for some.
Hmm, I didn’t do as well as I thought. I have more to learn about inheritance, so next I will make a top-down shooter like 1942 and try to incorporate inheritance better.
That was fun, but the way I handled the enemy AI was terrible, plus I think I am ready to do fancier graphics for my next project.”
Some of your questions are okay to ask, such as which is a good engine or book, but some of your questions are worrisome. The only reason a normal growing programmer asks, “What should I do?”, is when he or she either has a total inspiration block (but still generally knows what to do next) or can’t decide between doing this next or that.
The normal programmer simply does whatever he or she wants, always looking for a project to challenge him- or her- self in some new way and works on fixing past mistakes from previous projects. There is literally absolutely no reason he or she would ask, “Should I look online for exercises?”. He or she will simply do it if and when he or she wants. It is all part of the learning process, so just do what you want. It’s even more completely pointless to ask if you should do online exercises given that in the time it took you to ask and get a reply, you could have already done tons of exercises online.
As long as you are programming you are doing it right.
This is your programming journey and it is up to you to make it. It is your decision what project to pursue next, whether to read a book, whether to look online for exercises, etc.
And just because you are doing 1 it doesn’t mean you can’t do the others. Why would doing a personal project stop you from also reading a book and trying out some exercises?
Get programming and forget everything else. Take advantage of your youthful brain while you have it. This is the time when you buckle down and kick programming in its ass.
I don't want to rename all my files just because Visual Studio does that...
Oh well. Now you will know to put more focus on naming conventions throughout the entirety of your next project. For now you have no choice but to either deal with it or rename something in a way inconsistent with the rest of your project.
Or file a complaint with Microsoft® and hope they release a patch.
After running Scandisk your lost files will be in C:/FOUND.*, although you will need a hex editor to take specific parts of them out and reconstruct your source files. The only way to avoid it is to not write code so corrupt that it locks your computer. Full-screen is not recommended while debugging, as if any break-points are hit etc. then by definition your computer will lock completely.
Otherwise, save all source files in advance before running your program in debug mode. Or if it is really a problem, save all files and restart Visual Studio before running the program.
Uhm you sound angry to me. Is there a root for this?
I am not angry, I simply speak directly. Some might call it, “tough love”.
Im not here asking whats my next move.
You’re just messing with the phrasing.
However you put it, the general idea behind what you are asking is, to me, best answered by not answering it, and instead pointing you in the direction of self-discovery.
Anytime someone asks, “Is it too early for me to…?”, the correct answer is usually, “I don’t know. Do you feel that it is too early for you to…?”. No one should ever answer this question for someone else (unless we are talking about cases in which failures result in death, disfigurement, or spontaneous urination).
Think about this way if you develop a habit of blinking your eye often do you think its easy to just remove that habit? subconsciously you will often do that.
That’s not even an analog for an analogous analogy.
When you are learning programming, knowing that what you are currently coding is part of a learning process and may not be the best code or method etc., why would you “learn” it as a “habit”? A habit when coding is something like where you apply your whitespace and braces. It is absolutely unrelated to actual coding practices such as the use of globals or abusing inheritance etc.
That’s like saying you’re exploring a cave and you come to a fork, and because you took the left fork you are forever bound to take the left fork every time you revisit the cave. No. You take the left path to learn where it goes, and then if you don’t like it (or if you are just curious) you come back and take the right path. Using globals is not a habit, it is a conscious decision you make, and then you learn from that mistake as it bites you in the ass until you retreat back down the cave and then you go down a better path, with all of the experience and understanding of failure recorded on your map.
If you just ask people what to do (however you want to phrase it) and they tell you not to take the left path so you blindly listen and only take the right path, your map will never show that little tiny special place down the left path where you can drink cool refreshing pure water. Even if the left path is mostly ugly, you still have to explore it so you can understand what really lies down it.
It’s just like how you thought ECS was good just because it uses composition.
You found advice online where people said to mark a path off your map so you just blindly did it. You have no idea when and why you should use composition over inheritance because you didn’t explore those for yourself.
People often over-generalize in saying that composition is better than inheritance because inheritance is easy to abuse. On the other hand, one could argue that ECS is literally the abuse of composition. Neither one is always better than the other, and both can be abused. And the only way you are ever going to truly learn their delicate dance is to start walking down those paths and making your own maps.
Do i need to start to learn good programming practice like Entity component system?
Where did you get the idea that this is “good programming practice”?
It’s usually overkill, especially for indies and hobbyists.
I read that ECS was base on composition.
So? Is there something about composition that makes it always better than inheritance? Or are you just trying to skip the learning process and reading a bunch of articles online in the hopes of skipping “bad” practices for yourself, and you found a bunch of people promoting composition over inheritance and blindly just accepted it as universal truth without considering context?
Hint: It’s the latter choice.
It’s exactly what you are doing right now. Instead of making mistakes, learning, and redoing, you are here asking how you can skip all the mistakes and avoid redoing things.
That’s basically the worst possible way to learn programming, and if I were to be bold enough to speak directly I would suggest it is a very bad sign as far as the future of your programming skills go.
If I have the choice between just picking on-my-own some new set of programming skills/practices vs. asking online for people to pick for me, the correct answer is always to pick for yourself, make mistakes, and learn 10× faster from them. Not only do you learn much slower if you never fail, having people pick for you means you never even learn why they chose this or that. How can you be a true programmer if you can’t make decisions for yourself?
It’s a bad sign for your future because:
#1: You simply aren’t going to develop very well as a programmer. It will take you 10× longer to get anywhere compared with just making mistakes and learning from them.
#2: It’s a very bad characteristic of a programmer. I simply can’t imagine someone who has this kind of tendency—to run away from failures and mistakes—ever becoming a real programmer, let alone actually good/successful at it.
I know why globals are evil without ever having been told. Why? Because I screwed up every one of my beginner-level projects with them, and I dealt with the mess they cause first-hand.
We all have to go through our own battles with bad coding practices. Those hardships make you street smart, not just book smart. A real programmer has to be both, so stop asking online for everyone to make your decisions for you, roll up your sleeves, and get dirty by yourself.
Your question doesn’t make sense unless you phrase it in a, “Why make games, as apposed to…?”, form. It would be a lot easier to give a specific answer if we could also explain why a specific alternative is not as suitable as game programming. For example, why not database programming? The answer would likely be more along the lines of motivation. If programming meant doing databases, I simply would not be a programmer, period.
You also make something seem hard that doesn’t have to be hard.
Game-programming doesn’t have the monopoly on overly challenging areas. You can get too far in over your head no matter what type of programming you pursue. Being able to take things one step at a time at your own pace is a completely separate subject. Just because we say, “Make games,” it doesn’t mean we are saying, “Start programming graphics before you are ready.”
Working at your own pace should be considered implicit when we suggest making games. The focus on games is mainly (I would assume) a means of maintaining motivation while also sticking to a subject that is directly applicable to one’s future (we assume these people want to get into the video-game industry).
I suppose I should answer this, since I work at Square Enix on Final Fantasy XV.
It is a combination of pre-created model animations, scripting, and particle systems. Each of these are fairly advanced, though, at least these days. Not as much back then so it is doable by a single person.
#1: You can use FBX for the forward kinematics of the animation and the camera animation. For that kind of summon you could skip scripting. He doesn’t interact with anything around him, but the animation file (FBX) needs to have a companion file with information such as, “Enemies take damage at this time, using this animation,” etc. This could pass as your scripting system.
#2: FBX isn’t great at particles. You really need to make a particle editor. This is where the bulk of your work would be. You also need to make the run-time for it, of course.
In Final Fantasy VII we had a very simple interpreted script language that was mostly high-level commands such as “Select All Enemies” and a few commands to change the camera view, etc. Then during attacks it would play a dynamic sequence (in fact we call them “sequence nodes”) using a combination of assets as mentioned above.
So, to answer your final question:
Shouldnt be hard, shouldnt it?
Yes and no.
Making the summon itself isn’t much of a challenge, it’s making a robust engine and tools that can interact with the animation and run the particles and enemy AI that is the challenge.
You mentioned that "you don't want to be decompressed", so do you perhaps mean that you want to compress and decompress your data rather than compile it?
I think he wants it to be embedded (compiled) into his executable (based on his comment about not wanting them to be decompressed). Won’t spend much time “answering” this since this is just a guess based on vague scraps of information, but add them as a resource to your Visual Studio project. Then look up the Win32 API for accessing embedded resources.
Errors propagate down bone hierarchies very easily. It is enough of a problem that at Square Enix that we have had to go very far out of our way to minimize it.
#1: You haven’t applied key-frame reduction/addition. Your run-time should be making only linear interpolations, so in order to keep a reliable reproduction of an animation with complex interpolation modifiers etc. you must add fake key-frames at a given small fixed interval (once every 15 milliseconds or so, up to you) and then use the Autodesk® FBX® SDK to sample the data at that time. If the sampled data is close enough to your generated data then you can eliminate the key-frame. For example, if you have key-frames A, B, and C, use A and C to interpolate your own version of the B key-frame while using the Autodesk® FBX® SDK to generate a reference B. If they are close enough, you can eliminate B as a key-frame.
This will likely eliminate a large amount of accumulated errors you are getting, forcing your exporter to check where it is inaccurate and add key-frames there to correct for it.
#2: Your use of quaternions is surely introducing a lot of accumulated error. The data was authored via an X, Y, and Z rotation, each value interpolated independently of each other. If you want a faithful reproduction of the animation you should stop combining them into quaternions. Not only will this improve your accuracy but it will give you much more freedom later when you want to do more than just play animations (when you want to start getting dynamic about where your character’s head points, etc.)