making a game-from-scratch tutorial.... help request

Well, i’m putting my whole bets on using makehuman on this little tut

MakeHuman into Blender Tutorial

And, there is a mention of Python API of makehuman, who know what might be achieved using this component

'll be posting my results around here, maybe 'll be asking for some space on

Excellent Idea.

I second Cyan’s thoughts. Looking at your wiki I think you’ve started in the right direction. I would prefer it to move to though. The wetpaint site has ads all over and they are pretty distracting.

What you’re proposing will take a lot of work. I think there are lots of people who would want to contribute the issue is that people also want the site to be quality. I’m pretty sure p3dp can handle all of the stuff you want to do.

I think it’s important to tell a new programmer that there’s no one way to do this. These tutorials will show one way, but the new programmer may have a different style and for the most part that will be fine. For ping, etc. you may want to do a basic version (it works but looks really bad) and a filled out version (it’s code is necessarily more complex but looks more presentable).

I’d be glad to help with tutorials. I put together an effects cookbook and a tag tutorial on p3dp already. I still use them as references for stuff that I make.

Thanks for your support mavasher :smiley: I agree, it looks like a good start.

I’m not opposed to the idea of teaching a little about the tools also, but it should definitely be separated from the rest of the tutorial. That means three books, not two. First, a main tutorial with a logical progression of complete games. The other two would be the cookbook for useful components and the tutorials on how to use the tools, including how to make the particular art assets used in book one.

We definitely need to come up with a logical progression of games and a coding style we can all agree on, or this whole endeavor will fall apart very quickly. I stand by my initial proposal for which kinds of games to use for the logical progression, but I’m open to suggestions. We should also have a standard of quality for our art assets, so the games look decent. I think that any art we make for the tutorials should be released as public domain, so that people are free to experiment with them in their games.

Okay, I don’t see why not. I initially suggested a 3D version of pong, but I don’t see any problem with making a 3D ping, pong or breakout game that is restricted to 2D movement.

I disagree. Blender is certainly the superior package overall. It has good proportional editing and sculpting tools for high-poly meshes (for example), but for game design, you need good tools for low-poly meshes. Wings is easier to learn, and can do some nifty things with low poly meshes that take several steps to do in Blender. ThunderZ’s list has some other tools for specialized things like making vegetation or terrain. While Blender can certainly do all of these things, we shouldn’t be afraid to use multiple specialized tools if it makes our project easier.

I tend to agree. It’s probably better that we all use a community site rather than unreliable third-party systems. @bigfoot29, is it possible to set up some kind of wiki on the site?

While I do think that in a few places tutorials on the use of pipeline tools are a good idea for this project, I don’t see any particularly good reason to include tutorials on their general use, at least where highly-complete alternatives already exist and can be linked-to. What’s the difference between linking to a page within the wiki and a page within the Blender: Noob to Pro wikibook, other than that the latter already exists and provides, I think, rather a lot of useful information?

Things that I am in favour of, however, would be things like (as you suggest), step-by-step instructions on how to make the assets used in the tutorials and tutorials in using tools related to both the tool and Panda, such as Chicken.

However, when tutorials describe processes within such tools as Blender, I again think that they should assume (and be explicit about doing so) basic knowledge in using the tool on the part of the reader, and link to other tutorials for those that don’t.

For example, when describing modelling in Blender, I would suggest instructions along the lines of “switch to front view and move the vertex to the left”, rather than instructions along the lines of “press numpad 1 to switch to front view, click on the vertex, press ‘g’ and use the mouse to move the vertex to the left”. It allows the tutorial to flow better and be more easily accessible, I think, since it’s not bogged down in extraneous detail.

That said, I’m not against being explicit about certain actions that a reader with basic but not expert knowledge might not know (such as starting a script or setting an object tag in Blender).

My apologies - my comment was intended as a response to CJLopez’s specific situation, which included some Blender experience, as I recall.

I do think that Wings is probably a rather easier starting point than is Blender. I am, however, concerned about its lack of animation support, which means that, once animation is approached, readers would seem to be be asked to export from Wings, import into something else, use that to animate (possibly getting used to a different control scheme), and then export to .egg… (Or switch tools entirely, of course.)

