Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
New programming course
#61
I can' wait to try out this course. It will be an excellent addition to colobot.
version 0.1.6 is already a major improvement.

Well done Terranova Team!!
KendyBot ...dreaming of autonomous replication.
#62
As it has been estabilished at the ColoIRC:
(04-03-2016, 01:46 PM)krzys_h Wrote: The current programming course is going to target 15+ years old, like original Colobot or CeeBot4. Exercises for younger players will be likely introduced at a later point.

This makes making of the course a little bit easier.

(09-26-2015, 07:50 AM)Mrocza Wrote: That's evaluation (check of player's knowlage) mixed with introduction (learning something new).

This and the example of Portal 2 gave me an idea how the programming course should look like. The idea is simple: firstly, we teach something new and immediately after the player is given a task to master the understanding of the new knowledge. The tasks should be easy enough so an averagely intelligent person could complete them, but enough challenging to make the player feel the satisfaction of solving them. This is how Portal is built, as it was explained probably in the developers' commentary mode, and it works amazingly as everyone who had played this game before should know.

I've read both (the first and the second) version of the plan for the programming course. I definitely like the first one more, but there is some interesting stuff in the second. I'm going to use both of them and the idea explained above to rewrite the plan. We need to start at something, don't we?

For now, we should focus on the first and eventually the second chapter of the course before we proceed to the next ones. Simply because it would be a waste of time, because we need to polish the main concept of the design of the course and have a solid base before we start working on more complicated and time-consuming levels.

So here it is:

Chapter 1: Introduction to programming
   Exercise 1: Boring brief
       What the player will have learned after this exercise:
           * What is Colobot: Gold Edition?
           * What is SatCom? How to reopen it?
           * What is program?
           * Why do we need programming languages?
           * Why programming is fun?
           * What is the game view?
           * How to interact with the game? (Basics of the interface and control keys)
       The task:
           * Move the bot and the astronaut to the SpaceShip by hand and take off.
       Additional notes:
           * The astronaut is selected by default. He can be controlled by the player.
   Exercise 2: Run for your life!
       What the player will have learned after this exercise:
           * How programming can be useful? (Sum up the stuff written in the previous exercise about programming.)
           * How to open and use the program editor?
           * How to run a program?
           * How to reset if something goes wrong?
           * Are there enemies in this game?
       The task:
           * Kill few AlienAnts which are approaching to the surrounded player and the bot.
       Additional notes:
           * The program is already written, the player only needs to start it.
           * The AlienAnts approach the player and attack, but both the bot and the astronaut are almost indestructible (but they gain enough damage to set a little thrilling "panick mode" in the player).
           * The astronaut is selected by default. He can be controlled by the player.
   Exercise 3: Time to learn to drive
       What the player will have learned after this exercise:
           * How programming can save lives? (Remind the player about the interface and previous stuff in maximum of 2 short paragraphs)
           * How to create a new program?
           * What is the structure of the program? (Note: don't go into details of the main function)
           * What are instructions and parameters?
           * How to move the bot by programming? (the move(); instruction)
       The task:
           * Move the bot forward to the goal area.
       Additional notes:
           * The bot is selected by default (in all the proceeding exercises).
   Exercise 4: Reverse mode
       What the player will have learned after this exercise:
           * How to use instructions? (Revising part)
           * Is programming about experimenting and discovery? (Hell yes!)
           * Where to find useful information? (describing the CBOT documentation briefly)
       The task:
           * Give a gentle push to the PracticeBot behind the bot, so it "wakes up" and drive to his goal area and then move the bot to the second goal area.
       Additional notes:
           * The player is hinted to read the documentation of the move(); function, where he learns about the use of negative numbers.
           * PracticeBot is programmed to move to the goal area when the bot comes close to him (preferably, the bot should be touching the PracticeBot for a tiny moment).
   Exercise 5: The secret to be a good driver is the wheel
       What the player will have learned after this exercise:
           * Is programming about remembering stuff? (Revising part, also, hell no!)
           * What is angle? (Revising some maths)
           * How to steer the robot? (the turn(); instruction)
           * What are those odd crosses on the ground? (waypoints)
       The task:
           * Move a robot through 3 waypoints and come back to the start area. (Waypoints and the area are placed like they were forming a square.)
       Additional notes:
           * The player is advised to read the documentation of the turn(); function, although it is fully explained in the briefing.
           * The player needs to turn only left by 90 degrees to complete the exercise.
   Exercise 6: Everything is relative
       What the player will have learned after this exercise:
           * Do you need to be good at maths to be good at programming? (Revising part, also, not really)
           * What is negative angle? (Introducing some black magic maths)
       The task:
           * Move a robot to the goal area by slalom (going through few waypoints).
       Additional notes:
           * It is hinted in the briefing that the waypoints can be reached by turning by 45 (+90) degrees.
   Exercise 7: Driving license exam
       What the player will have learned after this exercise:
           * When there will be something to shoot? (Revising part, also, soon)
           * What have been covered during this chapter? (Short summary)
       The task:
           * Move a robot to the goal area by a simple labyrinth.
       Additional notes:
           * The drawing of the labyrinth is in the briefing.
           * It should be simple, but still require at least 10 instructions to complete.
           * To make it more interesting, one or two corridors should be at 45 degrees.
   Exercise 8: Program for your life!
       What the player will have learned after this exercise:
           * How programming can be really useful? (Revising part)
           * What have been covered during this chapter? (Short summary and congratulations for the player)
           * How to fire? (the fire(); instruction)
           * What will be covered in the next chapter?
       The task:
           * Kill few AlienAnts which are approaching to the surrounded player and the bot (again).
       Additional notes:
           * The AlienAnts this time do real damage.
           * The briefing gives the exact positions (angles) of the AlienAnts.
Chapter 2: The basics of the base management
Chapter 3: Drawing, part one
Chapter 4: Drawing, part two
Chapter 5: Shooting
Chapter ...


Some notes here about the whole plan. Chapter 1 and 2 should introduce the player to the game, the programming concept, the game mechanics and familiarize him with the game world. Chapter 3 and 4 are going to introduce some harder and more abstract concepts like loops, variables, maybe even functions, plus some algorithms. Chapter 5 should give the player some fun and give good exercises of using the abstract concepts and maybe teach some maths. About the rest of the chapters, I'm not sure yet, but of course there will be more advanced stuff covered. Like I said, let's focus on the first chapters first.

What are your opinions?
[Image: XvN5CTW.png] [Image: UYXyyMS.png]
#63
I like the analogy to driving a car, but at the same time, it makes me feel like it's a manual process instead of programming.

I'm not sure about ordering of next chapters. Drawing is easier than managing a base - it's basically chapter 1 + pendown() and penup(), while managing the base introduces at least grab(), drop() and radar() (and perhaps some more, like space()). At the same time, we want the first chapters to be general introduction to the game world. I'm not sure what is the correct path to take here.
Drawing would be more interesting for younger players, and it's essentially just moving around with a pen, so maybe we should just completely skip it in the 15+ years old course?

And... the topic of environment again. This script is not as environment-independent as I hoped it would be. If we are going to use the training before mission theme which most of the people seemed to like, we can't make the first mission end with SpaceShip takeoff, and preferably we shouldn't use aliens - they spoil the missions too much. The original programming course was designed with whatever assets were already in the game, we could be creative and add some new things here.
#64
Mhmhhh... I like it, but as @krzys_h said, I don't think aliens would fit in programming course. Though I would be alright with using space ship.

As for what to use instead of aliens, you could make some kind of revolting bots, which will try to rush you down, but will turn off as soon as they take damage (And make them use aim(-20); to make them look "inactive") or something

Another thing you could do is add Demo level at start of each chapter, like 1-2 in your example. Something that says, "Hey, you don't know a damn about what we will talk about, but when we finish this training you'll be able to do this"
"Deep within all of us lives an idiot, and if you let that idiot dictate your decisions your live is going to be rough."
~ Ryan Letourneau, 2k15
#65
(04-07-2016, 08:53 PM)krzys_h Wrote: Drawing is easier than managing a base - it's basically chapter 1 + pendown() and penup(), while managing the base introduces at least grab(), drop() and radar() (and perhaps some more, like space()).

Not necessarily. Managing the base requires mainly learning to use instructions. Almost no abstract concepts involved here. Managing the base is something that feels "real". The hardest part of programming is to learn to think abstract, and drawing makes it easier to focus on the syntax of the language instead of the game mechanics. As I said, I would like there to introduce variables, loops, functions, conditions... I had this in mind: http://greenteapress.com/thinkpython/htm...on005.html

(04-07-2016, 08:53 PM)krzys_h Wrote: I like the analogy to driving a car, but at the same time, it makes me feel like it's a manual process instead of programming.

I'm not sure what you mean? Anyway, these are only titles, they can be changed easily. I just wanted to make it look like the exercises are consistent and parts of a bigger whole. To give the player feeling that what he's doing has a purpose and it ends somewhere.

(04-07-2016, 08:53 PM)krzys_h Wrote: And... the topic of environment again. This script is not as environment-independent as I hoped it would be. If we are going to use the training before mission theme which most of the people seemed to like, we can't make the first mission end with SpaceShip takeoff, and preferably we shouldn't use aliens - they spoil the missions too much. The original programming course was designed with whatever assets were already in the game, we could be creative and add some new things here.

Yes, unfortunately, this plan is less flexible in terms of the environment. However, I don't know how else the course can be made interesting. It can't be just like a boring interactive textbook.

SpaceShip can be replaced with the goal area for now. About aliens, well, what else can we use? We don't have many enemies to choose from and I'd also like some flying targets like wasps in the next chapters :/
[Image: XvN5CTW.png] [Image: UYXyyMS.png]
#66
(04-07-2016, 09:23 PM)Simbax Wrote: About aliens, well, what else can we use? We don't have much enemies to choose from and I'd also like some flying targets like wasps in the next chapters :/
We could add some sort flying target bots. It doesn't fit well with the theme of researching flying robots later during missions. This is why we were delaying the decision on envrionment - it's really hard to make it match existing plot.
I guess we just shouldn't care for now and maybe adjust some of the exercises at a much later point in development. There is no real way to solve those issues without redesigning half of the plot. This means that exercises for now will be like a second storyline not really related to the main missions too much.
#67
Well, we aren't making only custom level, we're creating whole game, so if there is no good asset right now, we can make some if needed. So (for example) instead of SpaceShip, we could have some vehicle, that will drive us to some point.
Spoiler :
[Image: unknown.png]
#68
Alright, I've realised that base management needs to be later, because it would probably need variables, loops and many more things and it would be too much for a one chapter, so I moved the drawing part before the base management. I've also fixed some English errors and wrote the first sketch of the second chapter. Now excuse me for any mistakes, because I'm in hurry and really wanted to post the new version now. After we establish the general concept details, I'll finally post this plan to some Google Doc or something so you can write/modify it too.


> Chapter 1: Introduction to programming
    > Exercise 1: Boring beginnings
        > What the player will have learned after this exercise:
            * What is Colobot: Gold Edition?
            * What is SatCom? How to reopen it?
            * What is a program?
            * Why do we need programming languages?
            * Why programming is fun?
            * What is the game view?
            * How to interact with the game? (Basics of the interface and control keys)
        > The task:
            * Move the bot and the astronaut to the ???.
        > Additional notes:
            * The astronaut is selected by default. He can be controlled by the player.
    > Exercise 2: Run for your life!
        > What the player will have learned after this exercise:
            * How programming can be useful? (Sum up the stuff about programming written in the previous exercise.)
            * How to open and use the program editor?
            * How to run a program?
            * How to reset if something goes wrong?
            * Are there enemies in this game?
        > The task:
            * Kill few ???Enemies??? which are approaching to the surrounded player and the bot.
        > Additional notes:
            * The program is already written, the player only needs to start it.
            * The ???Enemies??? approach the player and attack, but both the bot and the astronaut are almost indestructible (but they gain enough damage to set a little thrilling "panick mode" in the player).
            * The astronaut is selected by default. He can be controlled by the player.
    > Exercise 3: Time to learn to drive
        > What the player will have learned after this exercise:
            * How programming can save lives? (Remind the player about the interface and previous stuff in maximum of 2 short paragraphs)
            * How to create a new program?
            * What is the structure of the program? (Note: don't go into details of the main function)
            * What are instructions and parameters?
            * How to move the bot by programming? (the move(); instruction)
        > The task:
            * Move the bot forward to the goal area.
        > Additional notes:
            * The bot is selected by default (in all the proceeding exercises).
    > Exercise 4: Reverse mode
        > What the player will have learned after this exercise:
            * How to use instructions? (Revising part)
            * Is programming about experimenting and discovery? (Hell yes!)
            * Where to find useful information? (describing the CBOT documentation briefly)
        > The task:
            * Give a gentle push to the PracticeBot behind the bot, so it "wakes up" and drive to his goal area, then move the bot to the second goal area.
        > Additional notes:
            * The player is hinted to read the documentation of the move(); function, where he learns about the use of negative numbers.
            * PracticeBot is programmed to move to the goal area when the bot comes close to him (preferably, the bot should be touching the PracticeBot for a short moment).
    > Exercise 5: The secret of good drivers is the wheel
        > What the player will have learned after this exercise:
            * Is programming about remembering stuff? (Revising part, also, hell no!)
            * What is an angle? (Revising some maths from school)
            * How to steer the robot? (the turn(); instruction)
            * What are those odd crosses on the ground? (waypoints)
        > The task:
            * Move the bot through 3 waypoints and back to the start area. (Waypoints and the area are placed so they form a square.)
        > Additional notes:
            * The player is advised to read the documentation of the turn(); function, although it is fully explained in the briefing.
            * The player needs to turn only left by 90 degrees to complete the exercise.
    > Exercise 6: Everything is relative
        > What the player will have learned after this exercise:
            * Do you need to be good at maths to be good at programming? (Revising part, also, not really)
            * What is a negative angle? (Introducing some black magic maths)
        > The task:
            * Move the bot to the goal area in slalom (by going through few waypoints).
        > Additional notes:
            * It is hinted in the briefing that the waypoints can be reached by turning by 45 (90) degrees.
    > Exercise 7: Driving license exam
        > What the player will have learned after this exercise:
            * When there will be something to shoot? (Revising part, also, soon)
            * What have been covered during this chapter? (Short summary)
        > The task:
            * Move the bot to the goal area through a simple labyrinth.
        > Additional notes:
            * A drawing of the labyrinth is in the briefing.
            * The labyrinth should be simple, but still require at least 10 instructions to complete.
            * To make it more interesting, one or two corridors should be at an angle of 45 degrees.
    > Exercise 8: Program for your life!
        > What the player will have learned after this exercise:
            * How programming can be really useful? (Revising part)
            * What have been covered during this chapter? (Short summary and congratulations for the player)
            * How to fire? (the fire(); instruction)
            * What will be covered in the next chapters?
        > The task:
            * Kill few ???Enemies??? which are approaching to the surrounded player and the bot (again).
        > Additional notes:
            * The ???Enemies??? this time do real damage.
            * The briefing gives the exact positions (angles) of the AlienAnts.
> Chapter 2: Drawing, part one
    > Exercise 1: Programming is art
        > What the player will have learned after this exercise:
            * What should he know already? (Revise Chapter 1)
            * What will be covered in this chapter?
            * Why drawing is a serious business? (Explain why this chapter necessary)
        > The task:
            * Draw a colorful square spiral of size 5x5.
        > Additional notes:
            * The program is already written.
    > Exercise 2: Every artist needs a pencil
        > What the player will have learned after this exercise:
            * What should he know already? (Revise Chapter 1 again)
            * How to draw? (the pendown(); and penup(); instructions)
        > The task:
            * Draw 3 line segments of the same length with half the length blank spaces between them.
        > Additional notes:
            * None
    > Exercise 3: Symbol of conspiracies
        > What the player will have learned after this exercise:
            * Is this chapter really necessary? (Revising part)
            * Is there always only one way to do something? (No)
            * What to do when you are stuck? (Advices about how to approach problems etc.)
        > The task:
            * Draw an equilateral triangle with each side of a different color (Black and White are forbidden).
        > Additional notes:
            * The player is given a very subtle hint to look into the documentation to find out how to change colors.
    > Exercise 4: Artists, especially programmers, are lazy
        > What the player will have learned after this exercise:
            * Is the result the only thing that matters? (Revising part)
            * What are variables?
            * Why should one use them?
            * What is a variable type? (Mention string, int and bool, focus on int)
            * How to declare a variable?
            * How to define a variable?
            * What is initialization?
            * How to use variables?
        > The task:
            * Draw 3 line segments of the same length with half the length blank spaces between them, where the length is a variable. Do this 3 times in a straight line, each time with a different length.
        > Additional notes:
            * The solution program from the exercise 2 is available, the player should modify it.
            * Any solution with more than 6 move(); instructions should be forbidden.
            * The program must be run 3 times.
    > Exercise 5: Robots can talk
        > What the player will have learned after this exercise:
            * Why variables are needed? (Revising part)
            * How to modify a variable?
            * What is debugging?
            * What is a string variable?
            * How to show a message to the player? (the message(); instruction)
        > The task:
            * Draw three squares of different sizes, each of a different color, and show a message after drawing each side which looks like that: "The side number <insert number here> of the square number <insert number here> has been drawn".
        > Additional notes:
            * Any solution with more than 4 move(); instructions should be forbidden.
    > Exercise 6: Enough of manual repeating
        > What the player will have learned after this exercise:
            * Why variables make the life easier? (Revising part)
            * What is the DRY rule?
            * What is a while loop?
            * How to use a while loop?
        > The task:
            * Draw 15 line segments of the same length with half the length blank spaces between them. Use a loop.
        > Additional notes:
            * The solution program from the exercise 2 is available.
            * Any solution with more than 2 move(); instructions or requiring to run the program more than one time should be forbidden.
    > Exercise 7: Draw, fail, repeat until success
        > What the player will have learned after this exercise:
            * How much do loops make the life easier? (Revising part)
            * What are syntax sugars? (the +=, -=, --, ++ operators)
            * Can one use a loop inside an other loop?
            * Are there any more tips about debugging?
        > The task:
            * Draw three right-angled triangles with legs of equal variable lengths, each of a different color, and show a message after drawing each side which looks like that: "The side number <insert number here> of the triangle number <insert number here> has been drawn". Use loops.
        > Additional notes:
            * The solution program from the exercise 5 is available.
            * Any solution with more than 1 move(); instruction or requiring to run the program more than one time should be forbidden.
    > Exercise 8: Art (maths) exam
        > What the player will have learned after this exercise:
            * How is programming making the life easier? (Revising part)
        > The task:
            * Draw a square spiral of size at least 5x5.
        > Additional notes:
            * Any solution works.
            * The player is given freedom in this exercise, he can just draw a minimalistic black square spiral without even using a loop or he can draw a square spiral of a bigger size with colors etc.
> Chapter 3: The basics of the base management
> Chapter 4: Drawing, part two
> Chapter 5: Shooting
> Chapter ...
[Image: XvN5CTW.png] [Image: UYXyyMS.png]
#69
The two questions I have are: What does fall into "Base Management" category and how 'urgent' Base management is? Because there should be much other important stuff before base management: distance, direction, radar, goto and to lesser extent if, motor and jet

Other than that, I like idea of introducing while loop first
"Deep within all of us lives an idiot, and if you let that idiot dictate your decisions your live is going to be rough."
~ Ryan Letourneau, 2k15
#70
(04-08-2016, 03:43 PM)radioactivity Wrote: distance, direction, radar, goto and to lesser extent if, motor and jet

That's exactly what I planned for Chapter 3 Wink Except motor and jet and I'm not sure if distance and direction are needed at this point. They should be covered in the chapter "Shooting" or "Advanced movement".
[Image: XvN5CTW.png] [Image: UYXyyMS.png]
#71
Well, that's third option. As for distance and direction I really think these should be covered as soon as possible, because they fade really as soon as goto appears, and they come back next time with pretty complicated stuff, like motors.

Also, direction, distance and if open up pretty cool opportunity to use random generators in maps, for example on map with direction there is a wheeled grabber on startpod, and a Titanium in random direction, 20 meters away (actually 21.5) and you need to grab it and bring back. Same with distance, but distance is also random.

Or with if, there is goalpod, Power Plant and Nuclear Plant and on goalpod there is either Titanium or Uranium... etc etc. All sorts of cool stuff. What I am trying to say is, if possible, exercises should not be 100% static
"Deep within all of us lives an idiot, and if you let that idiot dictate your decisions your live is going to be rough."
~ Ryan Letourneau, 2k15
#72
I've created a Google Doc document. Everyone can comment, so non-TT members can be involved too.

https://docs.google.com/document/d/1UOe0...sp=sharing

If someone wants to have writing permissions (for a good reason of course), let know.

The discussion should be still here, on the forum, but discussing of some details can be done in the document comments.
[Image: XvN5CTW.png] [Image: UYXyyMS.png]
#73
(04-08-2016, 06:20 PM)radioactivity Wrote: Also, direction, distance and if open up pretty cool opportunity to use random generators in maps, for example on map with direction there is a wheeled grabber on startpod, and a Titanium in random direction, 20 meters away (actually 21.5) and you need to grab it and bring back. Same with distance, but distance is also random.
This is a pretty cool idea, and it should be actually easy to do using LevelController script. Especially that I just committed an improvement to how it works that I wanted to do for a long time Tongue
#74
By the way, what do you think about titles of the exercises and chapters? Should they be straight to the point ("While loop", "Turning", etc.) or should they be "artistic" like they are now? Or maybe something else? What about the titles of the chapters?
[Image: XvN5CTW.png] [Image: UYXyyMS.png]
#75
Name them artistically, make descriptions straight to the point ("Use >>while<< loop to draw lines multiple times")
"Deep within all of us lives an idiot, and if you let that idiot dictate your decisions your live is going to be rough."
~ Ryan Letourneau, 2k15
#76
I made a proof of concept for randomized exercises, because I had nothing better to do with my time. Notice SatCom is Polish only and pretty vague, since it's supposed to be proof of concept, NOT actual exercise.

Now it could be modified depending on where it's placed in programming course, for example titanium could be replaced with waypoints (no grab instruction). "If" pretty much would need complete overhaul because it's too advanced Tongue

I didn't use @krzys_h level controler thingamabob, I don't trust that thing, I heard it steels women and souls


Attached Files
.zip   concept.zip (Size: 28 KB / Downloads: 412)
"Deep within all of us lives an idiot, and if you let that idiot dictate your decisions your live is going to be rough."
~ Ryan Letourneau, 2k15
#77
(04-08-2016, 10:55 PM)radioactivity Wrote: I didn't use @krzys_h level controler thingamabob, I don't trust that thing, I heard it steels women and souls

Just replace:
Code:
CreateObject pos=43.75;-77.50 dir=1.0 type=Me option=2 script4="%lvl%/tech.txt" run=4
with:
Code:
CreateObject pos=43.75;-77.50 dir=1.0 type=Me option=2
LevelController script="%lvl%/tech.txt"
The result will be exactly the same
#78
Does everyone agree with the current form of the chapters 1 and 2? Except details from the comments? If so, maybe it's time to already give them green light and start implementing them. Frankly, I was expecting more controversy and hot discussion, especially that the new plan is much different from the previous ones.
[Image: XvN5CTW.png] [Image: UYXyyMS.png]
#79
I think, except for 1-2 and 1-8 they are good. In worst case they could be tweaked a bit to fit. As for above-mentioned two, no idea Tongue
"Deep within all of us lives an idiot, and if you let that idiot dictate your decisions your live is going to be rough."
~ Ryan Letourneau, 2k15
#80
(04-10-2016, 05:41 PM)Simbax Wrote: Does everyone agree with the current form of the chapters 1 and 2? Except details from the comments? If so, maybe it's time to already give them green light and start implementing them. Frankly, I was expecting more controversy and hot discussion, especially that the new plan is much different from the previous ones.

To be honest, my plans were made mostly just to start discussion about how we would like the new programming course to look. You took them as a general base, improved them and added more in-depth descriptions, taking into account all the discussions that have happened since (how fast to introduce new aspects, target audience, etc.). This is exactly what I wanted to happen, I see no reason to have any controversies there.


Forum Jump:


Users browsing this thread: 3 Guest(s)