Here’s an open source example pdf reader app providing a full featured book reader style experience called GreatReader from Shohei Miyamoto.
The features of GreatReader include:
- iPhone/iPad Support
- iBooks Like Design
- Zooming in/out with double tap
- Rotation handling
- Reading histories view
- Cropping for zooming
- Document Outlines
You can download GreatReader on the App Store.
You can find the GreatReader source code on Github here.
A nice example PDF reader app.
See more: Open Source Apps
- Open Source: Flipboard Style Transitions And Reader Example For iPad
- Tutorial: Building An RSS Reader
- The Magic Formula For Getting Your App Featured By Apple
- Free Library Providing A Beautiful Full Featured Drop In Photo Editor For Your iOS Apps
- Open Source iOS Control Providing A Full Featured Custom Video Player
Original article: Example iOS Source Code: A Full Featured PDF Reader App
©2014 iOS App Dev Libraries, Controls, Tutorials, Examples and Tools. All Rights Reserved.
We recently developed an extension model for Voxel Studio and Voxel Farm in general. The idea is you should be able to come up with entirely custom procedural content without having to recompile any of the tools, and even your final EXE if you like.
You can achieve this by wrapping your custom code inside an extension. During world design time, Voxel Studio is able to load your extension and allows you to input whatever configuration parameters you have chosen for it. Then, during runtime, the same extension code runs thus guaranteeing you get the same results you saw inside Voxel Studio.
Let's follow a quick example. Imagine we have developed a small scene in Voxel Studio using the default terrain component. At this point we have interacted only with the vanilla settings, so our scene looks like this:
Note this is only terrain, it does not contain other layers like rock and tree instancing, but it should be enough for this example.
Now let's say we want to add a massive sphere somewhere in the image. While we could go in edit mode and add a sphere using a voxel brush, this would set a lot of voxels. Since we know this will be a perfect sphere we can save a lot of data if we just store the center and radius and produce the voxels on the fly. Voxel Studio does not include a layer like that out of the box, but we can create it ourselves. Here is how:
Voxel Studio in Windows OS can load extension DLLs at runtime. You can develop the DLL in any form you like as long as the few required entry-points are found. The first few are functions so Voxel Studio and Voxel Farm in general can ask the extension what parameters it wants to capture. And then there is one function that will return the voxel data for a given chunk of space.
So we create a new DLL project. Just by dumping the binary DLL in the extension folder, Voxel Studio should be able to find it and allow us to use it for a new voxel layer:
Here our extension has identified itself as "Mega Sphere". Clicking on it will add it to the list of voxel layers in the tree.
We then define four properties for the sphere: origin x, origin y, origin z and radius. Exposing property metadata is what allows Voxel Studio to create editors for the extension without really knowing what they are and how they will be used:
Now comes the real work. So far it was mostly about metadata, let's see how we get actual voxels out of the extension. It comes down to implementing a function that looks like this:
Here you can see some spheres. The one in the last image has a 10 km radius. Naturally we could have developed a more interesting layer, for instance a meteorite impact zone or ore veins, but hopefully you get the idea.
One last thing: Using native code for extensions always brings up the issue of security. We debated this for a while when designing the system. We finally chose to use DLLs just because they allow to run native code without penalty. You can get really close to the metal. The security aspect can be managed by certification, also by running the DLL in a lower OS integrity mode, thus restricting the kind of access it would have over the system. And of course you can always have a DLL extension you trust that acts as a wrapper for code you do not trust, but runs in Lua or some other form of application language where you are certain it can be contained.
OpenCSG is an library for doing image-space rendering of shapes made up by constructive solid geometry (CSG), using and integrating with OpenGL. The new release 1.4.0 contains bug fixes for rendering CSG expressions made up from more than 255 primitives. OpenCSG implements a couple of different algorithms for rendering CSG, and all of them now work correctly for geometry that exceeds this number of primitives.
It is getting more and more common for kids of younger and younger ages to show interest in game development. In this day and age there is a wealth of information out there, possibly too much information at times. This guide is intended to help parents or younger readers get started in the world of game development. So, what exactly does this mean? First it means I will focus on technologies that are appropriate to beginners. Second, it means I am making no assumptions about your technical abilities, in fact, I am assuming you have none. So if it ever feels like I am insulting your intelligence or speaking down to you, I am not! On the other hand, if I am unclear or confusing at some point, please let me know and I will try to clarify.
How young is too young?
This is perhaps one of the most common questions asked. How old do I ( or my child ) have to be to get started in game development? This is a question with an impossible answer as all kids are different. On the extremely low end of the range ( and using the right tools ), an incredibly motivated 6 year old would probably be able to have some success. On the other range of the spectrum, a typical 12 year old should have the educational foundation and mental abilities to succeed. The actual age is bound to be somewhere in the middle.
There are a few critical things to be aware of up front.
The first is motivation. Motivation is more likely to be the biggest hurdle to success, not mental ability. If your child absolutely loves creating stuff ( loving to play video games is massively different than loving to create video games ) and is willing to trial and error, they are perfect for game development!
The second is managing expectations. This is where we lose the most potential game developers out there, regardless to age. Game development doesn’t have to be exceptionally hard, but it is certainly complex. Your child is not going to be creating massive modern games like Call Of Duty or NHL any time soon. Nor are they going to create an MMO ( online game like World of Warcraft ). They need to start small, very small and work their way up from there.
A key way to put it is, if your child’s mindset is “I am going to create the next Minecraft”, they are going to fail and fail hard. On the other hand, if their mindset is “I am going to create the next Minecraft, eventually”, they have perhaps the perfect mentality to succeed. Knowing the difference there is critical. Like almost any other skill, you need to start small and build on your successes. Starting too big will just result in failure and frustration. For the record, I believe I was about 8 when I started programming using Atari BASIC.
What is Game Development anyways?
This section is going to get slightly more technical, but not overly so. Game Development is an umbrella term, it includes many different skills all coming together to create a greater whole. Think about Game Development like you would an car maker. There is no single skill involved in making a car, instead you have engineers, graphic designers, manufacturers, quality assurance and more all coming together to make a car. In the case of a game however, it’s still possible for all of these different tasks to be performed by a single person. There are a number of highly successful games out there that were written, drawn and scored by the same person. It is important to realize though, this generally isn’t the case. Basically what I am saying is game development isn't a single task, it’s multiple. While your child may really enjoy one part, they may dislike another part. It’s also important when looking at what tools to use to see if they come with art or sound examples to get your child started, so they don’t have to do everything all at once.
If you look at a modern game’s credits, you will literally see hundreds of different names and job titles contributed to the project. When just getting started however, there are really only two tasks to focus on. Creating the game and creating the stuff that goes in the game.
Let’s look at the board game Monopoly as an example. Two major sets of skills went in to making that game. First you had to create the game… design the board layout, make the dice rules, write up all the game cards, etc. Then you had to create the contents of the games, the pictures that went on the board, the drawings on each card, the little plastic houses, etc.
In video games, it’s really no different. You have the task of creating the game, generally called programming and the task of creating stuff to populate your game, be it art, animation or music/sound. These skills are completely different but are generally required for a game. This actual tutorial is going to focus mostly on programming, when a child is interested in game development, this is generally what they mean. A child interested in being a game artist for example, has probably already got their face buried in a notebook, sketching away! This by the way is the perfect approach for them too, as the difference between “an artist” and a “game artist” is miniscule. If you do however want to explore computer art for games a bit closer, read this guide.
What is Programming?
So, chances when you are talking about game development you are actually talking about game programming. What is programming? The simplest definition I can give is programming is the art of telling the computer what to do. In the case of game programming, this means doing stuff like “when the user pushes the UP arrow do this” or “when player health equals 0, draw that”.
Now how you program games, that’s a much trickier conversation and one of the biggest things that you will struggle with. Perhaps more importantly, it’s the thing that is going to be most dependent on your child. We don’t all think the same way and we don’t all express ideas the same. In some cases a child might take to one particular style while a completely different child would possibly despise it.
For the most part for game programming there are three different ways to tell the computer what to do ( and often a combination of all 3 ):
Visually – this is a very common approach for beginners and for game development in general ( Unreal Engine 4, one of the most commonly used commercial game technologies has a Visual scripting interface called Blueprint for example ). In Visual programming languages you generally drag and drop to draw your game screen, then wire it all together in a flow chart like experience Basically it’s the programming equivalent of creating a flow chart. If your child is a visual thinker, this may be the best route for them.
Here is an example of a Visual game development tool, Construct:
Scripting Languages – With scripting languages you tell a computer what to do using small text files. You often still draw your game using a visual editor like the picture above, but when actually telling the computer what to do, instead of filling in text boxes or creating flow charts, you use code.
Here is an example of the LUA scripting language, using a 2D game library named LÖVE:
This little bit of text tells to computer to load an image with the filename “whale.png” and then to draw it on screen.
Traditional Programming Languages – Finally a lot of game development is done in traditional programming languages. Common names include C++, Java, C# and more. I should start straight away by saying, I do not recommend young programmers start by using a traditional or more accurately, a compiled programming language for several reasons.
The big question you may have is, what’s the difference between a scripting and compiled programming language? A lot of it is technical and beyond the scope of this article but most of it comes down to complexity. Dealing with a compiled language leaves you dealing with a number of things you simply don’t have to worry about with scripting languages. Things like compiling ( the act of turning the text you write into something the computer can understand ), linking ( can’t easily explain this one ) and more.
Perhaps more importantly, it’s purpose. Scripting languages are generally much more focused in what they do and are designed to make things easier for the developer. Put in the simplest terms, scripting languages are generally a lot easier to learn and use. If you do want to learn more about traditional programming languages, you can read this guide. It is a much more technical guide than this one. If your child is in their teens, this may be an appropriate place to start. That of course isn’t to say that teenagers ( and older ) are too old for the stuff recommended below.
In the end you will often find game development tools offer both a visual system and a scripting language, where much of the game is created using drag and drop but portions can be controlled using a scripting language.
IDE, Library, what???
OK, one last topic to cover before we get into it. There are a bunch of terms and expressions that get thrown around that might be confusing. I am going to quickly cover some of them.
Language – This is the programming language used. Just like we used English, Spanish, German etc to talk to each other, we use different languages to talk to computers. In the example above the programming language was Lua.
IDE – Integrated Development Environment. This is a bundling of a number of tasks all into a single application. Not all suggestions will have an IDE, meaning you need to use different programs to do different things. Generally an IDE includes a text editor, a programming language and various tools all in a single spot.
Library – Think of a library like someone doing a bunch of work for you. Generally even the “simple stuff” isn’t actually part of the language, things like drawing on the screen. Instead people write that stuff and make it available to you as libraries. In some cases, like GameMaker or Construct, it’s all bundled together for you. In other cases, like Lua, you pick a library to go with the programming language. Each approach has advantages and disadvantages. For example, Gamemaker bundling everything together makes life easier to get started, but with Lua, if they don’t like a particular library, they can simply use a different one.
Sprite – A sprite is a graphic used in a game, for example the player. A sprite can be a single image or could contain multiple for animations. The exact meaning of a Sprite changes from engine to engine, but is always a visible thing in the game that moves. If you’ve played Super Mario Brothers, Mario, the turtles, fireballs, etc… would be considered sprites. The world however, such as pipes and the sky, would not generally be considered sprites.
Debugger – When your game doesn’t run correctly, it can be tricky to figure out why. Some packages ship with something called a debugger, which is a tool to help you identify problems or “bugs” in your game. It is a somewhat advanced feature for beginners, but at the point you need one, a debugger can be invaluable. For additional information on debugging click here, although advanced warning, that is a highly technical article.
Kid Friendly Game Development Options
Now after all of that we get to the meat of the article… the actual suggestions for development tools to introduce your child to the world of game development. This is by no means an all inclusive list! For each example I will list what’s included, an example of how it works, positives and negatives, the costs if any and links to books available, if applicable. One last very important thing to note… any of these options is a valid one, there really isn’t a single ‘best” choice. Tailor your decision to best match your kids interests. If you first choice doesn’t work out, try a different one.
The following list is in no particular order.
Scratch is an MIT backed project aimed at teaching kids aged 8 to 16 to learn how to program. There is a massive community built around Scratch, which has been around since 2006. There is a special focus on being family friendly. Scratch is run entirely in the web browser, you simply go to the web page and start programming. If you want to save your work, you need to register, but it’s a simply form and doesn’t even email you for verification.
Scratch is firmly in the visual programming languages category. Your child works by dragging actors onto a scene, then controls them using Lego-like programming blocks. The blocks are a good parallel to actual programming language structure, so if they switch to scripting or traditional programming, it will make immediate sense. There is a good amount of documentation available and you can find literally thousands of sample scratch programs to learn from.
Perhaps the most valuable part of scratch is it comes preloaded with all kinds of content for your child to get started with. However it also has the ability to import graphics and audio you create yourself or get from the community, allow an easy transition between programming and making game assets.
Scratch running in Chrome:
Loading a new Sprite
Programming in Scratch:
The above is a script attached to the blue dog. It’s in two parts, first is when the Green flag ( Go ) is clicked. It makes the dog visible, moves to a certain position on screen, then moves by one step over and over. The other waits until it gets the collide message from the other dog, when it does it goes back to the starting position, changes the scene then hides itself. Each Sprite has it’s own script. The programming blocks are drag and dropped from the programming palate:
The Programming Palate:
These are the blocks you use to program in Scratch. Above are the “Looks” options. As you can see, there are a number of different categories to choose from.
Includes or Alternatives:
Scratch is an all in one solution, so you need no other tools to work in Scratch. It also ships with a large variety of sample scenes, backgrounds and sounds to start with.
Scratch is completely free and run by sponsorship donations.
Scratch also makes an iPad application called ScratchJr which is aimed at children 5 to 8. It is also completely free. Since there is nothing to buy, or download and you don’t even have to register to try Scratch, it is probably the easiest option to try out in this list.
Construct2 is a great deal more complex than Scratch, which has a two fold impact. First, Construct certainly has a higher learning curve than Scratch, so it isn’t suitable for younger children and does not take a teaching approach. On the other hand, it is meant to provide an easy to learn tool capable of creating professional games, instead of for learning. This means there is a lot more runway before your child runs into any limitations. There are many professionally shipped games that were created in Construct 2.
Construct is an application installed on your computer. Construct requires a computer running Windows. There is no Mac option currently available.
Construct 2 Main Window:
This is the primary way of programming a Construct 2 game. The example above is part of the code controlling how the player responds to input, taken from one of the included samples that shows creating a simple shooting game.
Behaviors allow you add quickly add predefined behavior to a game object.
Integrated Image Editor:
Includes or Alternatives:
Construct 2 is an all in one solution that contains everything you need to get started. Out of the box however it does not contain a ton of content to get started with. They do however have a free asset pack available for download. ( Warning, that is a direct download link. Click it and the 38mb archive of assets will start downloading ). If you move beyond the free version, you get more assets included.
Construct2 has tiered pricing.
- There is a free version available to download. The free version is only able to create games that run in your browser. It also includes less bundled assets and has a number of limitations on the complexity of game that can be created. This limits shouldn’t be too much of a problem at least initially.
- The Personal Edition is currently 129USD, is able to create Desktop, iPhone and Android games and includes much more bundled assets like sounds, songs and sprites.
- Finally, there is a Business Edition, which is exactly the same as Personal Edition, except it costs more and is required if you make more than 5,000USD from your Construct2 games. Basically if you have this problem, it’s a good problem to have!
GameMaker is an all in one game creation system that is a hybrid providing both a visual programming interface, as well as a scripting language, their own proprietary language GML. GameMaker initially exports to Windows only, but for a fee can also create games for iOS, Android, Web, Windows Phone and more.
Programming in GameMaker can be done in a flow chart like manner, similar to Construct2. It also adds the option of programming in their own scripting language GML. This is both a plus and a minus. The ability to program using a Scripting language in addition to the visual system gives the user a great deal of flexibility. It is however a more complex process. Since the language is proprietary to GameMaker, if they move to a different environment, a lot of their knowledge will be less useful. That said, general programming concepts stay pretty much the same from language to language, so this isn’t as big of a problem as it might sound.
Other than assets to get started with, GameMaker quite literally ships with everything you might need out of the box, although the quality of the tools varies. You are able to create graphics, sounds and levels in addition to programming, all in one single application. GameMaker has been used to make some very successful commercial games such as Spelunky and Retro City Rampage ( not for children ).
GameMaker is one of the more complex options on this list and is probably not appropriate for pre-teen level children. For older children though, it offers a lot of flexibility and a ton of options should they wish to share or sell their games eventually. Obviously this changes from child to child, so there is no hard set rule. Just be aware, compared to say Scratch, the difficulty level here is much higher.
(Script for firing a bullet)
Includes or Alternatives:
GameMaker is an all in one solution and contains everything you will need to make a game including code editing, image creation and editing, map designer and more. It also includes a built in debugger, useful for hunting down problems. The standard version however comes with very little in the way of included samples to get started with. In fact, there are none. However there is a very active community and tons of examples and tutorials available online. The quality of the materials varies massively and curation by Yoyo Games is lacking, so finding the best starting material can be a bit of a challenge. For all of the screenshots and code samples in this entry, I used material from this tutorial.
GameMaker licensing can be a bit confusing, as their pricing structure has changed and not all material is updated.
The version you initially download is heavily restricted by the number of resources and scripts it can support.
You can however update to the Standard edition by simply registering an email address, which will be verified and you will then be sent a product key.
Then there is a “Professional” version for $100 USD that adds functionality for working with other developers ( you will not need at this point ). The biggest difference is the Professional version can buy additional modules that support exporting to platforms other than Windows. Each platform is generally $200 USD. So for example, if you want to export your game to play on Android and iOS it will cost $500. $100 for Professional, then $200 for each platform.
Finally there is a “Master” version, which is basically Pro with all of the different export platforms enabled. It’s $800USD currently.
For a new developer, the registered Standard edition is most likely good enough. If you do need Professional, keep an eye on the Steam Store, it is made available for sale quite often. To add to the confusion, the Standard edition you can download for free is $50USD on Steam. DO NOT BUY IT!
Note, it is not necessary to use the included tools. For example, if you want to use another graphics program to create sprites, or to import graphics from another source, this is perfectly possible!
Lua with LOVE
Lua is a scripting language, while LOVE is a library for making games ( see the descriptions earlier for definition of a library ). Lua was a programming language created for non-programmers and has become increasingly popular as a scripting language for commercial games, such as these. That is one large advantage to choosing this option over say, Gamemaker’s custom scripting language, GML. Lua is used elsewhere and fairly commonly, so it is a skill that will carry forward very well. As a language it is fairly simple to learn.
LÖVE is the library you use to create games using the Lua programming language. LÖVE provides pretty much all of the functionality you need to create 2D games including drawing graphics, playing sound, controlling input, loading files, etc.
LÖVE and Lua isn’t a turn key solution like some of the others however, you still need a text editor to create and edit your scripts, a drawing program for creating art, and audio programming for recording sounds, a map maker for creating maps, etc. Fortunately all of these things are freely available and I have recommendations below. You do however have to download each one separately. LÖVE however comes with no assets like graphics or sounds to get started, but sites like Open Game Art and FreeSound can help you get started. It is however, yet another thing you have to locate and download.
The biggest negative about LOVE is the lack of platform support. Currently LOVE can only create games for computers, although mobile targets are in the works.
Sample Lua/LOVE Code:
Includes or Alternatives:
The LOVE library contains Lua, so all you need to get started is here with the getting started documentation here. However that just gives you Lua and LOVE and nothing else. You still need a text editor to create your code, plus art and sound programs.
However, for Lua development I would recommend ZeroBrane Studio which is a more integrated development environment (IDE) that allows things like code suggestions and debugging. Oh, plus it’s free, which is nice.
For creating levels and maps, Tiled is a very popular and free choice.
On the alternatives front, LUA is the scripting language for a number of popular game development tools including Corona, Gideros and Marmalade Quick. None are as easy to learn as LOVE however, which is why I recommend LOVE over all. They do however illustrate how learning Lua is a skill that transfers well to other projects.
Both Lua and LOVE are free. ZeroBrane is a pay way you like product.
Only one of these books is specifically about LOVE programming.
Lua also have a free reference manual available online.
The name of the library is actually LÖVE with an umlaut over the O. While cute, coupled with the commonness of the word love makes searching for help incredibly annoying. When using Google, always add “lua” to search expressions.
Python with PyGame
Like the Lua and LÖVE option, this is a programming language and game library combination. Very similar to the LÖVE library, PyGame is a very beginner friendly library. Python is the programming language used in this pairing. Python is a popular scripting language, although less so in game development. It is an extremely popular language in the world of 3D graphics, such as at Pixar. It is also quite commonly used by IT professionals to automate tasks, so even outside game development, Python can be a very valuable skill. Python has been used to make several games.
PyGame also provides most of the common functionality you would expect in a game such as audio, input and graphics. You also need to provide your own text editor, graphics, sounds, etc. However unlike LÖVE, PyGame does ship with several examples and some sample assets to get started with.
Python Code in PyCharm
Includes or Alternatives:
See the recommendations for LÖVE above, most of the same tools can be used.
ZeroBrane studio however is not an option for Python. I would personally recommend checking out PyCharm, which has a free version available. It is however a somewhat complicated editor. Of course, you can still use whatever text editor you would like, such as the earlier recommendations of Notepad++ or Sublime Text.
Python and PyGame are both free. PyCharm is available in a free version.
Python is a more complicated language than Lua, so its is recommended only for older children. On the other hand, programming in Python is also much closer to programming in traditional languages, so the experience of learning Python will be closest to what professional programming generally feels like.
Sadly, there are two versions of Python, something that has plagued the language for a very long time. Most of the time you want to use the 2.x version of the language.
HTML5 with various
If you child is interested in working on HTML5 games, it is a good option to persue with the right library. Two very good options, that provide game functionality and deal with some of the browser lunacy are Phaser and CreateJS, but there are literally hundreds of options. Both of those libraries are straight forward, well documented and commonly used.
Like Python and Lua, HTML5 is not an integrated solution, so you need to provide your own text editor, graphics, etc. However, pretty much every modern browser has build in tools to make development easier.
Stencyl is a visually programmed game creation kit that bills itself as “the quickest and easiest way to make games”, which may actually be true! In functionality it is very similar to Construct2, you program by drawing out your scene, then adding behaviors visually. It is an all in one solution with an integrated image editor, although you can always import assets created in external tools. There is no way to script in Stencyl, although you can create extensions using a programming language called Haxe, if there is functionality you need that is not available in Stencyl. This however is advanced functionality and is probably beyond your child’s current ability level. You can however download pre-made extensions from the marketplace.
Stencyl runs on Windows, Linux and Mac and by default can only create web (Flash) applications. The ability to target other platforms like desktop computers (outside their browser), as well as iOS and Android is available for a cost (see below). While it doesn’t ship with a ton of assets, it does make them very easily available. In addition the help available online is very good.
Includes or Alternatives:
This is a pretty all in one solution. Unless you delve into Haxe extension programming, basically everything is here with the initial download, or is linked directly from inside the application.
Stencyl is available for free, but limited to applications that run in Flash, either in the integrated player or your browser. Published games will have a Stencyl splashscreen when they load.
For $99, there is Studio that enables you to target desktop computers outside of the Flash player. The splashscreen is removed in this version.
For $199, you gain the ability to target iOS and Android.
Right off the top let me just say, this stuff is expensive Name Your Link">Name Your Link'>Name Your Link'>really expensive. However if your child shows an interest in robotics or is an avid Lego fan, this can be a very good introduction to programming. Mindstorm Lego is basically a simple robot creation kit using lego. The key part is it ships with a programmable piece that enables you to program your robot’s behavior. Mindstorm enables a nice progression, your child can start by building in Lego, then start controlling the robot using the desktop or iPad application, then graduate to actually programming logic.
Lego Mindstorm enables you to simply control your creations, or program them using the EV3 software, a flow chart like process. They do however make tools available allowing you to get as low leveled as you want to.
Even though it’s somewhat off topic, I mention Mindstorm because it can be an ideal introduction to more (literally) hands on children to the concepts of programming. Literally being able to see cause and effect in the real world can be very valuable.
A Mindstorm robot assembled:
Includes or Alternatives:
Name Your Link">Name Your Link'>Name Your Link'>Lots!
This is pushing the definition of “game programming”, but certainly is a very tactile introduction to many of the same skills that go into game development. Also I have to say, had my parents purchased this for me as I child I would have considered nominating them for parent of the year awards. When my daughter gets a bit older I am certainly buying this, but then, is it for her, or me? :)
All lists must end at some point, and this one is no exception. The following are other recommendations I have for parents looking to get their kids into game programming, but for whatever reason didn’t make the main list. If nothing above appeals to you, be sure to check some of these options out.
If your kids play games, there is probably a pretty good chance you have already been exposed to Minecraft. Modding is the act of modifying an existing game and Minecraft happens to be a very popular game to mod. Modifying an existing game can often be a great way, or at least motivation, for learning programming. There is a HUGE community of people that mod Minecraft. The downside is, it’s done in the Java programming language and it certainly isn’t suitable for young children. If your child is very interested in Minecraft though, this could be a good approach to take. You can learn more here.
GameSalad is another visual game creation kit in the veins of Stencyl and Construct2 mentioned above. It has been used to create professional games, there is a free version available as well as paid versions for other targeting other platforms. I personally have no experience with GameSalad.
Codea is an iPad application for creating games on the iPad. It currently costs $10USD. It uses the Lua programming language and provides it’s own library for creating games that is very easy to learn. It comes with code editing tools, debugger and tools to hook up with your computer. You can later hook it up to a Mac and actually create a game for publishing. However, typing code on an iPad keyboard is extremely unfun, so a bluetooth keyboard is pretty much essential. It does however come with tons of examples and is actually a great option for a young developer who has an iPad, especially if that’s all they have.
Kodu or Project Spark
This is a game that is about creating games. Basically it’s a game you can modify to do just about anything. Kodu is a visual programming language created by Microsoft. Project Spark is a modified version of Kodu being released shortly for the XBox One console. It’s pretty far from normal game programming, but many of the concepts ( and the end result! ) are very similar.
Alice is a integrated programming solution designed to teach programming. In their own words:
Alice is an innovative 3D programming environment that makes it easy to create an animation for telling a story, playing an interactive game, or a video to share on the web. Alice is a freely available teaching tool designed to be a student's first exposure to object-oriented programming. It allows students to learn fundamental programming concepts in the context of creating animated movies and simple video games. In Alice, 3-D objects (e.g., people, animals, and vehicles) populate a virtual world and students create a program to animate the objects.
Alice is maintained by Carnegie Mellon university and is completely free.
RPGMaker Ace is a product similar to GameMaker specifically for creating one type of games, Role Playing Games, generally along the Japanese style. Their tagline is literally “Simple enough for a child; powerful enough for a developer.” There are some commerically created games available that were written using RPGMaker. If your child is really in to this style of game, RPGMaker could be a great introduction to game programming. RPGMaker is $70, although quite often on sale on Steam. Ironically enough, as I write this, it is on sale for 75% off.
Of course I only scratched the surface of the options available, but I think I got the majority of options in that list. If you think there is something else I should have put in this document, let me know! I tried to make this clear to people of all technical levels, but no doubt I’ve made mistakes. If I lost you somewhere, please let me know and I will try to clarify. The most important thing to remember, all children are different, so one approach that works for one child may fail with another. Pick the option above that you think most fits with your child's personality, but if it doesn’t seem to be a good fit, remember there’s a dozen other options!
I hope that was useful. Good luck.
I’ve mentioned a few components for creating Facebook-style auto-scrolling navigation bars, most recently TLYSHyNavBar which supports multiple-level navigation bars, but it does have a few issues and does not seem to work with opaque status bars.
Here’s another component that aims to solve the issues of the previously mentioned components, and adds support for either translucent navigation bars called BMYScrollableNavigationBar from Beamly.
BMYScrollingNavigationBar is used within the Beamly app and an example project is included showing how to implement the component.
This image from the readme shows BMYScrollableNavigationBar in action:
You can find BMYScrollableNavigationBar on Github here.
A nice component for those looking to quickly implement scrolling navigation bars.
- Open Source Component For Creating Auto-Scrolling Navigation Bars With Many Nice Features
- Open Source iOS Component Providing A Scrollable UINavigationBar
- Tutorial: An In-Depth Guide To Customizing The Navigation Bar In iOS 7
- iOS Component Enabling Custom Navigation Bars With Gradient Coloring And Translucency
- Open Source Component Providing A UIToolbar That Slides Out Neatly Under The Navigation Bar
©2014 iOS App Dev Libraries, Controls, Tutorials, Examples and Tools. All Rights Reserved.
Searching for and finding 3D models on the internet can be a daunting task. There are hundreds of sites with free 3D models, but the quality varies massively and it’s a laborious task separating the wheat from the chaff. If only there was a search engine for this! Well, now there is.
Enter Yobi3D.com. Literally a search engine for 3D models:
Simply enter a search term and it brings you thumbnailed search results:
Pick a search result and a 3D WebGL viewer pops up. ( or your iPad that doesn’t support WebGL crashes! ).
From here you can orbit and zoom the model. Of course you can also navigate to the source using the link at the bottom.
One immediately obvious question, how do you filter results? If you are a Blender user, you probably don’t want Max files for example. There is a way to do this, but unfortunately it’s clunky. In the search box add “AND extension:filetype” like:
And it will return only Blender results.
Very cool new tool and I hope them well. There are a few things I would really like to see to make this even better.
- metadata in the search results. File type, vertex count, etc.
- textures if available
- animations if available
- license model released under
- less clunky UI for specifying model format.
Hopefully we will see improvements over time. All told though, already a very useful tool for people looking for 3D models.
- I support the work of Anita Sarkeesian. As I would of anybody speaking intelligently about anything, even if I were in disagreement.
- I agree with the message in the Tropes Vs Women series. I find it to be extremely interesting, agreeable and instrumental to raise awareness of an in many cases not well understood phenomenon.
- If I have any opinion on her work, is that I suspect in most cases hurtful stereotypes don't come from malice or laziness (neither of which she mentions as possible causes by the way), but from the fact that games are mostly made by people like me, male, born in the eighties, accustomed to a given culture.
- And even if we can logically see the issues we still have in gender depictions, we often lack the emotional connection and ability to notice their prevalence. We need all the critiques we can get.
- I encourage everybody to take a stance, especially mainstream gaming websites and gaming companies (really, how can you resist being included here), but even smaller blog such as this one.
- It's time to marginalize harassment and ban such idiots from the gaming community. To tell them that it's not socially acceptable, that most people don't share their views.
- Right now for most of the video attacks (I've found no intelligent rebuttal yet) to Tropes Vs Women are "liked" on youtube. Reasonable people don't speak up, and that's even understandable, nobody should argue with idiots, they are usually better left ignored. But this got out of hands.
- I'm not really up for a debate. I understand that there can be an debate on the merit of her ideas, there can be debate about her methods even, and I'd love to read anything intelligent about it.
- We are way past a discussion on whether she is right or wrong. I personally think she is substantially right, but even if she was wrong I think we should all still fight for her to be able to do her job without such vile attacks. When these things happen, in such an extent, I think it's time for the industry to be vocal, for people to stop and just say no. If you think Anita's work (and her as a person) doesn't deserve at least that respect, I'd invite you to just stop following me, seriously.
- Anita's works: https://www.youtube.com/user/feministfrequency
- You might want to sign this: https://medium.com/@andreaszecher/open-letter-to-the-gaming-community-df4511032e8a
Previously I mentioned RNTHemeManager a library allowing you to theme your interface with variables stored within a plist file, and Chameleon, a color helper library that can automatically choose the nearest flat color for your interface.
Here’s an open source library that allows you to very quickly apply a them to your UIKit interface components by simply supplying your chosen colors, and font.
As the readme states:
MAThemeKit provides iOS developers the ability to create a coherent color theme throughout their entire application using a single line of code, removing the need to mess with the dozens of UIAppearance proxies for each UI component.
And the code used to create this theme:
You can find MATHemeKit on Github here.
A very nice library for easily applying a theme to your interface.
©2014 iOS App Dev Libraries, Controls, Tutorials, Examples and Tools. All Rights Reserved.
I’ve mentioned the SDWebImage library providing a UIImageView category with support for asynchronous downloading and caching.
Here’s a very nice image view component called KIChameleonView from kainnui that automatically detects the type of media to display, and even allows you to load the media from a remote URL using SDWebImage.
KIChameleonView works with standard static images, animated gif files, and videos. You simply need to provide the location and KIChameleonView will do the rest.
This is an image showing Nyan Cat running in a KIChameleonView:
Displayed using the code:
You can find KIChameleonView on Github here.
A nice way to easily display and download different types of media.
- Open Source iOS Grid Type Component With Built In PDF, Image And Video Showcasing
- Open Source iOS Component Providing Easy Rounded Image Downloading And Display
- Component Allowing You To Easily Display Images With A Parallax Effect In A UICollectionView
- iOS Photo/Video Gallery Component With Gesture Support, Downloading, Sharing, Thumbnails & More
- Open Source UICollectionView Based Component For Displaying Images And Stories
©2014 iOS App Dev Libraries, Controls, Tutorials, Examples and Tools. All Rights Reserved.
In this article, aspiring game designer Gabby Taylor proposes some solutions to the issue of virtual good theft in MMOs.
Disclaimer: The following post does not represent the views of the IGDA, IGDA Game Design SIG, or anyone else except Gabby. Just wanted to get that out of the way.
Some of you might remember my other post about microtransactions from way back in February. It was a bit heated, but it spells out how I feel about them pretty well: I don’t like them. I think they hurt the industry despite bringing in large amounts of money. Most people do not agree with me on this and have brought up pretty valid points. I love it when that happens. Intellectual debate is great; that’s how minds are opened and horizons are expanded. Then something happens to people like Mike Weatherley and all I can do is less-than-professionally laugh.
For those of you who are unaware, good sir Mike Weatherley has the esteemed position of being chief adviser on intellectual property to David Cameron (yes, Prime Minister of the UK David Cameron). In his off-time, he is also a gamer. Recently, he has experienced something nearly all gamers experience: someone stole his sword in World of Warcraft, one he bought with real-world money. His reaction to it? The political version of whining to his parents. I’m not going to get into how this may or may not be the morally right way to leverage his position, but instead focus on the experience itself.
Usually, microtransactions are used as a way to enhance a game experience. For example, extra lives or power-ups can be purchased in order for someone to have more fun playing while they’re waiting for the bus, rather than miserably grinding away until these advantages are natively available. This works wonders for bringing in money for the publishers and developers, so much so that it’s quite often taken a bit further than it needs to be, or even should be. The downside to this is that theft is fairly universal, and few things sour an experience than spending $5USD on a cuirass, for example, and having it be swiped from your account (along with other items that may or may not have been purchased with real world money). This is compounded when it happens in a subscription-based game, as it’s easy to view the situation as having been doubly robbed. At this point, it’s perfectly reasonable to feel upset and some people even ‘rage quit’ over the larger instances. At this point, the game experience is completely ruined. Not because of gameplay, graphics, technical problems, or really anything to do with the game itself, but rather the greed and selfishness of a group of players and the open door to them that is microtransactions.
I believe that game experiences should be enjoyable for everyone and I bet there are many who would agree with me. In order for this to happen, though, we need to fix how things are done. Mike Weatherley is of the opinion that thefts of digital goods ought to be punished in the same way that thefts of real-world good are. I believe that a proactive solution would do gamers and developers alike a bit more good than knowing someone, somewhere received a fine of some sorts (assuming, of course, they were tracked down, which would require a lot more resources than it’s really worth). My initial idea is to just nix the microtransactions altogether, but I understand publishers and developers are businesses and still need/want to make more money than the game itself will get them. With that in mind, let’s come up with a few ideas:
- The ability to re-obtain stolen items without spending more money. In order to prevent abuse of this system, the game can keep server-side records of what the account bought, for how much, and by what means did it leave the account’s possession. I suppose this is still open to abuse, since most stolen items are stolen by someone cracking the account’s password and trading the item to the cracker’s actual account (or an alternative account).
- All microtransaction-obtained items are bound to character or account. This would prevent anyone from cracking in and trading it off, but it does not help if someone wants to buy a gift for someone in game (though maybe a redeem code could be purchased for a gift).
- Microtransactions can only apply to buying in-game currency, and currency is account-bound (but not character/soul bound). This way, there are no items at stake, and the player still has the flexibility to outfit any of their characters as they see fit. It’s possible this might also bring in extra money, since not everyone would necessarily be interested in an item, but everyone wants money. The downside is this opens up a whole world of ‘pay-to-win’ problems.
Gabby Taylor is an aspiring game designer and head of GreyBox Studio. When not making design documents, she contemplates going outside, and sometimes even takes a few steps when feeling particularly frisky.
Adam W. Bargteil, Elaine Cohen
In this paper, we investigate the use of quadratic finite elements for graphical animation of deformable bodies. We consider both integrating quadratic elements with conventional linear elements to achieve a computationally efficient adaptive-degree simulation framework as well as wholly quadratic elements for the simulation of non-linear rest shapes. In both cases, we adopt the Bézier basis functions and employ a co-rotational linear strain formulation. As with linear elements, the co-rotational formulation allows us to precompute per-element stiffness matrices, resulting in substantial computational savings. We present several examples that demonstrate the advantages of quadratic elements in general and our adaptive-degree system in particular. Furthermore, we demonstrate, for the first time in computer graphics, animations of volumetric deformable bodies with non-linear rest shapes.
Welcome back to our feature of the most popular new and updated iOS developer resources mentioned on the site from the last two weeks.
The top resource this week is an extensive design kit featuring hundreds of components for app prototyping in a flat style suitable for iOS 8.
Here are the resources:
Thanks for reading!
- Top iOS Development Resources For Two Weeks Ended July 14th, 2013
- The Best Resources In iOS Development (For 2 Weeks Aug.14-27)
- Top iOS Development Resources For Week Ended September 29th, 2013
- Top iOS Development Resources For Two Weeks Ended January 12th, 2014
- iPad Development Tutorials And Resources List
Original article: Top iOS Development Resources For Two Weeks Ended September 14th, 2014
©2014 iOS App Dev Libraries, Controls, Tutorials, Examples and Tools. All Rights Reserved.
I’ve updated the graphics books listing hosted at our site. This is excruciatingly dull HTML editing; I hope it helps you out. Many of the additions are from CRC, since I was able to view their books at SIGGRAPH – the number of book vendors seemed way down this year, maybe two total? If you find (or wrote!) a relevant book that’s not listed, let me know.
The secret takeaway on our webpage: check the additional links I give at the end of most listings. Many books have some sort of free preview and a related website with code, lecture notes, etc. For example, Multithreading for Visual Effects has a website that includes the SIGGRAPH 2013 course notes that the book is based on.
I like that the new book Introduction to Computer Graphics: A Practical Learning Approach has an associated website named http://www.envymycarbook.com/, chosen because the book’s overarching project is developing a race driving game. Calling their book Envy My Car would have been wonderfully foolish. I guess this is a reason why we still have publishers.
There are also other interesting resources you can find tucked away in these websites, such as this list of on-line articles related to Game Engine Architecture. A bunch of the URLs listed there are easily-discovered wikipedia links, but quite a few are solid blog entries or other web pages you might not find in a quick search. This sort of editorial grooming of web resources is valuable. The 2nd edition’s list of URLs is not up yet, and I can understand why. Please don’t remind me how dated a fair bit of our own main page has become – managing links is a giant time suck, so I appreciate it whenever anyone else makes this sort of effort.
Dig deep enough on some of these book websites and you might find oddities such as this list of ten reasons to write a computer graphics textbook. I guess we’re in the bastard category?
I did do some back-filling, adding older books that could (someday) be relevant to interactive rendering, e.g., Production Volume Rendering. I didn’t add all possible vaguely-related books. From the cover and title, The Magic of Computer Graphics looks like a coffee-table book, pretty pictures and minimal content. Looking inside, it turns out to be a heavy-duty text on materials and illumination theory. For example, by page 11 you’re exposed to an integral for the BRDF, and that’s the ninth equation introduced by then. I left it out mostly because it’s an odd duck. The book Visual Perception from a Computer Graphics Perspective looks like a good volume if you’re really really into perception, but not all that related to interactive 3D graphics. I was also tempted by Digital Geometry in Image Processing, mostly because of the cover – I’m in solidarity with anyone who voxelizes teapots. This book sounds like computer graphics, but instead turns out to give a glimpse at how huge the world is. There’s a whole area of study of the theory of measurement for pixel and voxel centered coordinates? Wow. But it doesn’t look all that relevant. Feel free to read it and prove me wrong, that would be great.
No book reviews for now, as I haven’t seriously examined the newer books yet. I’ve asked for a (very) few review copies, and hope to cover these in the upcoming months. There is one book I know I won’t review (and won’t list), this alternate-universe version of Real-Time Rendering, accidentally issued by CRC Press without the realization that they already had a book with this title. An embarrassment for them, so I feel a little rude to mention it, but honestly… It was on display at the CRC booth, but not next to their “other” Real-Time Rendering, which would have made a good photo.
Luckily CRC can’t sue itself for passing off and unfair competition. It’s an interesting area of the law – titles are not copyright; trademark applies to only a series of books (e.g. “… for Dummies”). Searching on Introduction to Computer Graphics will turn up about four books, including the new one from CRC. This is fair, since the title is pretty generic and none of the books has established itself as the well-known one. I look forward to someone testing the waters in the future and publishing Physically Based Rendering: From Hog to Lard.
I’ve been slow in getting this list together, so without further ado:
- Continuous Collision Detection Between Points and Signed Distance Fields
- Massively Parallel Batch Neural Gas for Bounding Volume Hierarchy Construction
- Massively-Parallel Proximity Queries for Point Clouds
- Efficient Transfer of Contact-Point Local Deformations in Data-Driven Simulations Using Hermitian Moments
- A unified topological-physical model for adaptive refinement
- A p-Multigrid Algorithm using Cubic Finite Elements for Efficient Deformation Simulation
- Mechanical modelling of three-dimensional plant tissue indented by a probe
- Controlling the Shape and Motion of Plumes in Explosion Simulations
- SutureHap: a Suture Simulator with Haptic Feedback
- Information Fusion for Real-time Motion Estimation in Image-guided Breast Biopsy Navigation
- Virtual Fitting Pipeline: Body Dimension Recognition, Cloth Modelling, and On-Body Simulation
- Coupling Hair with Smoothed Particle Hydrodynamics Fluids
- A Parallel Architecture for IISPH Fluids
- An Improved Jacobi Solver for Particle Simulation
- Parallel Particles: A Parallel Position Based Approach for Fast and Stable Simulation of Granular Materials
- Laplacian Cut-Maps for Real-Time Deformables
- Variable stiffness haptic interface controlled through Inverse simulation
If anyone has links to the associated papers for the (many) missing ones, please let me know!
Hongyi Xu, Jernej Barbic
We present an algorithm for fast continuous collision detection between points and signed distance fields. Such robust queries are often needed in computer animation, haptics and virtual reality applications, but have so far only been investigated for polygon (triangular) geometry representations. We demonstrate how to use an octree subdivision of the distance field for fast traversal of distance field cells. We also give a method to combine octree subdivision with points organized into a tree hierarchy, for efficient culling of continuous collision detection tests. We apply our method to multibody rigid simulations, and demonstrate that our method accelerates continuous collision detection between points and distance fields by an order of magnitude.