Topic: Potential tutorial series

I've begun work on my game project finally. This means that also, I can begin potentially producing some tutorials to go along with my game. I'm just wondering whether there are any particular tutorials in mind that anyone would want. Things I think might be interesting to do are: (Some might be generic programmy ones, but usually Maratis-centered)
- setting up a new project and creating a cross platform way to compile code easily (probably using premake4)
- creating a custom plugin (not sure what for, I was considering using google protobuf until I saw how the entity/behaviour system worked)
- creating a particle system (because... _noone_ ever does them...)
- Project/Source control (git!)
- Coding practices
- UI? (I may make a lightspark plugin for a main menu "level")

As I'm only really a programmer, my 3D artsy skills are particularly limited, so I probably wouldn't do an awful lot in Blender, maybe a couple of boxes to block out a room if/when needed. Maybe even textures if I can work that out tongue However, I will probably be programming the majority of the game myself, so if there's any aspect that people might want clarifying on, I can try and make a tutorial on it.

Also, would video tutorials be better? Or text ones? I don't think either will be too much of an issue to sort.

Re: Potential tutorial series

Hi Nistur, tutorials would be great, I would love to learn more about maratis! I prefer video tutorials.

Re: Potential tutorial series

Great smile Good to hear. I hope Anael won't mind me covering what he's already got, but I think it will help me to get these things started. If there are things that you would like to see then please please please let me know. So far, I think I will try and do the first of these tonight, and see how it goes:

- Setting up a basic game plugin project with premake4 using Anael's example as a base
- Creating a game state machine
- Design patterns - command for controls?
- Save Data (Hmmm, this might be a good use for protobuf tongue)
... [watch this space]
- Changing the premake project to build a custom player for debugging purposes

I don't intend to just dump a whole load of code and say "well, this works, just use it" as I know that can be a bit frustrating, so I will try to type out as much as I can, explaining as I go (Hopefully I can type fast enough for it not to be too boring and keep things moving)

As I said, I will be doing this alongside making my game, so I should be able to cover most aspects of game programming, if you just let me know what you want smile As soon as I've made the first video, I will upload to youtube and link here smile

EDIT: I have tried a couple of times to make the video but kept messing up tongue I then gave up and made a late dinner, I'll try again tomorrow. I think I've ironed out the issues I was having smile

Last edited by Nistur (2012-01-23 23:02:51)

Re: Potential tutorial series

No need to rush. About what I would like to see, being a little beginner I would like to see some simple things and then more advanced, but those topics you mentioned are great. I'm sure will be a great source of knowledge about maratis3d and thank you for willingness to help.

Re: Potential tutorial series

I still haven't had time to do any of this sad the combination of work, personal life, and trying to get my first proper contribution to Maratis polished nicely has put this "on the back burner" for a bit. I will try and get something done this weekend though

Re: Potential tutorial series

If possible kindly try to publish a text version also.

Thank you.
Regards.

Re: Potential tutorial series

No problem. Might help my mumbling a bit if I wrote it first tongue

Re: Potential tutorial series

Right, no excuses for the delay in me providing anything. I am just plain useless.

I have, however, come up with, what I hope will be a better plan. I've started doing some text tutorials first, I'm going to do tutorials in "stages". The first stage will be getting comfortable with Maratis and developing with it. I'm hoping for feedback as to what to do next. Once each stage is written and published, I will cover the same topics in a series of screencasts. As I've already written the text, the screencasts should be simple for me to do, but allow me to give some more detail, instead of pages and pages of text, or thousands of screenshots.

I have started "stage 1" already and have the first 2 tutorials, setting up a Maratis project and then creating a code project alongside it. Any comments are welcome, either here or attached to the tutorials themselves. I'll try and finish what I want from Stage 1 this weekend, but I also need to go and buy food to keep me alive... so I make no promises.

Maratis Tutorials

Last edited by Nistur (2012-02-05 12:26:42)

Re: Potential tutorial series

Hi !

very nice, thank you for the effort,
I'd like to see more users feedback about your post but I'm sure it will be very appreciated.

Anaël.

Re: Potential tutorial series

No worries. I am going to try to finish the tutorial I'm on tonight and then do some planning for a couple more. I have a few infrastructure ideas for some. Just need to work out how I'm going to break them down

Re: Potential tutorial series

I've not had time to finish off the tutorial tonight, I got most of it done, but there's still some more to finish up. On the plus side, I think I have plans for all of stage 1.

Re: Potential tutorial series

Tutorial 3 completed. It's possibly a little too much code, but there's a lot of setup code. Oh well. I also feel very bad for just hacking things in quickly, I am itching to get to the tidying tutorial and refactor stuff...

Re: Potential tutorial series

Hi Nistur,

    Thanks for the tutorial, specially about the plugins.

    Could you kindly add Timer in you tutorial!

Thanks.
Regards.

Re: Potential tutorial series

Which timers do you mean? Something like Vega's tutorial?

The way I'm writing this tutorial series is mirroring how I'm using Maratis to make my own game. A timer is a pretty standard building block in making games, so I'm sure it would happen sooner or later. Is there anything you're planning on using a timer for? I will do my best to accomodate what you need.

Re: Potential tutorial series

Actually I wanted to see an example in c++. Vegas's example is in lua. It would be enough if you make an example which is same like vegas.

Regards.

Re: Potential tutorial series

I can do that smile As I said, I was expecting to write a timer system at some point. What do you think if I put it in next, and have something like making the box do a vertical bounce, when it hits "the floor" it kicks off a timer for a set amount of time, it jumps up again. Does that sound acceptable?

The way I see it, it will have the following new things in the tutorial:
- Game clock wrapper class
- Custom game class to handle the game clock
- Timer class with command pattern callback

EDIT: It's been a while since I looked at Vega's examples, what I'm planning is slightly different to them. Rather than a timer which counts up to an arbitrary number, I usually prefer counting down, also, I'm going to try and add some degree of nice design to this and go forward not just hacking things together, like I did in tutorial 3.

Last edited by Nistur (2012-02-10 15:54:14)

Re: Potential tutorial series

Yes that would be nice smile.

Regards.

Re: Potential tutorial series

I've started it. I'm going to have it up some time tomorrow. I'll have the first half (no code yet) up in a bit smile

EDIT: The first half of the tutorial is up. I got a bit carried away and I've started with the code. I was just having a problem with Maratis where it wouldn't load my level for some reason. So I got frustrated. Will finish it tomorrow though.

Last edited by Nistur (2012-02-11 00:11:11)

Re: Potential tutorial series

Right, so I have the code done for the timer tutorial section, but my webhost database seems to have given up... which is juuuuuuuuuust great. I'm getting it looked at, but yeah.

Also, the reason my level wouldn't load was because my behaviour had a space in one of the variable names, which wasn't valid once it was XML. Oops.

EDIT: Webhost's back up, I'll start writing

Last edited by Nistur (2012-02-11 22:40:16)

Re: Potential tutorial series

It's got a bit longer than I was hoping. But it's done. It's a step towards a nice framework to start working on. Anyway, here it is. Good night

Re: Potential tutorial series

Hi !
waw, that's very good, I like the way you write,
very detailed and clear. And nice photo with the ruler smile

As I saw it in your tutorial, I'll just clarify some points about time in Maratis,
- the update functions (of MGame and so of MBehavior) is always synchronized at 60fps, it does not use a delta, only the drawing function is sometime canceled to give the priority to the update logic.
- If you want a tick, to be platform dependent you can use "engine->getSystemContext()->getSystemTick();" (milisecond)

Waiting to read more,
thanks !

Re: Potential tutorial series

Thanks, I had a look but I couldn't find the tick anywhere.
With regards to being synchronised at 60fps, I agree, that's probably enough for most situations, but there's also the possibility that something (could be either Maratis, the game or even external) which causes a tick to take longer than what was intended. I feel it's usually safer to have it time based so that we don't get crazy behaviour in some of these cases.

Also, incase anyone reads this and now wonders what the point of the game clock class is. There's very little right now, apart from the automatic ticking of timers, but later on, if you wanted bullet time or something, you could easily add time dialation factors to gameclock which would slow game logic but not require changes to Maratis libraries.

I'll update the tutorial later on today.

Re: Potential tutorial series

Hi Nistur,

I really appreciate your tutorial series, thank you for your effort in documenting Maratis!

It would be of great help to me if you can cover arguments such as physics, constraints, animations etc...

Keep up the good work!

Re: Potential tutorial series

No problem, nice to hear some feedback smile
Those topics are pretty broad, is there anything in particular you'd want? The aim is to make a small game with the tutorial eventually, mainly using code for the game I'm working on. I haven't, however, decided what sort of game it would be. If you would like to contribute some sort of ideas for how you would use physics, for example, I'm sure it would be pretty simple for me to add some things into stage 2.

Animations, I'm still trying to decide on a design for. I've had experience with 2 different animation systems so far and they both used a state machine to handle them. As i'm planning on adding a state machine into the framework at some point, it seems like a sensible thing to (re)use. My only issue is, how to store the state transitions. Ideally, this should be exposed to a potential designer/artist, so they can tweak stuff, but Maratis Editor doesn't have anything like that yet, so it would be manually writing text files. Even if they were xml, reading it would be a pain. I'm thinking this may be a good candidate for editor/engine plugin behaviour. The other alternative would be to code the state transitions, which would be a quicker solution, but less elegant, I feel.

Re: Potential tutorial series

I am going to start a project for a (quite) sophisticated racing simulator, so I will use physics extensively. But of course anything related to that would be too technical to be covered in a general-purpose tutorial series.

I was looking for some basic examples to get an idea from where to start and how to use the Bullet wrapper implemented in Maratis. Examples that use physics (like the classic ball thrown against a pile of barrels :-) ) and constraints (some simple mechanical system...)

Last edited by dodosoft (2012-02-12 13:45:45)