A Good Learning Path?
Blitz3D Forums/Blitz3D Beginners Area/A Good Learning Path?
| ||
Hello all, I'm a proud new owner of BlitzBasic and am real excited to learn and create some great games with it to share with the community - eventually moving on to Blitz3D. I've looked at the demos and perused the code, checked out the sample programs and have gleaned some real basic information from what I've read, but nothing I can turn around and put to any use towards learning the language. The problem I'm running into that is proving to be a bit discouraging is that I can't find a good, solid "starting point" to begin learning and build from. I've read alot of suggestions from people saying "just open a program and start playing with the code". That's certainly a good recommendation for someone who has the basics down and isn't seeing "Greek". The trouble is, when I'm looking at someone else's code I don't know what I'm modifying, why it's there, why it's formatted the way it is, what its function is in the context of the whole program, etc. etc. I guess what I'm looking for is something that teaches you BlitzBasic in a "progressive project context"; something that starts with the absolute basics, like how to get something on the screen. Perhaps the equivalent of a "hello world" message that can be progressively built on. Along the way, it could teach you proper coding syntax and formatting. It could explain why you're adding the code you're adding and what it will do in the context of the project; explaining the "what" and the "why", as I like to put it. Using a "do as I do" "cookbook method" is rarely conducive to building an "understanding" of a subject. You're merely going through the motions while not necessarily understanding them. While many people can learn perfectly fine in such "learn by memorization" circumstances, there are many who can not.. I know I'm one of them. Simply telling me "do this" isn't helping me understand what I'm doing, why I'm doing it or how I would use it again in other circumstances. As a hypothetical example: Lesson 1: How to say "Hello World" Lesson 2: How to make "Hello World" scroll. Lesson 3: How to control where "Hello World" scrolls (defining directional keys) Lesson 4: How to change the color of "Hello World" while controlling its direction.. .... Lesson 8: How to make "Hello World" bounce around inside a defined box... ...and so on... In this manner, everything new you're learning is in the context of and is built on what you've already learned. After a while, you've got the basics down well enough to where learning new things on your own and experimenting on your own is much more fruitful and much more gratifying because now you're really developing a command of the language. Anyway.. enough of my rambling.. I was just wondering if anyone has seen anything like what I'm looking for.. or if anyone has ever considered working on a tutorial series that teaches BlitzBasic in such a "progressive" manner? Personally, I think it's a great idea to have a resource like that... and not only because it would benefit me.. but because it would be a valuable resource to have available to all new users. Anyway.. my two cents. |
| ||
I definately see your point, Mike ! Well, what can I say; there are good tutorials at [a www.blitzcoder.com]blitzcoder site[/a], where you can find also a brilliant book about programming in Blitz, written by Krylar. Perhaps this is a good starting. Anyway, the approach you described sounds good for me; I would add, just try with your effort, and when you are stuck about something, then we are ready to help you. I mean, take the Hello World sequence you have described. Why don't you try to do it yourself ? Perhaps, looking and digging in the other sources and examples, can give you ideas on about how to achieve your goals. This is the way I did, and worked for me, much more that anything else. Practice, try, practice, try, and ask. But overall, enjoy ! I wish you lots of fun, Sergio. |
| ||
Semar, Thanks for the feedback! I'm glad I actually made sense in all that yapping ;-) I definitely intend to teach myself in the manner I outlined (read: rambled on profusely about :-). That's the way I approach every new program or tool I decide to learn. The trouble is I don't know what commands are necessary to accomplish particular tasks... It's the interactivity between commands, functions, etc. etc. and how to efficiently and properly implement them that I am concerned about. I guess just jumping in and doing it is the way to go then, eh? Then that's what I'll do! I have no idea how I'm going to figure out how to perform certain tasks.. hopefully I'll be able to check out others' work that does something similar and figure it out from there... Well, thanks for the feedback and the advice.. I'll be sure to post my first functional program that I think is worth seeing for y'all to look at and critique... Take care! |
| ||
Worth getting. |
| ||
Hi, There should be a very simple, step by step, write your first game style tutorial buried somewhere in the Blitz2D package. The end result is a simple game with a single player at the bottom of the screen and an alien that just moves left to right at the top. |
| ||
I am trying to do my own space shootem-up. But need to work on the collision part. |
| ||
Dunno if this will help, but I'm fairly new to Blitz myself, before this, I had lots of experience programming speccys but there only the theory is the same. The way I have learnt is as follows: I thought of a game I wanted to do. A big one, THE GAME (very ambitious) Made notes, thought of variables I would need, and routines that would be used to do stuff: i.e. "Make Aliens Shoot", "Check for Line-Of-Sight" (Whatever's specific to your game) Then I started writing, with the manual to hand. Whenever I got stuck, I thought about different ways to achieve the same goals. If I was still stuck, I asked here ;-) these Forums are VERY helpful.To work on certain parts that I had problems with, I would simply write a new, simple little game-type thing JUST to demonstrate/test the area I was stuck on, i.e Line-Of-Sight etc. In time, I have got to grips with many more commands, and am able to structure my coding a lot better and more efficiently. Hope it helps, the best advice, I think is "The Three P's": Planning, Perseverance, and Patience. Keep at it, and you'll get there! GOod Luck |
| ||
Some very good advice! Thanks everyone! Actually, since I posted that message, I've learned a good bit, some of which I've posted to a couple other threads. My latest project-in-progress is a version of the shooter with the ship at the bottom and (eventually) aliens at the top, with a scrolling background.. either stars or something tiled... not sure yet.. maybe I'll evolve the project to include both... now there's an idea! :-) I've made a ship, with three "positions", normal, banking left and banking right moving back and forth with the cursor keys and I have the transparency working.. and the cool part is I figured it out simply by taking what I'd learned already and figuring out the rest of the commands... so needless to say, that was real gratifying. I'm actually learning something! Malice: that "line of sight" thing sounds neat.. I'd be interested in trying to figure that out. Could come in handy for a platformer or something of that sort. Anyway.. thanks again everyone! |
| ||
What Mark said. My own approach is to look to a game that I like, that should not be too complex - space invaders, for example, IMO has a good balanced complexity - then I ask myself, how do they did that ? So I SWITCH OFF the pc (yes, you have red right, I wrote SWITCH OFF), take a paper, a pencil, sit on the sofa and write down, design, sketch, how it could be done. In this phase, pseudo code comes out, describing the main phases of the program; this is also the moment when ideas come along, so I stick them on another piece of paper titled "New Features". At the end, I have a complete full working core of the game, on the paper... yes, on the paper, and it works like a charm !! I can follow the flow of the game, find logical bugs, and so on. Either test it ! Now is the time to check out what I really need for what I want to achieve. Do I need code for collisions ? So, I look for all the commands about collisions. Do I need sounds ? Same thing. Am I sure how to use that commands ? Just create a new source, and make single functions that make exactly that, so I can test it without to run the entire game. Later, I can include that in the main program, having it working from the first moment. Then, I reach some point where I have to translate the pseudo code in Blitz code... and now comes new fun ! Now (and only now) it's the time to switch on the pc, run the Blitz IDE, and translate all the logical concepts and pseudo code in Blitz statements. An enormous and deep pleasure of satisfaction comes when I see, after few tiding up, that the core that was on the paper, is now full working as I expected... look, the pc does exactly what I wanted, my idea is now realized ! Then, I have a smile that starts from the left ear and ends to the right one... Ahhh, the joy of programming... All the best, Sergio. |
| ||
Actually Mike V's example isn't far from how I learned to use Blitz. I started with an idea which was a map editor for a platformer (cant have a game without levels so it seemed like a logical step to make it first). I had no idea how to make collisions work at the time, but as time progressed it soon included collision code in a form of level tester. Dave Bird's superscroller program proved as invaluable (as did Dave's personal tutoring :). The longest journey starts with the smallest step... |
| ||
I am thinking... It dam hurts but I am thinking. I took a break this weekend from blitz I shouldent of but my brain needs rests and I was learning blitz all week. Anyway reading your article I am thinking of making a Liero type game so I gonna start learning towards that. For example learn how to get a worm image up and move it around screen.... Learn to get 2 of them doing it by diffent keys.. ETC Perhaps get a rough game idea and learn how to make it.. after that the possiblities are endless. I feel the force in u and my self but my force is taking a dump lol |
| ||
i have found that the best games iv made have come unexpectedly, if i try to make a finished product from the begining it just never happens. devide your project into steps and most importantly for me, whenever you get an idea WRITE IT DOWN... in a couple of days you could think that it is really stupid but sometimes its a really fun good idea :D |