I want to begin the journey in the best way

Started by
6 comments, last by keruyo 8 years, 2 months ago

I want to start working on a project (as a student), but I want to start as best as I can.

I want to make something in 3D. Cool! (I thought and still). So I started making a character in Blender and exported for Threejs... the exported didn't work (may probably be my fault tho); same for Babylonjs. Same with 3ds Max: sometimes it works on a browser but not on another.

I guess I'll just go with DirectX. But it's going to take so much time (that's not a problem... I have a few months)! Plus: if my files are big, my browser will start crying... so maybe a desktop application could be better?

Instead of going there, try it, doesn't work, change, try, doesn't work, (while !done {work}), I decided to ask for your help.

I don't know how components can be put together: I can make a .blend file (/max), but how do I show that? How do I put it in my codes? Now tell us what you think you can do!

OK:

  • I create my character and environment with Blender/Max
  • Animations in Blender/Max
  • Export
  • Win32 simple window
  • DirectX calls to show characters, environments; add events and so on

I have seen a book's source codes and it has models in the .m3d format and .txt format. As I think I will follow that book, I hope there won't be problems in exporting or converting to those extensions. (it's nice to see the text files).

I won't use engines such as Unity or Unreal, because for the project I have to mainly code; I'm modelling something because I prefer to make them on my own.

I would follow "Introduction to 3D Game Programming with DirectX 12" (coming out in a month)

Something I would like to make is this; but I haven't decided yet

Advertisement

Hi Keruyo

When you say you won't use engines such as Unity or Unreal, is it because you would prefer to learn to code with a language rather than using a game engine?

If you want to make a 3D game, they will certainly do much of the heavy lifting for you.

I think most people will recommend you start small and build from there.

So far, I have coded Hangman, Deal or No Deal, a remake of a Commodore64 Graphic Adventure game and now I'm making a Zombie racing game. None of these even involve physics yet :)

I'm making all of these in JavaScript mainly because they run in a standard web browser.

I would encourage you to make smaller goals to begin with and go forward from there.

Good luck.

Hi Keruyo

When you say you won't use engines such as Unity or Unreal, is it because you would prefer to learn to code with a language rather than using a game engine?

If you want to make a 3D game, they will certainly do much of the heavy lifting for you.

I think most people will recommend you start small and build from there.

So far, I have coded Hangman, Deal or No Deal, a remake of a Commodore64 Graphic Adventure game and now I'm making a Zombie racing game. None of these even involve physics yet smile.png

I'm making all of these in JavaScript mainly because they run in a standard web browser.

I would encourage you to make smaller goals to begin with and go forward from there.

Good luck.

Hi Geejayz

About engines: my project is about coding; I am allowed to use them, but warned that if it's just going to be a bunch of scripts, it just won't happen. So I'd prefer to write something on my own, even though it won't be like Assassin's Creed, but to code :--)

I would follow the book I mentioned in my first post to do something like the image I linked, maybe. If I change my mind, I think I will have enough experience by that point to do some code on my own (still not anything impossible)

This is a project as in something you will earn credits/get assessed on? What is the purpose of this project, is it to make a model viewer? Are you wanting to make a full on game etc? Would making a program that just loads a model and plays some animations be enough? Even that is a lot of work when you have animations and various materials.

If you want to make a game and also use your own models that you have made then I would recommends you use a more specific engine, something like Orge3D would let you use your own models, complete with animations, materials and so on. It is entirely a graphics engine and not to be mistaken with things like Unity/Unreal/CryEngine which offer almost all aspects of a game. In that respect it leaves you with a great deal of coding to do, it wouldn't be writing scripts or smaller sections of code like you would with some of the full game engines.

Decide what it is exactly you want to achieve, what is the main focus of your project (is it modelling, is it coding), how long do you have etc and that will help people give you better advice.

Full on game engines might not leave you with much to do but more specific engines (more libraries/frameworks really) will help you out a great deal and still leave you with a lot that you have to do yourself. They will free you up to do something more interesting.

Interested in Fractals? Check out my App, Fractal Scout, free on the Google Play store.

To add what has been said before: You are currently in danger of biting off more than you can chew.

That is fine for your own personal hobby projects that have no deadline you need to follow. Its not a good idea for a project with a deadline, even less if your school marks could depend on it.

A) Make sure you understand EXACTLY what your school wants you to do and what you are measured on. If you are just measured on your code, make sure you don't waste time modelling. Yes, modelling is fun, and being able to create a model and understand the full pipeline can be benefical even for a programmer. But you are not doing your current project for fun.

B) Concentrate on the aspects that you are rated on. Does your school mainly look on the quality of code written? Make a small game, but polish the code until it sparkles. Do they want to see you apply patterns and algorithms to "real world problems"? Make sure you tick all the boxes, even if the pattern sometimes only fits with some imagination.

3D Modelling is a huge topic in itself. Its cool and fun, but its A LOT to learn to successfully create and export 3D models and be able to use them in a working 3D application. You certainly can quickly kitbash something out of boxes and spheres and get it to run, but even then, given that you don't follow the pre existing engine route, there is a lot involved with 3D games and importing / using 3D models in them.

