Microsoft makes it easier to build Minecraft Mods using Visual Studio
blogs.msdn.com
blogs.msdn.com
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.
Nowadays I am more into stories and narratives. Building games. Stories that transform our lives.
Watching my 5 yo work in Minecraft reminds me of the programmer "crunching entities" in the movie "The Zero Theorem".
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?"
Minecraft has become an amazing tool :)
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.
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.
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!
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.
[0] https://www.visualstudio.com/en-us/products/visual-studio-co...
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).
[0] http://en.wikipedia.org/wiki/Microsoft_Visual_Studio_Express
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?
FTFY.
* Minecraft Pi - code and run Minecraft mods in Python (https://www.raspberrypi.org/learning/getting-started-with-mi...). If not running on a Raspberry Pi, you can use Raspberry Juice (http://dev.bukkit.org/bukkit-plugins/raspberryjuice/) which implements most of the Minecraft Pi API.
* Scriptcraft (http://scriptcraftjs.org/) - create mods using Javascript.
* LearnToMod (http://www.learntomod.com/) - commercial service that allows modding using a visual language (I think they use Blockly which is similar to Scratch).
I wrote a RaspberryJuice+Python command server so you can have run python functions inside minecraft. [0]
* Microsoft are releasing a game.
* Where they obfuscate the code so people can't read it
* And mod tools
* Built on community scripts
* Which decompile the code and rename the obfuscated variables to give readable names
At what stage does it make more sense for MS to tell Mojang to drop the obfuscation and move to a "visible source" model?
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 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#).
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.
http://www.reddit.com/r/Minecraft/comments/34ffag/dinnerbone...
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.
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).
Cool announcements of stuff does not always equal cool stuff.
[1] https://visualstudiogallery.msdn.microsoft.com/bc561769-36ff...
It's got:
- Multiplayer support
- Entities (items, sand, gravel)
- World and player data persistence
- Crafting
- Farming
- Procedural terrain generation
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.
doom2 -file dwango5.wad
Very easy, just use this.
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.
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.
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?
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.
https://www.youtube.com/watch?v=G-zthYFjk6s
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.
[1] one probably-incomplete list: http://modlist.mcf.li/version/1.7.10
edit: It seems MS's devkit does have Forge support baked in.
edit2: It's worth mentioning that Yogscast's "Where's the modding API" cover mentioned above was published on Dec 20, 2013.
Improving the ability for people to make mods now will provide an ecosystem for future Windows app development.
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.
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...
But I no longer have Windows machines (couple of croutonized chromebooks and iBooks)...
Anyone had an idea?
You could use Eclipse or any Java IDE.