CoderDojoSV / MinecraftMods

2 stars 2 forks source link

Creating a Minecraft track #1

Open bskinny129 opened 10 years ago

bskinny129 commented 10 years ago

Apologies for the formatting, but here is an email exchange about planning the Minecraft track:

Excellent! Please don't take my slow response for a lack of excitement on this - holidays and planning for the immediate CoderDojo events has kept me busy.

I went ahead and created a repo (private for now) in our CoderDojo section: https://github.com/CoderDojoSV/MinecraftMods/. Can you start making the progress there so our other mentors can chime in and help? What we do is just create an issue for an questions you might have. (I added your GitHub username to our mentors group so you have access to our private repos).

Joe Dean is planning on creating a Minecraft mod track for the San Jose dojo. He has posted about it here: https://github.com/CoderDojoSV/mentor-discussion/issues/20. I think it would make the most sense to have the two of you combine to come up with a curriculum.

When developing a curriculum, I want to point out our main learnings from past sessions. A lecture with lead-follow doesn't work very well. Kids move at different speeds and once someone is behind, it is really hard to get caught up (and it becomes frustrating, which is the opposite of fun). How can you structure it so they can more go at their own pace? Think 5-10 minutes of kids off doing their own thing, and 2-3 minutes of the presenter talking, repeated for the whole 1.5 hours. See the https://github.com/CoderDojoSV/beginner-python track for a good example of materials that allow this format.

Session 1 can be exclusively setup. There can be a mentor training day where you go through the whole course. Both of these are a good idea.

I see the age group as kids with some typed programming language experience - mostly 10-13. Classes, object oriented, dot notation, all of this will need to be covered (but I like your idea to keep it as simple as possible at the beginning and add from there). Things like loops, arrays, function inputs should be familiar, but certainly not mastered (so reviewing them would help).

I see this as a potential track for our spring session. So starting the first week of April for 6 straight weeks. We won't have a Java specific class before then, but will have Python which will teach them the fundamentals of variables, loops, arrays, and functions.

What else am I missing? Let's take this discussion over to the issues on the repo so that everyone can view....

-Brian

On Thu, Jan 9, 2014 at 12:00 PM, David Huntley dhuntley1023@hotmail.com wrote:

