Ready to Delve into 3D Programming

Monkey Forums/Monkey Beginners/Ready to Delve into 3D Programming

En929(Posted 2016) [#1]
I have been doing 2D programming for about 5 years now, and I'm about ready to go into 3D game making preferably with a programming aspect to it. I have hardly done any 3D game programming or development. I learn best from video tutorials coupled with good forums (like this one) to ask questions in. Thus, unless there are some good video tutorials about how to do 3D programming in Monkey-X, I was considering learning 3D game programming/development via tools such as Alice or Unity. Has anyone used any of the latter tool sets yet? What are your thoughts about them? Would Alice really help me learn game programming aspects of 3D game programming? It looks very intuitive. That is, I consider myself a serious hobby game developer, I want to get better, I enjoy programming and programming would also help me see how 3D game development works. But, at the same time, I'd like to have good video tutorials where I could learn it and a place where I could ask question like I do on this forum or post code, etc. so people could help me if I need help or if something is confusing. That's exactly how I learned 2D game programming. Thus, any ideas? Thanks!


DruggedBunny(Posted 2016) [#2]
It might be worth trying the now-free Blitz3D to get the basic concepts of working in 3D. You wouldn't want to stick with the language/engine, but it's still a great introduction to 3D worlds, tons of demos and tons of Youtube videos as well...

https://www.youtube.com/results?search_query=blitz3d+tutorial

Oh, and you can use the very same concepts/functions in MiniB3D from Monkey, for the most part, but it'll be easier to learn the basics from Blitz3D out of the box -- MiniB3D can be a little tricky to set up and work with, and the online docs in Blitz3D (F1 for quick-help, F1 again for full help) will help a lot.


En929(Posted 2016) [#3]
Thanks DruggedBunny, I will consider that.


Soap(Posted 2016) [#4]
Unity is free too, and it does have video tutorials published by the company that are decent and cover most topics you need to know.

http://unity3d.com/learn/tutorials

Unreal is same situation. Free, and has tons of good videos explaining.

Just dive in and get started anywhere.

Making 3d games with Unity/Unreal etc. is much easier code wise and less time consuming than doing it all from scratch. You don't need to know much more than you already know really if you're using these tools.


Gerry Quinn(Posted 2016) [#5]
The big question is: do you want to do 3D programming, or do you want to make 3D games. If the latter - unless they are very simple graphically - I think you might be better getting used to a tool like Unity, because the graphical and design aspects will be the hardest part. Conversely, if you wanted to make a 3D procedurally generated landscape, a more 'programming' approach, using Monkey, Blitz or similar, might be better.


En929(Posted 2016) [#6]
I wanted to do both a bit of both Gerry. That is, I wanted to learn 3D game making but also learn how it all works too.


En929(Posted 2016) [#7]
Thanks for the info Soap


GarBenjamin(Posted 2016) [#8]
Just throwing this out there as something to think about.

I've been a programmer for a long time (as in decades starting on a TI-99/4a then C64) so this may well explain some things I will say.

Anyway, I got into Unity a little over 2 years ago now. Last summer I decided to look for a more traditional programming style of development for 2D games. After checking out many options I decided on Monkey X. In fact, any new 2D games I work on will be done in Monkey X.

[was typing on cell phone and got a phone call... anyway...]

What I like about Monkey X is that it had exactly what I was looking for. A no-nonsense way to just focus completely on programming a game. No Integrated Scene Editor thing I was forced to learn and work in. Just open a code editor and get to work.

Anyway, so I decided to use MX1 for all future 2D game dev work and use Unity3D for 3D game dev.

Last month I finally got into 3D game dev with Unity3D:
http://gamejolt.com/games/fps-action-adventure/118423

However, I found myself basically wrestling with the same kind of things as before. So, I just spent quite a bit of time scouring the Internet looking for options.

I finally narrowed it down to MOGRE (.Net version of Ogre3D), Irrlicht Lime (.Net version of Irrlicht) and OpenTK (a .Net wrapper of OpenGL and OpenAL). I dropped MOGRE and Irrlicht Lime simply because I couldn't get MOGRE to work at all and both it and Irrlicht Lime looked like they were fairly outdated.

So, I decided to just go with C# and OpenTK:
http://garsgames.com/blog/game-development/testing-code-oriented-3d-gamedev/

I have basically just got started on this adventure so have not made much progress yet. However, I am looking forward to it. Mainly because it is all just programming. No fancy editors and other foolishness to mess around with.

Anyway, I said all of that just to say... I'd recommend that you keep this in mind. Things like Construct, Unity and others are fine game engines. They really are. People can and do make many impressive looking games with them.

However, when you rely on things like these you are kind of shooting off your own foot in my opinion. Because you are not gaining any real understanding of how to do this stuff. You become very dependent on these high level tools. And ultimately as your projects grow in scope you will find yourself bumping into limitations in such systems.

Things that if you just had access to some lower level programming would be fairly easy to do instead become nearly impossible.

So, basically if you only want to do projects of the kind of scale that you see commonly made in Unity3D (which truly is a pretty broad range) then just go with Unity3D. It will make it all a lot simpler especially if you prefer working visually inside an editor.

I do not like working visually in those editors. For me it is much slower than simply programming it all.


GarBenjamin(Posted 2016) [#9]
Thinking about it more... it seems like someone around here recently released a 3D module for Monkey X. I might take a break from learning OpenGL this week to check out this new 3D module.

Mainly because it seems like they must have already done all of the foundation that I will need to do if I stick with a from scratch in OpenGL approach. So this could save a lot of time and saving time is very important.

Anyway, you may want to check that out. Think I saw it posted under Modules forum here.


En929(Posted 2016) [#10]
GarBenjamin, thanks for the info. Yes similar to you, I'd like to gain full understanding of 3D programming/development and its process and it's in's and out since I consider myself one who is a serious about game development/programming for the long hall (as a hobbyist). DruggedBunny, after doing some serious thinking, I think Blitz 3D/Mini3DB might be a good place to start. I'm actually familiar with BlitzBasic 2D and in fact, that was my first programming language (it is part of why I'm here too). Here's another reason why I think Blitz 3D would be good. Well, both this page and the BlitzBasic page has been some of the better pages that I have gotten the most help from when learning from scratch even back when I started with BlitzBasic. I can't say that about other pages. I even went to these two sites and learn about other language like Java and Javascript. So, going with Blitz 3D (and you all said Mini3d) it'll just be an extension to what I'm already doing. Well, that's great and it seems like I would learn sufficient programming knowledge or 3D programming or otherwise just by doing what I'm already doing. So, I think that's a good idea!! And besides, one of my main goals besides doing 3D development is to continue making web games (because I like those the most). Thus, since BlitzBasic 3D is similar to Mini3D, it could be my doorway to making those as well.Thus, that's a good idea.


taumel(Posted 2016) [#11]
I don't know which aspects of 3d interest you but you're aware that 3d (hardware as well as software) has changed within the last 15 years? If i wanted to get into 3d, i would want to learn how it works today.


GarBenjamin(Posted 2016) [#12]
If I knew anything about how to exend Monkey / build a "proper" module I think I'd be tempted to look into creating a module to bring Ogre3D support into Monkey X.

Checking out their example videos and seeing how it is multi-platform and appears to be an up-to-date modern 3D framework.... it would probably be an ideal choice.

Right now I am still looking for a code-oriented solution to 3D game dev. I think a big part of the problem in finding one is failing to see any support in MX I decided to search for C#.net 3D frameworks and there are very few if any that are currently updated.

During lunch break I am going to do one last search opening up the language requirements and depending on if I find options to explore or not may just have to commit to OpenGL. I am just trying to avoid going so low level so the dev time is minimized. It also seems very strange to me all of these fine open source 3D frameworks out there and yet most are only supported by C++.


En929(Posted 2016) [#13]
That sounds good GarBenjimin. Im interested in that. And you're right taumel. It would be nice to work with something modern. Im also hoping that what I use next will have an active website and forum like this one in case I have question.


DruggedBunny(Posted 2016) [#14]

If i wanted to get into 3d, i would want to learn how it works today


Depends -- the basics of moving entities around in 3D remains the same. If you were writing an engine from scratch, or looking to start at the deep end, fair enough, but for a beginner interested in learning the core concepts of programmatically moving things around in 3D, I'd still say Blitz3D is very relevant indeed. (Also way easier to learn how the commands work than MiniB3D, etc, due to the built-in help -- not to knock MiniB3D, of course, but even being familiar with the Blitz3D command set I found I had to keep looking things up online.)


taumel(Posted 2016) [#15]
More a Nope than a Depends because apart from basic transformations quite some things have changed. You're doing many things differently today, shaders replaced CPU tasks, so achieving certain things works differently, the workflow/pipeline has changed, new lighting/material setups, physics driven collisions, ... you also don't start with a hidden line removal 3d engine anymore (unless you want that look and also then you would do it differently).

A beginner could try Unity. It's free (if you can deal with the splash screen) and has a huge community (tutorials). It's not the best engine (which depends on your needs) but an allrounder nonetheless and comes with a nice rendering engine (and its own erratic stutters). If you're into sound, you'll most likely enjoy it.

It could work like this, you open the editor, create a project (just like in Monkey, the lazy Max days are over), create an empty object in the scene, create one or more scripts objects which you attach to the former object. Within the script objects you code in C# and trigger all the functions which are exposed from the engines (game/render/sound/...).

You'll get yourself running around in a forest of stuff just by code. At some point you'll want to alter materials, position objects more intuitively, play around with the lighting, add shaders, mix sounds, ... In pure code you can be rather blind, so you'll write a simple interface in order to test and adjust stuff easier and faster. You can do this on your own or utalise the editor.

A subset of the functionality is available to the editor and the scripts. To a large degree it's up to you, how much you go by code and/or the editor. You can learn a lot this way, stay motivated (things look yummy in modern engines) and get dirty too. After this you might enjoy the stuff happening behind the scenes and/or have a better understanding about what you like/dislike and need/don't need. Then you might implement something on your own.

I had a feeling that i shouldn't have posted here but doing this wrong sounded like such a waste of time.


GarBenjamin(Posted 2016) [#16]
I may have found a solution... possibly... as documented at the bottom of my log:
http://garsgames.com/blog/game-development/testing-code-oriented-3d-gamedev/


En929(Posted 2016) [#17]
GarBenjimin, I read your page. I saw all of the various toolsets that you talked about especially at the bottom of the page.


GarBenjamin(Posted 2016) [#18]
Okay, I will be checking out PureBasic tonight.

There is one more option that I have not added to my page yet and probably will.

Definitely something I am considering trying out.

Anyway, the idea is to use Blitz3D and the FastExtension library. Because it seems to give you more power than normally available in Blitz3D. More modern FX and so forth. I mean check out some of these examples:





En929(Posted 2016) [#19]
Those are nice screenshots GarBenjimin. Those are EXACTLY what I want to build. I'm thankful for all of the input that I'm getting. It'll all help me to make a good decision!


Danilo(Posted 2016) [#20]
GarBenjamin wrote
Okay, I will be checking out PureBasic tonight.

On your website you wrote:
I may even be able to use PureBasic to create a library that is usable by Monkey X.
If I did that then I would be able to use MX for all of my game developmentā€¦ 2D and 3D!

Just be aware that it's an gray area, see PB Help -> Terms And Conditions:
All components, libraries, and binaries are copyrighted by Fantaisie Software.
The PureBasic license explicitly forbids the creation of DLLs whose primary function is to serve as a 'wrapper' for PureBasic functions.


It may be better to import Ogre3D directly, but it's a very big beast. Check out the sources. ;)
I'm using Irrlicht for the start, to see how importing in MX2 goes. Seems to be fine so far. :)


En929(Posted 2016) [#21]
WOW Irrlicht looks cool! I saw the screensht Danilo. These are all of the kinds of things that I wish to learn to do/


GarBenjamin(Posted 2016) [#22]
@Danilo Yeah I just saw that bit last night about not being able to use it to create DLLs for PB functions. Like I said my main focus is just on finding a solution period. I checked out PureBasic and the 3D demos look very good. The PB language will take a little getting used to. It is kind of like a cross between Blitz Basic and C. Definitely workable.

Good luck with Irrlicht. That is the other serious option. I think either framework is a great choice and certainly either one would be a major enhancement for Monkey X.


EdzUp(Posted 2016) [#23]
Having coded for many decades now I can honestly state that if you want to go deep into 3d I would go Code::Blocks and MingW C++ or C# the main reason is you will end up there in the end if you want raw power. You could also look for SDL2 as well for it.

Unity/Purebasic/Blitz3d are loverly tools BUT you become dependent on those tools, with C++ it's as good as your abilities are.


taumel(Posted 2016) [#24]
I could argue but i guess you know some things on your own already.

At EdzUp we like to keep upto date with the latest technologies to enable us to rapidly develop games and applications at any time. As soon as a client comes to us with a idea they want created we need to be ready to bring it to life as soon as possible and this is where Unity gives us the power to do just that.


EdzUp(Posted 2016) [#25]
Yeah haven't updated that page in a while will change that as we havent used Unity in a while currently we are using MonkeyX and C++.

Gotta update the website lol


taumel(Posted 2016) [#26]
;O)


EdzUp(Posted 2016) [#27]
There fixed it ;)

Currently we have only released a couple of apps with Unity but loads with C++ and some with Blitz products. Star Rogue is our first MonkeyX title and is in development :)


Danilo(Posted 2016) [#28]
Quake3 Level Loader working now directly in MX2. See Irrlicht Import Tests

Register to become part of the MX2 community.


En929(Posted 2016) [#29]
Is Monkey 2 going to have out of the box 3D functionality?


EdzUp(Posted 2016) [#30]
En929: iirc mx2 would have to have a home grown 3d engine but mark has hinted at writing one later. It's always best to see the first release then decide from there what you want to do and where it's going.


En929(Posted 2016) [#31]
Ok EdzUp, it would be great if they eventually created that.


En929(Posted 2016) [#32]
Thanks for all of the input. It's seems like a lot of decisions to make.


tiresius(Posted 2016) [#33]
It was hinted at in a post but it is conspicuously not on the official roadmap. :(


En929(Posted 2016) [#34]
I just nw went back and gave Blitz 3D a whirl, and it seems pretty instant. It seems like with the Google Sketchup 3D modeling program and with just one video tutorial, it seems like I was able to get something going within minutes. It's pretty neat and it seems pretty intriguing so far. As I mentioned, it kind of feels like I'm picking up from where I left off years ago.


EdzUp(Posted 2016) [#35]
It was a nice system but unfortunately wasn't kept upto date so now it's fallen by the wayside. There are some instances I have come across where some games don't work due to driver issues and the direct x 7 backend of b3d so in this case I wouldn't use it for any serious games but use it as a learning tool.


En929(Posted 2016) [#36]
EdzUp, that's one of the main things that I don't like about B3D. I just tried for a moment just to see what it was like, but then I might move to a more modern type of game development tool. I feel that staying current is also important.


EdzUp(Posted 2016) [#37]
Yeah I think that's one reason I rolled me own with C++ and OpenGL that way it's down to my capabilities not the languages limitations