Presentation is loading. Please wait.

Presentation is loading. Please wait.

Minecraft An Introduction Copyright © 2015 – Curt Hill.

Similar presentations


Presentation on theme: "Minecraft An Introduction Copyright © 2015 – Curt Hill."— Presentation transcript:

1 Minecraft An Introduction Copyright © 2015 – Curt Hill

2 Introduction A curious phenomenon! A game with many modes It trades good graphics for in- character environment creation May be played by very young but still has interest for the mature

3 History Original developer was Markus Persson in 2009 Inspired by several previous games that it was transcended Mojang was the owning company Purchased by Microsoft for 2.5 billion dollars Is available on PCs, Macs, Android, iPad, XBox, PlayStation and numerous other platforms Copyright © 2015 – Curt Hill

4 Characteristics Open world type First or third person Several modes of play –Survival –Creative –Adventure –Spectator –Demo Single and multiple player Copyright © 2015 – Curt Hill

5 Modes Survival mode – Scavenger hunt to gather resources –Creating tools is part of game Creative – Create environments and objects –None of the limits of survival mode Adventure – Set down in a created world –Author limited creation and destruction Copyright © 2015 – Curt Hill

6 Java Minecraft is a game that is completely written in Java This is both good and bad The Good –Nearly platform independent –Lots of Java programmers –Decompilable The Bad –Somewhat slower –Decompilable Copyright © 2015 – Curt Hill

7 Decompilable The decompiler has been a dream in CS for decades It takes an executable and produces the high level language that produced it In general this is a dream that cannot be done However, in Java it is possible Copyright © 2015 – Curt Hill

8 What makes Java different? There is only one compiler –Makes it easy to see characteristic code constructions and infer what caused them Each class must be in a file that has the same name –Even when packed into a jar file The reflection feature –ability to examine and modify the structure and behavior of an object at runtime Copyright © 2015 – Curt Hill

9 Reflection Again Reflection gives us the ability to ask a class if it has a particular method It also allows us to call that method To look for methods not knowing if we will find them and execute them if we do: String s = … Method mthd = foo.getClass().getMethod(s, null); method.invoke(foo, null); We did not know what the name was until we found it Copyright © 2015 – Curt Hill

10 Good and Bad? The decompilability issue is both good and bad For the owners their code is exposed –They are somewhat protected by copyright –Derived code could be disguised and marketed by a competitor For the modders we can change anything –More power than in most modifiable games Copyright © 2015 – Curt Hill

11 Obfuscation The owner’s answer is obfuscation The word means to confuse or disguise The process generally involves: –Transforming the names into meaningless ones –Refactoring classes –Reorganizing flow of control To be useful in this case it must be done and undone by program Copyright © 2015 – Curt Hill

12 Process The author’s need to be able to write, debug and maintain code in its original, highly understandable form They then obfuscate by program The new Java code should execute in a functionally equivalent way –A bug reported in the production code should also be present in the pristine code –Otherwise it is a obfuscation bug Copyright © 2015 – Curt Hill

13 The Modder’s Problem How can we alter this obfuscated code? Someone has figured this out –There is a de-obfuscator that restores reasonable names The MCP toolkit and Minecraft Forge has the tools needed to de- and re- obfuscate as well as decompilers –Neither of these are officially connected to Mojang Copyright © 2015 – Curt Hill

14 Relationship Recently Mojang has been rather cooperative with the modders In Curt’s Occasionally Humble Opinion they have legal grounds to eliminate these people or at least harass them enough to make it not worth while –They have chosen not to do so –This is likely that the modding community has increased rather than decreased revenues Copyright © 2015 – Curt Hill

15 Java Again Recall that Java has dynamic binding When a method call is executed for the first time the class file is loaded from disk or elsewhere –It did not have to be in memory before the call This allows objects to be dynamically loaded into memory without the program knowing anything about it before it started Copyright © 2015 – Curt Hill

16 Structure of the Game Like many multi-player games there are two main components –A server –A client Both are Java programs and are subject to our change They communicate using packets over the internet Copyright © 2015 – Curt Hill

17 Client and Server The client is interested in three main things: –Catching and interpreting keyboard commands –Displaying the current scene on the monitor –Communicating with the server on what is going on The server is the communications relay –What has been reported by any client is reported to all the rest Copyright © 2015 – Curt Hill

18 Infinite Loops The client stays in an infinite loop The goal is to go through the loop 20 times a second –This is a tick The tick based items include updates to the world –Communication to and from the server –Monitoring the keyboard/mouse Rendering is not tick based All the server processing is tick based Copyright © 2015 – Curt Hill

19 Client Again The Minecraft client is actually somewhat more than that A server was integrated into the client –This facilitates group play on a LAN Thus there are two programs –The server without the client (stand alone or dedicated) –The client with the server We also have the issues of proxies Copyright © 2015 – Curt Hill

20 Proxies Code in a mod could run in two places: the integrated server (part of the client) or the stand alone server If this code references code in the client then one of two things can happen: –In the integrated server all is good –In the stand alone server it crashes We thus need classes with different methods depending on the location Copyright © 2015 – Curt Hill

21 Proxies Again A typical solution is to have a common proxy –This determines the needed method signatures We take derivations of this for the server proxy and client proxy An annotation will show the system which one to load Usually client and server have same signatures but do different things –A rendering method would be empty on the server Copyright © 2015 – Curt Hill

22 Classes Minecraft is largely constructed from a few classes Most of these classes have many derivations In this presentation we will mention them Other presentations will discuss them more fully Copyright © 2015 – Curt Hill

23 Classes Block –Describes how to draw and how it reacts to events (behavior) Item –Anything that a player can carry such as a sword Entity –Anything that can move around TileEntity –Used when more data than a block is needed Copyright © 2015 – Curt Hill

24 Finally Plenty of more to consider Licenses Establishing the forge environment Creating a simple mod Lots more Copyright © 2015 – Curt Hill


Download ppt "Minecraft An Introduction Copyright © 2015 – Curt Hill."

Similar presentations


Ads by Google