Happy New Year!  I hope you guys have had a great holiday
FYI: I’ve started putting together some sample code in a Github repository.  Nothing ready for prime-time, but just so you can see that progress is being made.
https://github.com/dhuntley1023/ForgeMods
Any thoughts on the below?
David.
Sent from Windows Mail
From: David Huntley
Sent: ‎Friday‎, ‎January‎ ‎3‎, ‎2014 ‎3‎:‎39‎ ‎PM
To: get2greg
Cc: Brian Skinner
Hi Brian,
Sorry to delay in getting back to you.  Been crazy with the holidays.
I’d love to try to help out putting something together for Minecraft modding, but you should know that I’m not a modding expert.  That said, I think I have enough experience and/or motivation to at least stay ahead of the curve for a basic set of introductory classes. 
My experience is with creating mods using Forge (www.minecraftforge.net).  This seems to be the modern-generation modding framework that many mods are moving to.  One challenge right now in term of putting together a class is that Minecraft and Forge are both going through some pretty significant changes as they move from the 1.6 to 1.7 MC versions.  I’ve been playing with the pre-release 1.7 Forge the past couple of days and it’s not at all ready for prime-time yet.  I expect it’ll take a month or two to solidify.  It’s even somewhat difficult to verify how compatible the 1.6 mod code will be with 1.7 because the 1.7 Minecraft method names have not been remapped to their unobfuscated forms yet.  (i.e. with 1.6, a core Minecraft method of “setBlockHardness()” for example right now looks like “funca45675_a()”.  Everyone has a vested interest in ensuring as much compatibility as possible, so I think it should work out ok, but it will take a bit of time for the devs working on that to crank out the changes.
I predict that from an intro-class perspective (creating new blocks, items, crafting recipes, some simple world mod, etc.), that the actual mod code will be largely the same, and that the biggest difference will be in dev and tool environment setup.  Forge has moved to a new, gradle-based build system so the setup is different.
Based on the above, my recommendation would be to start development on core curriculum materials using 1.6, and to then convert it to 1.7 prior to delivering the class itself.  This would put it out a few months.  What do you think of that?
A Minecraft class will also have some other complications:

    Environment setup:  To start modding, you first have to install and configure several pieces of software: JDK, Eclipse Java development environment, Forge, etc.  This is not hard, but it’s the kind of thing where if one person mis-types something in a path, or misses a step, then it will derail them and there will need to be some debugging done to get it working correctly.

    How have you dealt with this kind of situation in the past?  One possibility that might be good would be to send out instructions in advance of the class, and then to hold a “Session 0” as a drop-in class for people that need additional help getting their machines setup.  Alternatively, we could just do this as part of the first class… but would need some experience mentors available to help people when they get off-track.
    Java experience:  To your point in your previous email, Java coding experience will be required.  Fortunately, for the basic stuff I think we’d cover, students won’t need to create new code from scratch using any really tricky concepts, though they’ll be exposed to some of them through the Forge framework.  For example, Forge uses annotations and reflection to gather meta-data from the mod to simplify linking it in to the minecraft core.  So we’d have instructions that say “Create an annotation that looks like this.. XXXX”, which is easy for students to follow, but would get complex if someone wanted to drill down onto what was actually happening there behind the scenes.

    Net: I do think that we’d want to cover some basic Java concepts for the students, but I’m undecided yet on what needs to be covered as an independent “intro to Java” kind of session (or part of a session), vs. an approach where we do something very straightforwardly at first, and then introduce key Java concepts as we go along.  (e.g. If we provided a template for a base mod, we could have kids adding new blocks very quickly without having to have them create a new class, for example.  We could then introduce that concept later.

    Question: Have we had Java classes in CoderDojo before?  If so, what levels were they targeted at and what did they cover (can you point me to materials for one?)    One approach we could take would be to say that taking the Java course is a prereq…
    Mentor experience:  A lot of adult mentors have work experience with various language, web development, etc., and can easily drop into a course and help kids out when they have questions.  I’m guessing that relatively few of them will have had experience doing Minecraft modding, which will limit their ability to effectively answer questions or help kids out when things fail.  If we want to do this really well, I almost think that we need to get all the materials out to the mentors in advance, and get their commitment to actually do the work themselves before the class.  I’d even go as far as to say that we should have a special mentor-training session prior to the class to allow people to ask questions as we go along.  If we can’t effectively get the mentors up-to-speed, I think we’ll have to limit the number of kids we include in these classes.

    What do you think?
    Curriculum development/tuning:  I’m going to reach out to the group you pointed me to below, and also to people online that have done some good tutorial development to see if there are some existing curriculums that we can lean on.   

    Also, I do see this as a multiple-session thing.  We can try to design the sessions to keep them as independent as possible, in case people miss, but that’s probably not going to be completely possible.  For people that miss, I think we can provide a template project that they can use to start the next session that will provide the base they need to proceed from.

    Do you have other people with experience that are interested in developing a class?  I think it would be interesting to bounce ideas around with someone…

    Also, what age group would you see doing this class?  I have a 9-yr-old that I do modding with, but she really can’t do it independently.  How much do we need to target ages and curriculum so that kids are able to do the work with minimal assistance?  Or, is it ok to say that we expect that parent assistance will be required?  The challenge with creating mods is that ground-zero still assumes that you have some development experience (experience w. dev environments, languages, etc.).  I know we could develop a class that would let kids do some basic (and interesting) things if they follow the instructions we provide, but they’ll need to fall back on some real development skills if they go off-roading…. and I don't think that many pre-teens would have that level of experience.  (I may be wrong here… you’d know better than me.)
    Github:  I have a Github account.  Are you putting all CoderDojoSV materials in a single repository, or have class developers all created their own.  How can i get involved with the other mentors/class developers?  Are there aliases or other means you use to communicate?

I’m sure there are things I’m missing.  I’m interested in any and all thoughts at this point. 
Looking forward to working with you,
David.
Sent from Windows Mail
From: get2greg
Sent: ‎Monday‎, ‎December‎ ‎30‎, ‎2013 ‎6‎:‎27‎ ‎PM
To: David Huntley
Cc: Brian Skinner
FYI…
David,
Might be too easy for you and your daughter, but curious what you might think of it.  Assuming they will do hacking of Java code?
Let me know if you have any ideas in mind for a CoderDojo version, and if you are thinking of a one session or multi-session model.
Hope your holidays are going well.
@Brian, perhaps one of our first 6 week sessions should be on Java, then follow with a Minecraft modding session??
Marcy
Begin forwarded message:

    From: get2greg <get2greg@earthlink.net>
    Subject: Fwd: Invitation: Minecraft Modding Workshop - Afternoon Session
    Date: December 30, 2013 10:58:20 AM PST
    To: jamie heston <jamieheston@gmail.com>, aileen mosig <aamosig@gmail.com>
    Begin forwarded message:

        From: Devoxx4Kids-BayArea <info@meetup.com>
        Subject: Invitation: Minecraft Modding Workshop - Afternoon Session
        Date: December 30, 2013 10:54:01 AM PST
        To: get2greg@earthlink.net

            Meetup  

        NEW MEETUP
        Minecraft Modding Workshop - Afternoon Session
        Devoxx4Kids-BayArea
        Added by Arun Gupta
        Sunday, January 19, 2014
        2:00 PM
        Hackerdojo
        599 Fairchild Dr
        Mountain View, ca
        Price: $10.00 per person 
        Pay online
        Will you attend?
        Yes

        No
        3 Devoxxians attending, including:

        Kevin Nilson
        "I love coding and teaching kids to code."

        Arun Gupta
        "Technology enthusiast who loves to teach computer science to kids."

        Menka Gupta
        "Parent of a 11 yr old who loves to mod Minecraft in Java, Robotics and much more."
        Minecraft is a multi-player game about building and placing blocks in a three-dimensional environment. The game was originally built in Java but has been ported to Android, iOS, and XBox 360. The game allows modifications (known as “mods”) that c...
        LEARN MORE
        Unsubscribe from similar emails from this Meetup Group
        Add info@meetup.com to your address book to receive all Meetup emails
        Meetup, POB 4668 #37895 NY NY USA 10163
        Meetup HQ in NYC is hiring! meetup.com/jobs

Brian Skinner Founder, Breakout Mentors Teaching Kids Programming with a Focus on Fun 650-669-8789 | BreakoutMentors.com

bskinny129 commented 10 years ago

@dhuntley1023 @joedean @marcyDel - check this out!

valeriefreitas commented 10 years ago

My husband, Bob, recently finished writing tutorials on Minecraft Mods and Plugins with corresponding Github, you can check it out to see if it is something you can use. My 13 yo son is the only person so far that has started going through it, self-guided, and seems to be fine with it, but my son is also familiar with many of the tools, etc. My husband volunteered to mentor at Hack The Future 10 in Dublin tomorrow at their minecraft station if they need it, so he'll also have a chance there to see how kids with a range of experience deal with it, if HtF decides to use it. He is using Forge and Bukkit.

http://www.lopakalogic.com/articles/minecraft-articles/minecraft-mods-forge/

http://www.lopakalogic.com/articles/minecraft-articles/minecraft-bukkit-plugins/

Val

TiffanyO commented 10 years ago

I think “Tech Mentor Meetup Training” will be really good to get more tech mentors trained and help support these sessions. I would also consider including parent of participants who would like to co-program with their kids, or any adults who would like to understand enough to be potential tech mentors.. yes, we'll convert them sooner or later. The more we educate the better, and eventually growing our network of tech mentors. This will be an awesome educational benefit and a great addition to our diverse portfolio of programs. Let’s do it!

dhuntley1023 commented 10 years ago

Thanks Valerie. This is an excellent resource and really well written. I’d love to connect with your husband to get his perspective on the depth of material vs. kid’s skill levels. Would you mind passing on his email?

I’ve also added it to a topic I created in our Minecraft repo to pull together best-of-breed existing Minecraft resources and have added links to his work from there. (https://github.com/CoderDojoSV/MinecraftMods/issues/2)

Thanks again,

David.

Sent from Windows Mail

joedean commented 10 years ago

I'm planning to have my first Minecraft programming session with "beginners" on Tuesday 1/28. I'm basically going to use the book "Learn to Program with Minecraft Plugins" by Andy Hunt as my text book for these sessions. I really like the flow of the book. There is a lot being introduced to beginners, which can have major impact on the kids experience. (E.g., Dealing with command line, getting used to a text editor ( I like the simplicity of Sublime for beginners over big IDEs like Eclipse, NetBeans, etc), how to setup a client / server environment, etc) All this before you even get to programming in Java.

My Prerequisites for this session are: (1) Have a Minecraft account (2) Feel comfortable in Scratch or scratch like programming and understand the major concepts of loops, conditionals, messaging, cloning, etc (3) Have sublime downloaded and ready to use

My first session was just going to have the kids get used to dealing with the command line and connect into a server. And I was basically going to just show them some examples of finite state machines in the game. Teaching them what a finite state machine is and some in game examples. Maybe have them build there own, depending on time. For this first session I also want to set the expectation that it's going to require some work before we get to flying creepers and flaming cows.

So, I'm doing this all with my 11 year old son who's a Minecraft guru and loves to code with scratch, tynker, snap, etc. He is new to Java and fairly new to text based programming languages and I'm fairly new to Minecraft so it's a fun match. We have been spending the last couple of days pair programming together and it has been quite an awesome father/son bonding experience! :-) So, I have lots more planning and work to do until the 28th, but time is approaching and any advice that you guys can provide I would really appreciate it!

Maybe we should all meet or do a Google hangout or something. That would be fun.

marcyDel commented 10 years ago

Hey everyone.

I'm really looking forward to seeing how we can develop a Minecraft track! I have also connected with Arun Gupta who is leading the Devoxx for Kids Minecraft session on January 19th and has also done similar work with Silicon Valley Code Camp. He has agreed to do a similar workshop or track for CoderDojo. I will be attending Arun's workshop on January 19th

I have a few comments for all to ponder:

  1. For those of you with daughters, what content or projects would best interest girls who use Minecraft?
  2. How can we best prepare the participants and parents to understand the "risks" of modding Minecraft. For example, what happens when a new Minecraft version is released.
  3. Is there any need to know Minecraft user names of participants?
  4. Is it possible for someone to not own Minecraft and have enough experience to participate? For example, those that only have played Pocket edition?
  5. Along the lines of free and open source, Minecraft is in a bit of a gray area. Howeve, just like we ask those without computers to "borrow one", we could do the same with regards to Minecraft. That is, ask them to" borrow a computer with Minecraft on it". We could also have some computers on hand for anyone who does not own Minecraft. Thoughts?

Marcy

valeriefreitas commented 10 years ago

Thanks, David. My husband Bob's email is bob.e.freitas@gmail.com.

Val

On Sat, Jan 11, 2014 at 10:00 PM, dhuntley1023 notifications@github.comwrote:

Thanks Valerie. This is an excellent resource and really well written. I’d love to connect with your husband to get his perspective on the depth of material vs. kid’s skill levels. Would you mind passing on his email?

I’ve also added it to a topic I created in our Minecraft repo to pull together best-of-breed existing Minecraft resources and have added links to his work from there. ( https://github.com/CoderDojoSV/MinecraftMods/issues/2)

Thanks again,

David.

Sent from Windows Mail

From: valeriefreitas Sent: Friday, January 10, 2014 10:23 AM To: CoderDojoSV/MinecraftMods Cc: David Huntley

My husband, Bob, recently finished writing tutorials on Minecraft Mods and Plugins with corresponding Github, you can check it out to see if it is something you can use. My 13 yo son is the only person so far that has started going through it, self-guided, and seems to be fine with it, but my son is also familiar with many of the tools, etc. My husband volunteered to mentor at Hack The Future 10 in Dublin tomorrow at their minecraft station if they need it, so he'll also have a chance there to see how kids with a range of experience deal with it, if HtF decides to use it. He is using Forge and Bukkit.

http://www.lopakalogic.com/articles/minecraft-articles/minecraft-mods-forge/

http://www.lopakalogic.com/articles/minecraft-articles/minecraft-bukkit-plugins/

Val — Reply to this email directly or view it on GitHub.

— Reply to this email directly or view it on GitHubhttps://github.com/CoderDojoSV/MinecraftMods/issues/1#issuecomment-32116099 .

valeriefreitas commented 10 years ago

Even for just .jar hacking, you'd still need to load other software, so if you borrow a computer, the owner would have to have more than minecraft installed but I think also Eclipse and Forge.

Along the lines of free and open source, Minecraft is in a bit of a gray area. Howeve, just like we ask those without computers to "borrow one", we could do the same with regards to Minecraft. That is, ask them to" borrow a computer with Minecraft on it". We could also have some computers on hand for anyone who does not own Minecraft. Thoughts?

Marcy

— Reply to this email directly or view it on GitHubhttps://github.com/CoderDojoSV/MinecraftMods/issues/1#issuecomment-32125866 .