Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
New programming course
#21
Come to think about, there are indeed some problems with adding exercises to the canon. Just about the concept of putting them before missions in timeline: even if it was made reasonable, they would not really blend in with the missions. I mean, they teach you to programming, production line etc. and then at the beginning of the missions you must request researches of new technologies?! And they explain to you the basics of everything like there was never a programming course before that mission?! Doesn't make sense at all.

While we are at it, the whole old-expedition-thingy doesn't make any sense to me too. I honestly think we should rebuild the whole plot from the fundamentals. Or someone write a short summary of the whole plot, explaining everything. Good luck. There are probably much more logic flaws. I should beat the whole game once again to check it, but that's how I remember it.

To be honest, how many of us played this game for plot?
[Image: XvN5CTW.png] [Image: UYXyyMS.png]
#22
@Simbax :

That's why I would for now only create raw, clean Training Course, based on krzys_h's script. Only levels with documentation. Every single plot related things will be to change/add on GOLD Beta stage. For now, just focus on good programming course.
#23
How about that:
Some virus (AlienWorm) attacked NASA systems remotely and destroyed all research data. Right now, they wouldn't be even able to build a new SpaceShip if the player destroyed the previously built one that he recieved.
A bit big of a plot change, but it explains why you can't build more bots, and makes the gameplay more interesting ("Oh no, don't destroy the SpaceShip, we don't have another one!!")
#24
(08-03-2015, 08:10 AM)krzys_h Wrote: How about that:
Some virus (AlienWorm) attacked NASA systems remotely and destroyed all research data. Right now, they wouldn't be even able to build a new SpaceShip if the player destroyed the previously built one that he recieved.
A bit big of a plot change, but it explains why you can't build more bots, and makes the gameplay more interesting ("Oh no, don't destroy the SpaceShip, we don't have another one!!")

IMO that's good idea. The previous "only-bots" expedition built RadarStations on planets to keep contact with Earth. Then AlienWorms infected this RadarStations network at some point and even most of the servers on Earth has been infected. Before that incident there was such technology like Wheelers, Trackers, Wingeds, Grabbers, Builders, Sniffers, Shooters and maybe even also Subbers, if we will need them on Earth in some Exercises. The other robots are to research in Missions.

But there's a lot of details about the script for whole game, that I think that's topic for other thread and other time of development. Until the game isn't refactored and we don't have any comfortable tools for creating levels and SatCom I guess that's safe to create now only raw and clean Exercises with documentation that focuses only on learning the programming, without any big plot features, that will be to add later:

Location: Earth, Nevada. In future we'll add more NASA buildings (to build "Area 64" or something like that... Tongue ) that some exercises will be inside them, some outside.

Features: Only that's, what is need in exercise until the GOLD Beta development stage. In future we will add more details to explore in exercises. More buildings, Engineers and robots walking around and doing some stuff. There should be some dialogues with Engineers, maybe side quests, that the player will be able to learn not only about programming, but also about the game's world before the main Colobot story will start in Missions. But remember, this still can't cover the main thing about learning the programming. This is going to be only the background.

Robbie: Another funny feature-creature that will be standard enabled for beginners. She will give some tips in the Exercises and if the player will have her enough, there will be option to disable her (not only in Settings UI, but also in Level UI). She doesn't have to talk about game's world like Engineers, but only about controls, some situations and rules in exercises. She also can't cover the main reason of playing in Exercises. I think the first exercise shouldn't be about programming only, but about controls in the game and what the game's about.

Well, so, I think we can now create another colobot-data branch for refactoring of the main programming course, that will be implemented in GOLD 0.1.7 or 0.1.8. But before that we should again look at programming course material script. Especially the people, who are programmers. I can help only with level design and structure.
#25
https://trello.com/c/wsGjYnjv