If you are dead sure you need to go 3D (A 2D graphics game is MUCH easier to create if you go the low level route without an engine), and you want to stick to not using a pre existing engine (its not like Unity or Unreal does the coding for you, there is so much more to code besides the low level stuff, but I could see that low level programming might be an easier sell for your teachers)...

Look for pre-existing free 3D models online and use them. Look for tutorials on importing and using 3D Models for whatever low level route you take. Preferably, you don't try to re-invent the wheel (Because then even months might not be enough at your current stage), and start with something like SDL or Mono as a Framework to build on.

About 3D Formats:

.obj and .fbx are the common "portable" formats used by most engines and frameworks I know. Each 3D Tool has its own format (like .blender for the Blender 3D Package), but these usually do not import well into other 3D tools. Unity has a .blender importer, but even then I would rather export the model as .obj or .fbx from Blender so that I could use Unitys importers for the more common file formats. I wouldn't even dare to try to import some of the more obscure file formats of the smaller 3D programs as there is all kind of things that can go wrong during import.

the two file formats you mention seem to be rather obscure... haven't even heard of Corel Motion before. What tool are you using for creating your models?


What is the purpose of this project, is it to make a model viewer?

The purpose is, basically, anything. I can do anything that relates to graphics, but it must be mainly coding (because that's what I'm studying..): games (obvious idea), games' tools, it happened a guy made graphics API; anything "visual" or related


Would making a program that just loads a model and plays some animations be enough?

It would be I think; like Blade&Soul when you choose your character, right?


...something like Orge3D... In that respect it leaves you with a great deal of coding to do

I thought about it, though I didn't find too many books about it and as I'm not really experienced I thought to follow books. I will check for their documentation


Decide what it is exactly you want to achieve, what is the main focus of your project (is it modelling, is it coding), how long do you have etc and that will help people give you better advice.

The main project is coding. It could be days or months; of course, I'm not in a rush, but I don't want it to last for more than half a year or so (as I will be doing other stuff in the meantime)


That is fine for your own personal hobby projects that have no deadline you need to follow. Its not a good idea for a project with a deadline, even less if your school marks could depend on it.

I have no "real" deadline, but as I said above, it shouldn't take too many months. Your sentence helped ;p


A) Make sure you understand EXACTLY what your school wants you to do and what you are measured on. If you are just measured on your code, make sure you don't waste time modelling. Yes, modelling is fun, and being able to create a model and understand the full pipeline can be benefical even for a programmer. But you are not doing your current project for fun.

I didn't say anything about it, but it is actually so fun :-) But you're right, it may waste take too much time.


B) Concentrate on the aspects that you are rated on. Does your school mainly look on the quality of code written? Make a small game, but polish the code until it sparkles. Do they want to see you apply patterns and algorithms to "real world problems"? Make sure you tick all the boxes, even if the pattern sometimes only fits with some imagination.

I have no information about this. It's about coding; then I will choose what to do with the language(s) I choose to code with


You certainly can quickly kitbash something out of boxes and spheres and get it to run, but even then, given that you don't follow the pre existing engine route, there is a lot involved with 3D games and importing / using 3D models in them.

Exactly. I was following a tutorial and anything that wasn't there, was really tough


If you are dead sure you need to go 3D (A 2D graphics game is MUCH easier to create if you go the low level route without an engine), and you want to stick to not using a pre existing engine (its not like Unity or Unreal does the coding for you, there is so much more to code besides the low level stuff, but I could see that low level programming might be an easier sell for your teachers)...

I don't need to go 3D; I just thought it could be cooler without any cool ideas. I mean, 2D chess is 0% tongue.png Something 'old' like a walking character with a GUI, a character selection screen, are old but still better than Snake (not for the game itself, but because it's nothing new and cool).

Ogre3D could work out. As above, I can use Unity, but then what's left to me? Low level programming may get tons of trouble and waste of time, you're right.

I even thought about C#, but I see only XNA / Unity books that use it.


start with something like SDL or Mono as a Framework to build on

I didn't know SDL; I'm looking into it right now


the two file formats you mention seem to be rather obscure... haven't even heard of Corel Motion before. What tool are you using for creating your models?

I saw them in the source codes of "Introduction to 3D Game Programming with DirectX 11" (downloaded from his website).


I don't need to go 3D; I just thought it could be cooler without any cool ideas. I mean, 2D chess is 0% tongue.png Something 'old' like a walking character with a GUI, a character selection screen, are old but still better than Snake (not for the game itself, but because it's nothing new and cool).

I know what you mean, but make sure your excitment for something "fun" does not let you loose sight of your goal. Which is to finish your work, and get good marks.

Now, programming the game logic for 2D or 3D games is not that different. 2D games today tend to be much simpler than most 3D ones, but that is more because 2D graphics are mostly chosen for the sake of simplicity and fitting into a tight budget.

Graphics programming between 3D and 2D differs a lot of course, though many 2D games nowadays are built on a "3D foundation"... like 2D games built with the Unity engine.