While Blender can be rather harder to learn, it does at least have the advantage that readers would only be learning one control scheme, and can both edit and animate in the same program, even being able to switch from one to the other and back again, I believe.

As to low-poly meshes, I’ve found Blender’s functionality to be very good indeed. What things are you thinking of that take a few steps in Blender, but not in Wings, if I may ask?

I’m also in favour of more specialised tools where appropriate, such as MakeHuman. When I speak of the “modeller” used, I think that I generally mean one’s primary modeller, as opposed to tools used for special cases (such as human beings or vegetation).

Well, this may be my lack of Blender experience speaking, but how would you do an intrusion in Blender? Or a bridge? This is a Wings tutorial video: Go to time index 6:30 and watch from there to see some of what I mean.

In Blender you could do an intrusion on a single face (in face select edit mode) with extrude region, scale (smaller), extrude region, grab. That takes four steps where Wings took two. But how would you do the open ended box in the video? I managed to do it in Blender, but it was complicated, and I don’t even know how to do a bridge.

I know even less about Wings than I do about Blender, so there are probably other features I’m missing.

I agree that Blender would be a good primary modeler. Wings would be a good specialized tool in the special case of single, closed-manifold low-poly meshes. You would import them into Blender for animation or texturing or for a compound scene or something.

Fair enough. I didn’t mean suggest we should do anything that basic. If you can find a good tutorial on how to do something with a particular tool out there, you might as well just link to it.

Aah, yes, intrusions and bridges - I’d forgotten about those.

I might take a look at Wings again sometime soon and see how I would go about replicating those features in Blender, but you might be right about those. (I’m pretty tired right now, I’m afraid - I also apologise for any rambling that might result… ^^; )

As for the movie, given the timestamp that you mention, I think that I’ll avoid it, fearing for my data-transfer cap. ^^;

(Unless it’s fairly small, although, being a movie, I suspect that it’s not.)

That said, I’ve found Blender to be a very good low-poly modeller. I used to use Wings for just that purpose, but I think that I left off as I started to come to grips with Blender, and now do all but all of my modelling (whether low- or high- poly) in Blender.

In fact, the only operations that I recall going to Wings for on anything like a regular basis after moving over to Blender were an orientation change related to differences of axes (although, thinking about it, I’m not sure why I didn’t just do that in Blender o_0) and setting edges to be “hard”, which Blender doesn’t seem to do, for some reason (although one could probably “fake” it by splitting the model at the relevant points). The axis-change is no longer relevant, as of moving to Panda, it seems. I think that I also at least once used it for an inversion trick.

To be honest, modelling in Wings and importing into Blender seems to me to be overcomplicating the process, as long as you know how to model in Blender. Aside from a few tricks, which I don’t think that I’ve missed more than a few times, I would be inclined to think Blender the superior modeller, even in terms of low-poly work.

I’d love to transfer the website to the Panda project site:

I’m not sure why the issue between Blender and Wings3d is such a hot topic. Does it really matter? Either way, its going to end up an egg file? If you make a house in Wings 3d and I make a car in Blender won’t they both work in Panda3d?

I’m not too worried about the code structuring at this stage. I’d actually prefer to have 3 or 4 different Pong games. If I upload a pong py file and someone looks at it and thinks “wow, that’s just sloppy” and then decides to copy and paste it into a classes or module structure and then upload it, thats great. Then others can come along and look at both files side by side and see how sloppy code can be re-organized. Further down the road, as the length of code grows this will become a bigger issue. Learning to team code will be a valuable lesson for some of us.

I’m not too worried about the progression either. Just pick a game that looks simple and start with it. If its too complicated, start a simpler game. I started to write a pong game and soon realized that the second player would be a problem. I think pong was originally a 2 player game. So I decided to eliminate the second paddle and rename the game ping. Its kinda like racquetball or wall ball. You get a point every time you hit the rebound and the game ends when you miss the ball. I’d still need to write the code for increasing the speed at certain scores. And there is no real HUD.