I've created a Trello card for this task to ensure that there will be no situations like two people working on the same thing. I've also written some tips for how to develop them based on what's in this thread and how I work with them.
[Image: XvN5CTW.png] [Image: UYXyyMS.png]
#26
We're missing some exercises with grab() and drop() arguments.

Here is a document with all the exercises in one place - https://docs.google.com/document/d/1vXOb...29_aA/edit
#27
I can create the levels for you @krzys_h .
First chapter are done and I soon send them to this thread.
Sorry for my English
[Image: 76561198127157465.png]
#28
First two were already done by @Simvax and are in our GitHub repo. Also, the list of exercises is not 100% complete yet.
#29
I'm not certain wether I'm actually allowed to make a scratch on your awesome script there but I seem to be that one guy who tends to notice problems everywhere.

The thing is that new elements are not introduced in a neutral environment. There is a fairly large set of things to keep track of.
For instance... Loops are introduced in a moment when the player has to simultaneously keep track of the relations between multiple game elements - cube, ore, converter, grabber and moreover lack of relations - cubes are not bound to platforms. On top of that the first loop introduced is a conditional loop (while). That's a steap learning curve there, a snowball rolling off the hill. A giant snowball tends to get out of controll pretty easily.

What is needed? A learning curve that is as smooth as possible. I'm no level designer but I might say that I played though a few levels in a few games. The other thing is that as some of you know I've been gone a few years. During that time I got tangled in a little pedagogical course and even ended up spending some time as a middleschool teacher.

I'll try to refer to said learning smoothness through a few examples.
Have you ever played Portal? A small title by Valve. They made an excelent job at teaching people solve complex logical issues and even made that fun. Each and every time a new mechanic is being introduced the player is placed within a sterile environment with one task in mind. Specifically... There is a level in Portal dedicated to a sole concept of stepping on a button and shooting a portal through an open door. This is to ensure that the player knows that a button can be pressed not only with a cube but also by the player themself. This is necesary even tho the player saw a door opening with the button stepped on in the earlier level. A thing that is obvious to us is never obvious to everyone.

You're looking for a nice programming course that covers the very basics. I've seen at least two of those.
The first one was the course in CeeBot Teen. It covered the basics - moving, turning, loops, functions with the use of nothing but a bot with a bunch of crayons stuck to it. Loops and functions explained with only one object to keep track of... the bot. Surprisingly it leads to the second course I had in mind.
Turtle academy (pol. Logomocja) is basically the same thing as CeeBot Teen - drawing lineart on a screen. There was a bunch of people working on Logo (programming language) and they did a really good job. That's probably why Logo is now - 48 years after it's creation - still a thing used in school (at least in Poland). I mean I've been programming in Turtle academy and so are children now. The master goal should be to suck the very esence of CeeBot Teen and Turtle academy and pump it into something that will no longer be associated with a child's toy.

Simplicity gentelmen... simplicity...
My Code Battle League program: MhrodeBattle.txt

Welcome back, Mrocza. You last visited: Sunday, July 7th, 2013, 02:12 pm 
http://imgur.com/L3Y8bQz
#30
@Mrocza while I agree with your post, I don't necessarily get your example. I think the script is written exactly the way you described.

(09-25-2015, 07:35 PM)Mrocza Wrote: Loops are introduced in a moment when the player has to simultaneously keep track of the relations between multiple game elements - cube, ore, converter, grabber and moreover lack of relations - cubes are not bound to platforms. On top of that the first loop introduced is a conditional loop (while). That's a steap learning curve there, a snowball rolling off the hill. A giant snowball tends to get out of controll pretty easily.

Not really:

(07-16-2015, 11:19 AM)krzys_h Wrote: 2.1. Make some titanium
       Scenery: There is a Converter 5m in front and TitaniumOre on a platform 10m behind
       Task: Make some Titanium and bring it back to the platform
       Info in SatCom: wait(), time needed to make Titanium, move away so that the Converter can work

The while() loop is introduced AFTER the production line and all other basic instructions were introduced. Also, while() loop is the simplest loop there is, I don't know what's wrong with starting with it. Have you read Head First book series? They're unusually written books that focus on learning experience. In Head First Java the first loop shown is... the while() loop. What do you want to show the beginner instead? for() loop? for() loop is actually REALLY confusing for the beginners, I know from personal experience. In the book I mentioned the for loop appears in the 6th (or something like that) chapter, and in the simpler version (for(int number : numbers))! Before that only while() loop was used even in cases where for() loop would be better (x = 5; while(x > 0) { x = x - 1; }). Do you want to show repeat() loop? I'm not sure if it even exists in Gold and it's so unnecessary and bad that I don't want it to come back.
[Image: XvN5CTW.png] [Image: UYXyyMS.png]
#31
(09-25-2015, 07:35 PM)Mrocza Wrote: Loops are introduced in a moment when the player has to simultaneously keep track of the relations between multiple game elements [...]
And that's the honest truth. These other game elements just as you pointed out are introduced earlier but the player still has to keep them in mind and simultaniously learn something new. That's evaluation (check of player's knowlage) mixed with introduction (learning something new). A scheme of this sort is totally legit and it is in fact widely used pretty much everywhere. In other words it's the introduction of something new on a foundation of what we know.
It is efficient but it leads to a problem... A student may get stuck. Fail in one stage renders progress much harder. If a person taking the curse didn't quite catch the principle of the production line they would have a hard time later. For a real teacher in a real class it's a minor inconvinence. They can at any time just jump to what is missing, fill the gap and proceed with what's on the agenda. For a computer program facing a student on it's own it becomes a bigger issue.

repeat() is bad. From a programmer's perspective it is. But when building a course from scratch one needs to forget about being a programmer and be a teacher. From a teacher's perspective repeat() is usefull. That is why it was included in CeeBot in the first place. That's why they put it in Logo.

I'm not saying all what you have written thus far should be scrapped. For goodness no!
The thing is that we're not teaching a class where students are the same age/level. We're throwing a product into the mass. Mass composed of different people with diferent knowlage, interests, demands. I'll dare to say that a single course is not enough.

Why not giving a player choice over what they wish to learn.

- Before you write your first program we need to actually get some bot to write a program for.
*A group of shooters is shown. They seem to be getting ready for a fight against the eighth passenger of Nostromo*
- Look at those! These sure look awesome. I guess it's the elite of the bot community. Though it is in fact really hard to program those. Would you like to start here or shall we look for something easier?
Two buttons: "Bring on the big guns!", "Let's actually find something easier."
*A grabber brings a spare battery to that group of shooters*
- How about this guy? There's nothing more usefull than an efficient program for the workhorse - the spine of the industry.
Two buttons: "Well okay, let's do this.", "I wouldn't mind something easier."
*A second grabber rolls in. This time carrying a box of TNT.*
- Good call... good call. I wouldn't like to get near that thing.
*In the background there's a bot painting road lines*
- Do you see that bot in the back? I guess it's harmless enough. What can we mess up with just a brush and a bucket of paint? Perfect! We'll definetly start with that.
A button: "Let's start from the basics then."
My Code Battle League program: MhrodeBattle.txt

Welcome back, Mrocza. You last visited: Sunday, July 7th, 2013, 02:12 pm 
http://imgur.com/L3Y8bQz
#32
This difficulty selection thing sounds awesome. I need to think about technical details on how to implement this, but I really want that Tongue
#33
@Mrocza : So do you proposing 3 different programming courses? Well, I like to see what I (and probably others) think, so let me "draw" it:

Quote:
Colobot: Gold Edition Main Menu

Missions
Free Games

Programming Courses
Competitions
Challenges

Custom Levels

Options
Change Player
Quit

Quote:
Programming Courses Menu

Easy
(basic movement, drawing, labyrinths, working with loops, solving basic problems in friendly environments, etc.)

Medium
(full production line, building operational base, remote controlls, flying, etc.)

Hard
(fighting with aliens, fight off the invasions, building advanced fully operational base, etc.)

Back to Main Menu

Quote:
Competitions Menu

(this section is basically 0.1.6's Code Battles blended with CeeBot3 and CeeBot4's commonly known features)

Races
Wheelballs
Base Fights
Drawing Animations

Back to Main Menu

Quote:
Challenges Menu

(basically some random and hard programming levels without any help or even any helpful suggestions and training mini-levels)

Back to Main Menu

Well, that's how I see it now. Everything is non-canon with Missions now. And well, I like this concept. Of course, Robbie the Assistant included in Programming Courses too.
#34
This is how I see it. You know, designing a non-linear plot is really hard Tongue
[Image: 8N6w8xx.png]
Of course, there is always a button to show difficulty levels list, in case you want to change your choices.

EDIT: Updated it a bit, makes more sense now because there is less duplication between difficulty levels:
[Image: 829nK6N.png]
#35
Well... I gotta admit this chart there is a masterpiece. The essence of the concept extracted into a simple graph.

The game menu as written by our Isla Sorna inhabitant is definitely the thing to aim for. Be proud of your reptile.

I'd add a little thingy there. The easy course should aim to fit requirements of the ministry of education (curriculum). That way our side goal of actually making a tool useful for prime- and middleschool teachers could be easier to achieve. And in fact as being a little involved in these things I think I might be able to help with that.

The other two courses can be easily built of what you already have there. Nothing's lost and in fact there's nothing to lose.
My Code Battle League program: MhrodeBattle.txt

Welcome back, Mrocza. You last visited: Sunday, July 7th, 2013, 02:12 pm 
http://imgur.com/L3Y8bQz
#36
@Mrocza Could you try to list all the things that should be in the easy course, in order? I'm talking only about the basic programming concepts, we'll add Colobot-specific things later.
#37
Of course I could. The actual curriculum includes four lessons - 45 minutes each - dedicated to programming. The first one being the introduction. Later in order simple commands (turn, move) to draw a square, loop to decrese the amount of lines in that square program and lastly a custom function to call a square. In fact all of this is an introduction to MS excel classes. But to actually list specific requirements I'd need some time to get my hands on a teacher's guide. Possibly tomorrow. Even though I've ended my intership I'm still gonna be at school to get a few documents signed so I might as well hunt for a book.

The issue is that an actual version for the primary school classes cannot contain negative numbers. Additionally all instructions have to be written in Polish. Logo has been adapted to that as it's Polish version is composed of commands like: prawo 90 or naprzód 20. We do not want such changes in the main project though so consider that a side note.
My Code Battle League program: MhrodeBattle.txt

Welcome back, Mrocza. You last visited: Sunday, July 7th, 2013, 02:12 pm 
http://imgur.com/L3Y8bQz
#38
So there will be needed special edition of CBOT in this case :/
Spoiler :
[Image: unknown.png]
#39
(09-27-2015, 07:16 PM)Mrocza Wrote: The issue is that an actual version for the primary school classes cannot contain negative numbers.
I think we can do that. Negative numbers will be introduced in a later chapter.

(09-27-2015, 07:16 PM)Mrocza Wrote: Additionally all instructions have to be written in Polish. Logo has been adapted to that as it's Polish version is composed of commands like: prawo 90 or naprzód 20. We do not want such changes in the main project though so consider that a side note.
I'd really hate to be forced to do that, but it should be technically possible if really needed.
#40
What if we added preprocessor to CBot?

Code:
// polski.txt
#define prawo turn
#define naprzód move

// program.txt
#include <polski.txt>

extern void object::Program()
{
  prawo(90);
  naprzód(5);
}
"After three days without programming, life becomes meaningless."
~The Tao of Programming


Forum Jump:


Users browsing this thread: 1 Guest(s)