Generally, your choice of graphics will not affect your coding too much. You could build a 3D game with simple boxes and spheres as characters, and a level built of simple grey boxes, and code a complex physics simulation and AI agents to go with it. You could do almost the same with even simpler 2D graphics.


Ogre3D could work out. As above, I can use Unity, but then what's left to me? Low level programming may get tons of trouble and waste of time, you're right.

I even thought about C#, but I see only XNA / Unity books that use it.

I think you make the usual newbie mistake in overestimating what a game engine does.

What a game engine usually does is free you from the hassle of doing low level plumbing to get DirectX or OpenGL to do your bidding. It will also deliver some helpers like pre written shaders and stuff like that, as well as tools to ease the content creation / importing and a ton of tutorials and samples.

What an engine does not is allow you to click your game together in the editor and just hit play... what happens then is you have a static view of your assembled level without any interactivity. If you want interactivity, you need to write code. There are many options nowadays (third party assets, visual scripting tools, and so on) that ease that task further. Generally speaking though, the game logic, AI code and Physics engine glue code still is left for you to write. You can copy it from some example, but you don't have to.

You can dive deeper, write your own shaders if you want to, or even alter the engines low level code in some cases.

You might not NEED to do as much coding as when going the DIY route. But you CAN do almost as much coding, if you have the time and need for it.

Unity and Unreal Engine 4 are the usual choices for Indie / Hobbysts interested in 3D development. Both do have a learning curve, steep with Unity and even steeper with Unreal. But that is true of every 3D engine. The upside is both engine are "free" (totally free in your case), come with lots and lots of tutorials and a large community to rely on.

Languages of choices are C++ for Unreal and C# for Unity. I can tell you that the C# API for Unity is fantastic, had a very easy time getting into it as a longtime Java dev... I am currently struggling a bit with Unreals C++, but that has more to do with me not having had enough time to really sit down and dig into it than it being really that hard to learn.


I saw them in the source codes of "Introduction to 3D Game Programming with DirectX 11" (downloaded from his website).

Make sure that if you continue to use this book as a reference, you understand that the file formats they use are not really the generally accepted standart. There is a good possibility that at least some of your model import problems would be gone if you use .obj or .fbx file formats, and common tools like Blender to create and transfer your 3D models

As a possible route for you to go, find an idea that interests you, lay out what makes it special / where it needs special code, research it thouroughly to make sure you don't overcommit and understand possible solutions, then you try to find a way to solve the problem in the most efficient way that still leaves enough room for you to show your coding skills.

If your plans are modest, stay DIY... use something like SDL or Mono, maybe even try to implement directly with DirectX or OpenGL. Just make sure you now cut back the game logic / physics interaction / AI to a minimum so you have enough time to create and test your low level stuff and shader code.

If you want to achieve a little bit more in the time that you have left, look into an engine. PLAN IN SOME TIME TO LEARN TO USE THE ENGINE! Its not a plug and play affair. If you are able to get up and running in a short enough time, you might leave the low level stuff to the engine and now concentrate on more elaborate game logic or AI code.

Like implementing your own A* path search. A complex shooting and hit locations system, or whatever you want to do.

Make sure you have a CLEAR chunk of the project layed out for you to implement, that sounds about right in complexity both for satisfying your schools rules, and for you to implement in the time left. And then concentrate on that, and make sure you don't get distracted by other coding, 3D modelling or whatnot above the absolute minimum required.

You can always make something cooler, more exciting later on in your free time. Better to take risks then, when nothing else than your time left for other hobbies is at stake.


I know what you mean, but make sure your excitment for something "fun" does not let you loose sight of your goal. Which is to finish your work, and get good marks.

...

You can always make something cooler, more exciting later on in your free time. Better to take risks then, when nothing else than your time left for other hobbies is at stake.

You're right, I'll try to set small goals. My teacher (who doesn't, but especially) loves cool stuff, and something really cool could shoot my mark up in the sky :)


I think you make the usual newbie mistake in overestimating what a game engine does. [...] If you want interactivity, you need to write code.

... the game logic, AI code and Physics engine glue code still is left for you to write. You can copy it from some example, but you don't have to.

You can dive deeper

Getting to better results for our eyes without spending years. I made that mistake :-) Now I understand it couldn't be that bad idea


As a possible route for you to go, find an idea that interests you, lay out what makes it special / where it needs special code, research it thouroughly to make sure you don't overcommit and understand possible solutions, then you try to find a way to solve the problem in the most efficient way that still leaves enough room for you to show your coding skills.Make sure you have a CLEAR chunk of the project layed out for you to implement, that sounds about right in complexity [...] And then concentrate on that, and make sure you don't get distracted

You can always make something cooler, more exciting later on in your free time. Better to take risks then, when nothing else than your time left for other hobbies is at stake.

That's the main problem. Finding that idea is my main issue right now. I will try to think about something; I've seen too many AAA games and thinking about something smaller doesn't satisfy me, but it needs to :P

(looking into SDL right now!)

This topic is closed to new replies.

Advertisement