I wrote the tutorial for creating the ball and put it on the wiki. I also uploaded the egg file for the ball and linked it to the wiki. I can do the same for the paddle but haven’t yet. I just did this to fill out a possible structure to the wiki. If someone has a better paddle or a great texture, I encourage them to upload that also. The more examples the better.

Ah well, modellers tend to get religious about their modelling packages, kinda like programmers and their languages. I’d say both have specific strengths/weaknesses. I like wings because it just gets out of my way and model while blender does have more features.

Panda can also export to the .x format which can then be converted to .egg with x2Egg

I requested space on PandaProject but I’m not sure its set up with the structure we have in mind. It seems to currently consist of some screenshots and a link to the py files. And it appears that only the account holder can edit the webspace that he/she requests.

Brian, I don’t see big problems there. You have a portal-wiki - thats right.
But noone limits you in using the Webspace for a another wiki/whatever. If webspace is the limit… I doubt it. :wink:

Regards, Bigfoot29

Edit: Request granted.

If we separate the tools tutorials into their own book as I suggested, then no. It doesn’t really matter.

The goal is to make tutorials to teach newcomers right? I still think that ultimately we need a logical progression of games in book 1, each building on the last and teaching new concepts. (Alternate styles would fit better in the cookbook.)

Having multiple examples of each game in book 1 without any order or progression would just make it more difficult for the newcomers! For them, the alternate versions of the same game would be a lot of extra work for nothing. And if there were no order or progression to the tutorials, then all of them would have to be simple enough to start with. That means that either we can never teach more advanced games, or all of the advanced tutorials will have to be very long and teach the same basics over and over again. And that’s a lot more work for us.

We can, of course, brainstorm on how to do things for every tutorial, but in the end there should be only one tutorial per game. If we make anything particularly useful that didn’t make it in the final tutorial, we put it in the cookbook.

I’d like the “Game Making from Scratch” section to be complete. Where the tool tutorial page is actually located is rather arbitrary. I think we need to start with an overview/outline and hyperlink from there. For example,

Making the Assets is just 5 lines, an outline. The hyperlinks are there if the reader wants to click on them or not.

I agree, we need a logical progression. There will definitely be an order. All I’m saying is lets remain flexible. We can always reorganize the chapters. If the learning step between chapters 5 and 6 is too large. Chapter 5.5 can be written and inserted. And yes, chapters will build on previous chapters. The new concepts will be highlighted.

I am willing to try the one tutorial, one coding style per game approach.

What I’d like to focus on now is the Step 2. Writing the Python code (using Panda3d modules) outline. How should it be broken down?
What is Step 2a?

I can list some steps that are out of order:
…making the start screen
…coding camera control
…coding player control
…setting the scene

Lets start with the turret game. It sounds pretty straight forward.

As to a logical progression, I’m also inclined to favour having one. I’m not convinced that most newcomers would be in a good position to choose the better and more efficient approaches, especially with regards to Panda code. Better I think, then, to create a progression of increasingly complex sections (or a building up of features for a nevertheless reasonably simple game). If a tutorial is later decided to be in poor style, or too inefficient, I would prefer replacing it to adding a new entry.

As to the steps for your second section, BrianInSuwon, I don’t think that a start screen (by which I take you to mean a splash screen, main menu or “click to start” screen) is really called for for a beginner’s first game. I would suggest a game that just starts; such things as HUDs and start screens can be included in later tutorials. At the least I would suggest making it a late addition.

