The Adventurers Guild - New campaign or game feature


#1

As I answer questions in the forum it has become apparent to me that having a place where students could return to, to refresh on certain programming concepts, would be a valuable asset to the game.

For instance: as the player advances through the game they are given more and more complex concepts for programming. Are they really mastering these skills or have they forgotten something that was taught before? A reference is always a valuable tool for programmers. I am sure many of us have our coveted websites that we go to when we have to remember how “exactly” to do something we haven’t done in a while. Why not create a similar concept at CodeCombat?

 

Here is the idea that I propose:

Create an Adventurers Guild that would open up programming concepts to the player as they progress in the game. When the student learns strings, then there would be a “strings” area of the guild open to them. This would provide a sandbox environment and instructions about the singular concept with in depth explanations. Showing the concept at the advanced level as the student should understand it.

This would act rather like a reference. In the game it can be taxing to memorize the different levels that teach you each concept. If the student didn’t take good notes then their ability to trace back to the right level to relearn the concept could be time consuming. The guild would list out what programming concepts that they should have a mastery of at this point in the game (based on levels completed), And perhaps include the entire listing of skills to master, as is done with “achievements” but with a focus only on programming concepts.

Example: the player has learned strings, variables, and functions but not objects and the Math library.

Strings
Variables
Functions

Objects

Math Library

This could be an incentive to continue learning and advancing in the game as their “Guild Standing” would improve as they progress. Maybe such titles as “Master of Functions”, or “Dominator of Strings” could be used to describe the current rank in the guild. The idea again would be that you would go “back to the guild” to further practice your skills, since every good warrior will spend hours practicing their skills.

The guild might also be a good place to introduce the idea of creating your own code library and creating test cases to test individual code segments?


Teaching Suggestion - Help exercise memory
Students progressing but not grasping the concept?
#2

I like it. I think we should call @nick here.


#3

Cool stuff. Harry, would you want to kick us off with some example reference levels like you are thinking about? Then we could see if this is something worthwhile to bring players back to. If this kind of adventurer’s guild review area is worthwhile, we could put together a Mastery campaign and put the levels in there, unlocked using our normal mechanisms, to start this off. Then when we had enough content, we could code up some new interface for how to display these levels.


#4

So if we were looking at levels just from the game the following might be suitable:

  • Basic Syntax: Signs and Portents - Kighgard Dungeon
  • Strings: The Raised Sword - Kithgard Dungeon
  • While Loops: The Second Kithmaze - Kithgard Dungeon
  • Variables: Closing the Distance - Kithgard Dungeon
  • Arguments: Kithgard Gates - Kithgard Dungeon

Now there is the idea of creating new levels per programming concept. (in this case 5) But that will take me some time to say the least. Or perhaps even just take those levels and advance them further. Keeping the basic idea but forcing the player to do more, or change the level in such a way that it is no longer repeating one for one the original game level.

This could be one approach.

The other approach would be more like a traditional command line output “code only” area. Where one could try to run code for the concept and would get output sent to the screen. I don’t know if this would take more time to implement though.


#5

So I created a quick level update to “The Raised Sword” for strings:

The Long March

This could be an example of requiring more from the level. It has to be cleaned up a bit and could have more goals but the level requires the player to use the hero.say() as well as hero.attack() with strings.


#6

I like this level; it’s a good review and synthesis. We would probably want to name the new ogres differently, since theoretically we took down Rig, Gurt, and Ack a while back. @serg what do you think?

@Harry_the_Wanderer Do you want to prototype some other extended practice levels we could use to start off the review campaign area?


#7

I am still learning the level editor but I can give it a go. I will work on modifying the levels listed above for Kithgard Dungeon as a sample set.


#8

The other thought I has was to update the help section to list out different ways on could use that skillset.

Sor for strings we could have a blip from the MDN or something we come up ourselves like:


String: a string is a sequence of characters.

We can use strings with other programming constructs to communicate concepts.

For instance if we use a name of a ogre “Fred” we can then send this name as a string into the hero.attack() function to tell the hero to attack the ogre named “Fred”

hero.attack() just tells the hero to attack, but it does not tell the Hero what to attack. As a warrior we know that in order to be effective we need to focus our efforts.

A string can give focus to that action, just like a thought.

hero.attack(“Fred”)

Now the hero will attack “Fred” the ogre.

 

Strings can be used to communicate.

When we call the function hero.say(“Hello there”) we are asking the hero to speak in a speech bubble. Just as if the hero was an actor in a story we can give the hero lines to say by using strings.

If we called hero.say(“This function ran”) at the beginning of a function or block of code we could communicate that something is happening even though we cannot see the code execute. By doing this we communicate that the code has reached the function and it actually is running code inside the function now.

 

Strings encapsulate language itself. By changing the string from “Hello there” to “こんにちわ” we convey the same idea but in another language.


#9

@nick here is a new level for the while-loop: logic. It would be an upgrade to the “The Second Kithmaze” level.

Deep in the Kithmaze

It is still in the initial phase.


#10

A new level to review the understanding of variables:

( Variables: Closing the Distance - Kithgard Dungeon )

Call to Arms

It still needs decorations for the rooms and to be cleaned up


#11

As far as text explaining the concept, we have written some updates in the curriculum guides, which we’ll probably combine with some concept videos and put into a new type of documentation that you “unlock” and stays with you in your strategy guide, something like this. Not yet sure when we will build that, but then we’ll have a good place for all that content.

I’ve asked @Serg to check out the levels and give pointers; in the meantime, can you check off any more of the tasks in the level editor checklist for those levels yourself to get them closer to completion?


#12

Absolutely, I did my best to get content out that would demonstrate the concept so we could have a foundation to talk about. I find that in many cases the prototype says a lot more then just words alone.

@nick, I was waiting for feedback to know if the levels were the kinds of ideas that would work and would be useful before continuing development. I am in the process of creating the level for the arguments at the moment and once that is done, I will revisit the first levels and clean them up.

This has been an enjoyable process, and as part of this process I have actually come up with a few more level ideas. They are more puzzle based and would be for the Kithgard Dungeon campaign level. It is interesting in how coming up with one solution can spark the imagination on other concepts.

-HW


#13

Hey Harry, I gave the levels a try. Here are some things i noticed while trying to beat the levels:

###The Long March

  • Is it possible to beat Belch in nothing but a Tarnished Breastplate and Simple Sword?
  • When moving left at the top of the level, I don’t snap towards the middle of the door. Move move the snap points up, or the maze corridor down?

##Deep in the Kithmaze

  • Is this level beatable? I tried the two expected solutions (walk past the ogre, but it it’s a while-true loop, so I either get attacked by the ogre, or die to the wall spikes. UURR or UURRUU.

##Call to Arms

  • When I try to attack the variable, my hero does nothing. Am I supposed to be attacking the crate?
  • When moving right, my hero doesn’t align with the crate (assuming that is what I am supposed to be attacking.)

Let me know if you need anymore clarification or help fixing these problems.


#14

@Serg Thank you for taking a look!

  1. That is a good question. I originally was thinking that the player would have to get more gear to complete the level. Do we want to place a challenge in front of the player to have better gear, or should this be in line with simply teaching and placing challenges in other ways?

Q: When should needing more gear matter?

.2. I see what you mean. When I first developed this level I was just using advanced gear. Using the original shoes it doesn’t align well.

Q: What is the normal spacing used for a level when the shoes are needed? 3 walls?

Yes keep trying :slight_smile: Remember the hints say that the ogre isn’t someone you want to disturb. Don’t post the solution though, I would like others to try :slight_smile:

  1. The instructions do ask one to say the name. But I just realized that the wooden or crude glasses don’t allow one to hero.findNearestFriend() as this function doesn’t exist. The mahogany glasses are needed to identify the friends, which won’t be talked about until the Forest Level Campaign. var friend = hero.findNearest( hero.findFriend());

  2. Should I aim to align everything in these levels with the hero.moveXXXX commands? So that alignment works well?


@nick @Serg Should all of these levels be playable and beatable with the basic gear from Kithgard Dungeon?


#15

I figured out Call to Arms, but if this is a ‘capstone’ level for a specific concept, I wouldn’t leave it as it is. Put yourself in a new learner’s shoes, and they try the most obvious one (UUDD) but that doesn’t work, so they try every permutation of UDLR in an attempt to figure it out. Then we have the misleading path in the bottom right. Also, it requires the ring of speed to beat, which a lot of players might not have access to.

Also, the spikes attack my hero during the first 4xR move. Killing anyone with low gear.

And yes, be sure to align the movement accordingly for the simple boots. Use the movement stones to mark individual snap points to help players count the number of steps they will be taking.


#16

Deep in the Kithmaze
imho
Must be under 6 statement
It force at least new users
actually find solution
Instead

hero.moveUp(2);
hero.moveRight(2);
hero.moveUp(2);
hero.moveRight(2);
hero.moveUp(2);
hero.moveRight(2);
hero.moveUp(2);
hero.moveRight(2);
hero.moveUp(4);
hero.moveLeft(2);

#17

@Serg ok, this point is important. Is the goal to create a “new level” concept that only summarizes what they have learned so far, but doesn’t challenge them in a way to complete it? Meaning that these levels should always be straight forward in their solution but be useful to look back upon?

I guess I am asking for a game level design direction.


#18

Currently, the CodeCombat content team is taking a very ‘guided’ approach.

If this level was meant to be review for particular concepts, it might not be the best place for a ‘brain teaser’.

The Long March is rather straight forward, based on what students and players have experienced up to that point. Attack ogres, say words, attack another ogre. However, in Deep in the Kithmaze the desired path isn’t as intuitive as, for example, The Haunted Kithmaze.

We don’t mind brain-teaser levels, but, if it is meant to be a review, maybe could be easier?


#19

@serg Ok. I will keep the design straight forward and ask them to perhaps “do more”.

Also you mentioned that there were movement stones and “snap” points. I know what the movement stones look like and will use them, but how can one make the player “snap” to a location? I believe the original “long march” didn’t use either…


#20

Best way is to eyeball it and you’ll get used to it. The movement stones should snap every 0.5 move, and each wall unit should be 0.333 move, I believe.