This is incredible. Getting Minecraft modding working in Visual Studio is how you are going to get the next generation of kids interested in programming.
If you haven't watched a 12 year old play Minecraft, you need to do so. It's the ultimate fantasy universe, and the way you combine elements to make something new is very analogous to programming in the vanilla game.
Adding a way to customize this universe will just explode the interest in programming among young people.
It's really unfortunate that there is so much time being devoted to "teaching programming" to kids, instead of "teaching playing on computers". "Teaching programming" feels serious and adult, and doesn't leave room for fun.
I've had said 12 year old try multiple times to "learn programming", only to give up when things aren't as great as they'd imagined in their head, after having spent hours just trying to figure out the right version of Python, and how to get a shell set up, and how to get something on the screen.
Imagine the result of having your for loop create millions of blocks accidentally in your universe, and seeing that mistake happen in a non-threatening way. This is the sort of thing that makes computing and abstract thinking easier for everyone.
Giving an open universe to kids with the blocks to effect their world is just an insane tool. Kudos to MS for the hard work, and putting it out so early.
My 8 year old and 5 year old play together on a ScriptCraft [1] server I run on my laptop. Just watching them build stuff, play out stories and invent new things together is amazing, and the eldest quickly learnt how to enter commands in the console to do things like change the time, weather and game mode.
They love doing everything manually, but the eldest is twigging on to the fact that if you're doing the same thing over and over again, you can do it much faster by telling the computer how to do it with JavaScript. She'll learn to be properly lazy yet.
Just the other week, I used it to teach her about algorithms, JavaScript functions and debugging. She was building lamps out of fence posts and glowstone, so I got her to write down the step-by-step instructions for building a lamp and started writing a new lamp() function following her instructions, showing how each of them turned into a piece of code. Every time we made a change, we ran lamp() and I got her to tell me what was wrong with what it built so far (lots of off-by one errors!). Once it was working, I got her to make changes to the code to change the height of the lamp, to show her how she was changing the same values in multiple places each time. Then I replaced that with a variable to show how she could make that change in just one place by giving values a name. Then I made the variable an argument and showed her how it's similar to passing the time or gamemode to other game commands. When I came back to have a look at their world later, there were lamps reaching up into the clouds.
The younger kid is still learning how to read, write and type, but she's also noticed that you can do cool stuff by writing on the computer. The other day, she took me to her room in the new house they'd just built and said "can you type to make this room fabulous?"
"If you haven't watched a 12 year old play Minecraft, you need to do so. It's the ultimate fantasy universe, and the way you combine elements to make something new is very analogous to programming in the vanilla game."
Watching my 5 yo work in Minecraft reminds me of the programmer "crunching entities" in the movie "The Zero Theorem".
Purpose driven learning is always easier and more fun than textbook style learning. Even as an adult, I can't really learn a new framework or language until I have a project in mind that I'm interested in. If programming can make Minecraft more fun, hopefully it will draw more kids in
I grew up with lego and moved on to mine craft. I'm not ashamed to say I still can get lost in that game and I'm 26. This gives me a reason to play with visual studio.
As a kid, my programming career started with Visual Basic, a little bit of that and qbasic.
But my dad had a copy of Visual Basic with our old computer back in the early 90s. That along with Gorillas on qbasic was really my first entry into programming.
Back then I was about 9 years old, I really wanted to make computer games, I was pretty smart, but in 1991, a kid with no resources has a hard time breaking into programming.
But QBasic had gorillas, which was a GAME! And it was in basic, and so the source code was right there for me. I didn't have books really, because while you got QB with your operating system, you didn't get manuals for it or anything. But the Visual Basic came with books, and help.
Not only that, it used the same language as gorillas, more or less, and I could drag and drop elements on to the canvas.
By 9 or 10 I made my first "RPG" in visual basic. I used an array of picture boxes as tiles. I had 4 buttons that were directional arrows. And when you clicked one of the directional arrows it would figure out where your player was, see if he could go into the next tile based on what picture it was, and if it could, it would swap the picture of the destination with the picture of the player, the original picture of the player with the original picture of the source. I don't remember if I tracked the position of the player by x/y coordinates or if I just scanned through all of the tiles to find the first one with the player image.
But what I do know was that by 9 or 10 I had made myself a little "game" where you had a top down grid that you could make a player walk around on, and that moved to something that spawned random encounters that were in another window.
I look at what I had as tools, and it was so little. I didn't even have a single book about programming. All I had was gorillas and some help docs for VB. But I was so proud of what I'd made. I ran into some of the pitfalls of memory management when all of your tiles are giant windows objects in VB.
Later I started to learn to get VGA graphics with mode 13h which I found out about from a copy of the Peter Norton's Guide to Programming the IBM PC that I got from the library. I wrote some inline assembler in basic to do some basic putpixel getpixel stuff. I did a lot of cool stuff there but ran into some of the limitations of trying to work with BASIC.
From there my dad had a copy of Borland C++ from his office that I used, mostly just learning C, and when I got access to the internet I started using turbo pascal.
In high school at about 14-15 I had friends who showed me MUDs, and a few of us worked on a little MOO. I took some of my knowledge and a copy of Visual C++, and implemented a little terminal emulator that would connect to the MOO. Then I had some rooms send some additional codes that the terminal emulator would parse and display things on the screen. I made a pseudo MMO before MMOs were a thing. There were MUDs, but very little graphical existed, there were things like The Realm, which was sort of the same type of idea, but I didn't know about it at the time.
The reason I'm telling this story isn't to say how great I am. My point is that I read about these stupid programming curricula in school that are mandatory for kids. As though sitting them down and forcing them to program is going to help them. I had to do some of that in my own school career, in having to do LOGO WRITER stuff in computer class. But doing that, I could barely even tell that that was programming. And even if the teachers told me it was, it wasn't the kind of programming I wanted to do. That's just drawing spirographs on the screen. I wanted to make games.
It's the same way as learning to write "Hello World" and store a variable, and calculate some tax on a price and all the other incredibly boring stuff that introductory programming classes have you do.
People assume kids are stupid. They assume that they have to give them the most basic foundations or they will not be able to learn. Teachers don't want to teach kids to make games, not because they don't want it to be fun, but because of an idea that a game is way too hard to start with. That you have to build up the foundations first. That you need to teach the fundamentals, master them, and then move on to the next marginally more challenging step.
Well, maybe not teachers, I know a lot of good teachers, but the people who write the curriculum think that. Because you need to be able to test and evaluate, so you need to know that you can check of a box that says the kid knows how to do variable assignment, create a function, get input, whatever else.
But I didn't have that shit. I had gorillas.bas I didn't know what "EGABanana:
'BananaLeft
DATA 458758,202116096,471604224,943208448,943208448,943208448,471604224,202116096,0"
meant. Nobody taught me that. But I think BECAUSE nobody taught me that, I wasn't afraid to just mess with the numbers a little bit, run it and see what happened. Oh, changing those numbers changes the way that the banana looks? Ok cool. I mean, there was trigonometry, there was all sorts of stuff that even now looking again through it it takes me a while to parse.
But I didn't care. I tried to look through for something that I could understand, I picked it out, I figured out how it worked, and then I had one piece of the puzzle solved. Now all of the FOR, NEXT loops make sense, and I can use that in my other program.
Now I imagine the 9 year old me in today's world. I don't have to rely on my parents having bought VB or Borland C++, I can download Visual Studio for free. I have the ability to create a minecraft mod in a matter of minutes which on its own is interesting enough, but it basically means I have a tile-based game engine at my disposal, but I'm also writing raw code and not just strapped into some Logo-writer type sandbox. If I have a question the Internet can answer it 150 different ways.
Honestly, the only thing I worry about is that by the time 11-year old me starts to work on something like this I will have decided I hate programming because of the kind of soul-sucking programming curriculum I've had to work on in computer class so I don't even bother trying.
It's like Math. I think math is really awesome and interesting. It's artistic, it's simple, it's complex, it's beautiful, it's actually fun and engaging. Math and programming are very similar in that way. But ask a selection of 10 year olds what they think of Math and they will almost all tell you they hate it. But it's not math that they hate, it's the way they have had it fed to them. It's like force feeding someone pureed boiled chicken every day. You ask them if they like chicken and they'll look at you like you're crazy. Chicken is disgusting.
Wow, I also stumbled upon programming through Gorillas on QBasic. I used that code as a guide to write my first game. A lot of copy-pasting that code and then modifying it just to see what the modification would do. Extremely slow learning by trial-and-error, but a lot of fun!
Visual Basic! Looxury! I had to teach myself basic using a pile of IBM basic manuals running batch scripts, when I wasn't walking 5 miles uphill in the snow to get to my computer!
I remember the day I made a solar system picture by working out how to draw circles on the screen - sadly I can't remember the command now. I'd run my program and it would paint this picture with planets and stars and rings on Saturn, pixel by pixel with excruciating slowness.
And I thought I was a genius. Compared to the other kids who barely knew how to get their commodore 64s to load, I was.
Awesome! Stumbling on QBasic Gorillas was my first programming experience, too!
I had an extremely similar experience, right down to the ages. My father's coworker hooked me up with Visual Basic when I was nine, and I also made a tile-based RPG, although I think I had the keyboard working. I even had multiplayer---you would select a text file on the other computer over a network share, and you would both read/write your coordinates there. It actually worked most of the time!
And then Borland C++, and up, and up :) Great memories!
> This is incredible. Getting Minecraft modding working in Visual Studio is how you are going to get the next generation of kids interested in paying for MS Windows and MS Visual Studio.
>> Getting Minecraft modding working in Visual Studio is how you are going to get the next generation of kids interested in programming.
There are tons of mods developed to date with the world's most powerful development environment, true cross platform IDE, Eclipse. Are you saying the new generation won't be as bright?
Except that kids will need access to VS2013 or 2015, which, unless they have a parent who works on the MS stack.
That said, I do agree this is really a neat thing from MS.
Although it is not necessarily cheap, Youth Digital's Mod course[0] is really quite good. You get an instance of Eclipse ready for Minecraft mod development. While it covers some basic programming skills, it really about simply learning how to manipulate the code in order to do neat things in the game. My older boy loves it, and enjoys "exploring" by modifying parameters.
I can see how you may have missed Visual Studio Community Edition[0] in the recent flood of awesome MS announcements but it's been around for a while. Comments on the extension page suggest it works for this.
I can see how people missed the Community Edition, I cannot see how people don't know that the Express Edition has been free since literally 2005[0]. The only real difference between the free express editions and the community edition is the ability to install Visual Studio extensions, but broadly speaking it isn't that big of a change from Express 2013 for Windows Desktop.
If people don't know that Visual Studio has had a free version for 10 years(!) then they have their head in the sand. But it seems a lot of these people are common, often making bad jokes about IE "sucking" (hint: it doesn't, even pre-Edge), Windows being insecure (hint: it isn't post-XP), and Microsoft being a monopoly (Microsoft's market influence is nothing like what it was in the 1990s, between OS X, iOS, and Android it has a lot of legitimate competition).
This looks great for more experienced programmers. If you're working with younger kids, using Minecraft as a way to introduce programming, here are some good options:
* LearnToMod (http://www.learntomod.com/) - commercial service that allows modding using a visual language (I think they use Blockly which is similar to Scratch).
Why on earth would you get raspberry pi into the mix with Minecraft modding? Python for mods seems great, but that's just using extra hardware for the sake of it.
I'm betting it's only a matter of time before Microsoft drops Java and switches Minecraft over to C# or some other CLR language (or puts resources into a sequel of sorts that does the same). With that will probably come a visible source (though not necessarily open source unless the world is really lucky) development model.
When Microsoft first acquired Minecraft, I made this prediction rather fearfully, but if Microsoft's embracing of open-source continues (without the extending and extinguishing, preferably), this might end up being a good thing. Kerbal Space Program has proven to be a pretty good example of a Minecraft-scale modding community around a game built heavily on C# (by way of Unity3D), and would be a pretty good case study for this sort of thing.
This might put a damper in existing modding efforts, though (but on the other hand, there are projects like IKVM.NET that implement Java on the .NET CLR, so it's at least hypothetically possible to support existing mods on a hypothetical Minecraft#).
The objective was to protect Mojang's IP on the (probably mistaken) idea that if they release the source code it means they lose control over it.
Added to that, my own speculation is that members of the modding community want to keep the barrier to entry for writing mods relatively high, for some reason or another. Some modders, including the brilliant Eloraam (maker of RedPower), want to maintain their own mods as proprietary and obfuscated.
When I looked at the Minecraft mod scene a few years ago mods were generally monetized through distribution, generally only available for download through ad-laden 'locker' sites. Also, I think that many developers aware of software licensing issues stayed away due to the murky legal issues surrounding Minecraft modding.
I don't even think they need go that far: only the bits that would form some sort of stable API would need to not be obfuscated. They could still do whatever with anything internal.
As an aside, I think it's worth looking at the Minecraft communities thoughts on the 'official' modding api for the game.
Dinnerbone (aka Nathan Adams, the most community orientated Dev on mojangs Minecraft team) recently tweeted "Just a reminder: there is no official way to mod Minecraft & we still do not officially support mods. We are still working on the plugin API" and the community sentiment shows that they really are getting sick of the ever prolonged promise of a modding api.
The comments on the reddit thread about dinnerbones tweet are largely hostile.
I always thought a better way to combine programming & minecraft for kids would be something like ComputerCraft (http://www.computercraft.info/), where you can program a robot inside the Minecraft world to do stuff for you, like building road/bridge, digging tunnels, etc.
ComputerCraft is Lua-based, but I can imagine something similar based on CLR, and that way you can let kids program in C# from Visual Studio.
Programming a bot is much simpler and even a very simple program (like digging a tunnel straight) is instantly gratifying. Writing a mod has a much higher barrier to the entry, AIU.
I love that Minecrosoft under it's new leadership works harder on doing cool stuff. That really puts it back more in focus, at least for me. Maybe I'm even switching back one day, who knows.
This is a good move by MS but most of this work is done by the Forge team [1] which is a community of open source people that have been doing the hard work for years -- they deobfuscate/reverse engineer Minecraft code and build an API for it.
MS has basically just packaged up a way for working with that API through Visual studio (before this, you would have used Eclipse or any other Java IDE and still can).
Was this possibly at the forefront of the decision to buy Minecraft - like how do we get kids in at the ground floor; or is that so obvious I should kick myself for not seeing it before. I saw it as a userbase acquisition before but didn't see how it fed in to their other business outside gaming, smart.
Is this a new venture to support Java in VS? I was under the impression that they didn't really do Java in the MS IDEs. If so, that's far bigger news than Minecraft-specific support.
I hope so. They would have and some code/features left over from a decade ago when you could write "java" code in Visual Studio as VisualJ. Conceivable the interfaces for hooking the debugger, the syntax highlighting, and all that jazz that VS already has to support could be (re)extended to support the JVM and JRE once again
Doesn't look like it; looks like it's all based on open-source tools written by third parties. Syntax highlighting, Java project support, and the debugger come from the Java Language Support VS extension [1], and Intellisense support is being pulled from a bundled Eclipse instance running the Eclipse Java tools.
This is pretty awesome. Hopefully they figure out a way to allow me to write my mods in C#, that would just sweeten the deal that much more (I know Minecraft is a Java app, just saying that would be a cool feature if they can work that out).
About 10% of the world logic (i.e. the movement of water, growth of plants, behavior of doors) is implemented. Notably missing: mobs, combat, redstone, smelting.
The modding API has been vaporware for so long it inspired a friendly roasting by the Yogscast - in the form of an animated cover of "Stop the Cavalry".
Practically speaking, for some time now Forge has been the community-made SDK that has replaced. There are a handful of others, but a vast majority of mods use Forge.
At this point, given how many mods are already written[1], it would probably be really hard to introduce an "official" API and/or SDK unless it has explicit support for Forge.
Nathan Adams is a brave developer, seeing as how his parent company just held their annual conference and showcased a featured way to create and distribute Minecraft mods.
This is akin to someone working on Windows saying,
"Just a reminder: there is no official way to run Windows on a Raspberry Pi 2 & we still do not officially support ARM. We are working on it"
Uhm. Okay, Nathan, but your boss's boss just delivered a keynote presentation and told tens of thousands of people otherwise.
It seems, although I say this having no actual knowledge, that Microsoft is preparing to release a .NET version of Minecraft. I suspect that's a big driver for the ongoing push to federate the framework across the major platforms. I would imagine any official modding API would happen once that release is complete.
Granted, I could be totally wrong on this, but it's fun speculation.
That would be really quick. It's only been about seven months since the acquisition, and Minecraft is not a simple game. I have no doubt they are rewriting the game (or a sequel) from scratch, but I wouldn't expect to see it any time soon.
Yeah, the team is still actively tweeting updates about adding features and refactoring parts of the original code base. There's not even a slight chance a port would be even out of the planning stages.
Even the most gung-ho C# pusher at Microsoft would also ask what benefit porting it would give. Years (if we're being realistic) just to get to feature parity all so it runs on top of .NET?
They have some of the codebase in c++ already from minecraft Xbox and pocket edition versions. If they expect it to be a long term ip/revenue source they will probably want a unified c++ codebase. Hard to improve the graphics engine much without biting that bullet.
This would make a lot of sense for Microsoft, since the Minecraft brand is so strong. If anyone has ever played Project Spark from Microsoft (Team Dakota), there are quite a few synergies there as well.
Yes, it really would. As would an official way to load mods. I get a headache every time I try to set one up for my kids. Wish it was as easy as loading a wad in Doom 2 was:
Edit: I should say, it's not official of course. But it takes all the headache out of using mods. And the mods use the same modding framework it seems Microsoft is using.
Gaming gets so many people into programming. I started with GameMaker when I was 10 and I know plenty of people who've started with modding. This is fantastic.
Finally I got it, all of these new projects from MS, and the real reason is: to build Mincecraft Mods! :) I could not approve the new direction MS is taking.
Part of me wants to bitch about what a missed opportunity it was, letting Microsoft take over and tie this to their own dev environment.
But on the other hand, taking even a single step back from the previous (effectively) actively hostile approach to the modding community (needlessly obfuscating the bytecode, promising and then pushing back mod tools) is more than we had under Notch.
clicked on the update notification. it took me to a sign up page (after i logeed in with my MS account) in the browser. i signed up. it said i had to have a special account and that i could register. the second page on the registration force me to choose either individual for $19 or enterprise for some other value.
there is absolutely no way on that flow to download it. i always get to that page.
OK, after getting the link somewhere else and starting the installer it tells me that i can't install on windows 7
somehow the download link, directly from VS, sees that I'm on windows 7 and instead of telling me that keep sending me to the payment screen. clever Microsoft...
If you haven't watched a 12 year old play Minecraft, you need to do so. It's the ultimate fantasy universe, and the way you combine elements to make something new is very analogous to programming in the vanilla game.
Adding a way to customize this universe will just explode the interest in programming among young people.
It's really unfortunate that there is so much time being devoted to "teaching programming" to kids, instead of "teaching playing on computers". "Teaching programming" feels serious and adult, and doesn't leave room for fun.
I've had said 12 year old try multiple times to "learn programming", only to give up when things aren't as great as they'd imagined in their head, after having spent hours just trying to figure out the right version of Python, and how to get a shell set up, and how to get something on the screen.
Imagine the result of having your for loop create millions of blocks accidentally in your universe, and seeing that mistake happen in a non-threatening way. This is the sort of thing that makes computing and abstract thinking easier for everyone.
Giving an open universe to kids with the blocks to effect their world is just an insane tool. Kudos to MS for the hard work, and putting it out so early.