I would suggest the progression that I gave in my first post in this thread, adapted to whatever game is chosen, or, simplified a little, the following progression:

 - Player control.
   - WASD movement control.
   - Mouse-based camera control via simple re-parenting.
 - If readers are encouraged to start with the manual
   tutorial (which I think is a good starting point, then
   game-specific model and actor loading (specifically,
   loading of a basic avatar and environment).
 - Basic collision (either with environmental colliders,
   or starting them off with collision planes, spheres
   and the like.
 - Shooting, or other game-appropriate activity.  
   In the case of Ping, this might just be firing the ball
   to start the game.
 - Basic enemies, if appropriate.
 - Special collision events (such as bullet-to-player,
   bullet-to-enemy, or Ping-ball-to -wall or -paddle.
 - If start and end screens are included, I would be
   inclined to place them here, I think.

As to Wings vs. Blender, I think that the only reason that I’m inclined to advocate Blender over Wings for newcomers is that, once animation is introduced, it involves a path that I consider to be less-convoluted. I have no problem with including both (although I would want to mention this issue for the sake of those who have not used one or both already).

I’ve recently started considering the approach of layering a game. A simple game can be slowly built up. This approach would still allow the beginner to follow the progress. Just start simple. Each version of the game would be a complete game but each one would be more.

Another approach would be to make a simple game and then move onto a different game a little more complex and then at a later chapter write another version of the simple game while incorporating some of the advanced features.

I guess both approaches work as long as new features / code is slowly introduced in a progressive fashion.

This is excellent.

I’m teaching myself panda3d right now, kind of just by trial and error, and jacking around with tutorials and source that I can find here and there.

I hope it goes without saying that code commenting should be done well. And by that I mean that the comments should be written with the learner in mind, rather than other experienced coders.

So far, in just a few sessions, my immediate goal is to create a room, and a character with a few animations, and just get the room loaded, the character in the room, and move around.

My next object will be to interact with some objects I put in the room.

And then finally a way to give the character some sort of objective to accomplish, have him accomplish it, and then report back upon completion.

That’s kind of the angle/direction that i’m taking with it.

Eventually i’ll want to display status bars, scores, and upon “level” completion, move to a new level. All the usual stuff.

Also, if you’re recommending blender, you should also link to the chicken exporter.

What I’d like to do is avoid presenting isolated pieces such as loading a room or playing an animation. The manual and forums do a great job at presenting the individual peices in isolation.

The primary focus should be connecting the individual pieces to make a complete game. Even if the game is really simple, at least its a complete game.

I think it would be better to remove the commenting from the code and present the code in chunks with an explaination/overview/summary in a paragraph before or after the code chunk and then a complete py file at the end for downloading.

Once we get these tutorials done, I think the manual should just be used as a reference. Newcomers would then learn Panda through the tutorials instead of by reading the manual. Then they could use the manual just for the things they forget. Once they know where to look, using the manual should be a lot easier.

I disagree Thaumaturge, we need a start screen. Maybe even before our first game! I’ll say it again, The primary focus should be connecting the individual pieces to make a complete game. We already have a near-complete simple game in the Asteroids example, but there are some very important things that the Asteroids example lacks. The one thing we really can’t learn from the manual is how to put it all together.

We should cover these things as early as possible in the tutorials:* How to make a main menu/start screen.

  • How to make game speed independent of frame rate.

  • How to pause and resume the game.

  • How to make the pause menu.

  • How to load a new level without restarting panda. (and how to create them)

  • How to save and load a game.
    All of these things are important to most games, but are hard to add in after the fact, so we should implement them from the beginning. All but the last two points could be easily implemented before we even make the first game. I think that’s what the first tutorial should cover.

I agree, these are things that are not covered in the manual and therefore, remain the largest hurdle to newcomers. The manual and api reference is set up for game programmers coming from other engines that just need a reference for panda3d specific code. I’d like to approach the tutorials from the viewpoint of some one thats never game programmed before.

Man, this getting into shape is pumping me up!!!

For the moment, 'll be playing around with MakeHuman and Blender. In just 5 minutes I made the model of my lead character as I want it to be and just dropped in Blender. Now i’m looking on how to model my charater to make clothes, hair and stuff

Once i got the things down on this one, 'll be posting a tutorial for this thing. If ya really wanna make people to fill a city and stuff, and don’t want to spend much time, makehuman y pretty nice to come with many different kinds of persons you can imagine

The default MakeHuman models are too high-poly. But you can use them as reference to low-poly modeling.
You can use MakeHuman heads as they are (of course, they will need some cleaning: removing eyelashes and larynx, painting new textures and so on). What concerns bodies, unless your models are supposed to be naked in game, you could replace them with clothes modeled around makehuman mesh, here is the mini-tutorial:
You can also model the human mesh yourself: