Showing posts with label video game. Show all posts
Showing posts with label video game. Show all posts

Sunday, May 12, 2019

Teach Kids to Code with Code Battles

Credit: LucĂ©lia Ribeiro Flikr 

Background

As a tech nerd, finding good cell phone games can be challenging. But every once in awhile I find some real gems. One of my favorites is called lightbot. It uses a fun game to teach the general concepts of programming or coding. In general I'm a huge fan of video games. Some gaming behavior can actually "rot" your brain while other behavior has benefits. (I was going to post articles and references, but there's a ton of stuff out there. Do your own research).

I try to find games for myself and my children that provide both entertainment and growth. I think lightbot fits that goal. On another day I was hunting for "building" games where you build some type of machine and then use it to compete against other players. There are several good ones out there, and we play more than one. One we play intermittently is called RoboCraft. During my search I found a programming game (maybe it was Robocode?) where you build the behavior of a robot using code and compete against other players to see whose code is best.

I instantly thought this would be a great game style to teach kids how to program. But the code was too advanced for children. When I see a good product that needs to be adapted to another audience is almost always when I have my ideas.

The Idea

Create a competitive game that teaches the basic programming to children by using modular, graphical code blocks. My basic vision is two robots that compete using behavior that is programmed by the kids. The code blocks each contain specific behaviors like movement, sensing and actions. Some of the blocks would be routines or loops.

For the case of robots, you could have the robots perform some type of task, like moving a ball into a designated goal. The first robot to complete the task wins. So your movement actions could consist of turning and moving forwards. The sensing actions could be detecting a ball in an adjacent square, detecting if the robot is holding the ball, and detecting when the robot is in the goal. Actions would consist of picking up and dropping the ball. One example of a routine would say, "Am I holding a ball? If yes then find the goal, if no then find the ball. Then you would build routines for finding the ball and finding the goal. The person who builds the best routines would accomplish the goal the quickest.

Instead of robots you could have a tank battle. The movements, sensing and actions could be modified for that scenario.

The difficulty could also be modified for different age groups. For younger audiences the code blocks could be high-level and entered sequentially, exactly like lightbot. For intermediate audiences you could make the code interface more like Scratch where the blocks are more granular, and kids have to pick specific settings. And in the most advance version you can expose the actual code like JavaScript. Another way to add complexity is to add additional moving, sensing and action options. Movement could be up down left right and player movements are restricted to a grid. In an advanced model you can include rotate right, rotate left, move sideways and remove the grid for continuous movement. For simple tanks you could control movement and direction of the turret separately from movement and direction of the tracks. The scenarios and variety are limited by creativity and resources.

Progress

2019-05-12

Has it Been Done Before?

I originally had this idea years ago. I did not see anything back then. But there is tons of cool stuff happening rapidly in this space. I haven't found anything that is exactly like lightbot and suitable for entry level audiences or young children. There are some great options now for older children that are comfortable using Scratch.

Tynker has some great options on their "Hour of Code" page. I played some of the games, and they are great for computer-savvy young children up through old children. It uses a Scratch interface and is a perfect example of different action blocks. However, I didn't see any competitive games, and the price is a bit much. If they continue expanding their offerings I could potentially buy into their program. If you are a technical parent, then you can just go to Scratch since I think Tynker is based on Scratch.

Side Note / Pro Tip: Once you find something you like, you can Google for similar things. The two key phrases I use to accomplish this are, "alternative" and, "similar to". As an example, when I googled, "Tynker alternatives" I found "Grasshopper" which looks good for older kids, "Coding Planets" that looks similar to lightbot, "robo garden" which is free but kludgy, and finally "ScratchJr" which is a new-to-me app from the Scratch team. I like the code blocks in ScratchJr, but the objectives are not intuitive and will require guidance from a parent to get them going.

Another item I found by Class 42 is Robot Rattle. There is some voice instruction which I think is helpful for kids or when things are not intuitive. But good game design doesn't require it. Just look at Super Mario Bros Game Design for a perfect example of good design.

There is a super-cool RPG game done by "CodeCombat." It is marketed towards deucators, so I'm not sure on pricing. The demo I tried dumps you straight into Python or Javascript without much instruction. I'm guessing the educators package provides the necessary instruction, but the game could have easily been designed to include the instruction. While it's a fun option, it's not exactly what I was envisioning. I still suggest it for older kids or educators.

So I haven't found anything that fits my specs yet. There are several other potentially good options out there, but most of the ones I found are hidden behind registration walls. My purpose here is not to review everything out there, just to share what I think is needed and see if anything already exists. So far the answer is NO. Close, but not quite.

Wednesday, October 29, 2014

Sopwith for Android

The Idea

I was going to download a soundboard app to use with my Halloween costume when I saw an ad for a pixelated toy airplane game. The "8-Bit" genre is a fad right now, one that I like. The game looked like fun (can you tell that from a single icon?) and it reminded me of an old DOS game that I used to play called Sopwith. You fly a Sopwith Camel biplane, drop bombs on the enemy base and try to shoot down enemy airplanes and tanks. I loved that game (I had to be younger than 8 years of age).

So my nostalgic adult self wished to play again, but on my phone. Of course nobody else is going to make an Android clone, so I will have to take it upon myself. I've been wanting another project to improve my programming skills, and this is something simple enough I think I could deliver an app in under a year (at the rate I usually complete my projects).

Progress

It turns out I was wrong, someone already made a clone called Sopwith Barons. Despite being an upgrade, the graphics look very "paintshop"-ish. It is done with basic 3D geometries on a 2D game stage. Personally I would have gone for 8-Bit genre keeping it a 2D sprite game to give it more tie back to the original with the modern feel that I've grown to enjoy.

Wednesday, July 30, 2014

3D Texture Generator

The Idea

When I took a computer graphics course as part of my master's degree I learned about using textures and skins to make objects more life-like. In one lecture we touched briefly on the idea of 3D textures which can be applied to voxels in a volume or in slices to surfaces. From there I realized there could be value in creating realistic 3D textures to be used in a variety of contexts.

The world is naturally perceived in three dimension. Instead of trying to draw a realistic looking 2D picture you could instead create a realistic 3D volume and slice out whatever surface you need to display. The main advantage of this method is the ability to parametrically generate 3D volumes using actual material properties. The visual properties are essential - color, reflectivity, scattering - but even mechanical, electrical and chemical properties could be used to generate aggregate materials. For example, you could create a realistic 3D concrete texture using the properties of cement, gravel, sand, etc. A program could accept inputs for material types and mix ratios, calculate the resulting structure, and apply the resulting visuals to the structure.

By compiling a large number of such calculators you could create a software package (web-based?) that can create 3D textures for many different materials. It could be a handy tools in the belt of computer graphics programmers. It might save them alot of work, and give them a way to easily add variety to their projects. Textures could be randomly generated each time and cut down on the amount of repetition in games, movies, etc.

Progress

I'm not actively pursuing this idea right now. I'm not a full-fledged programmer, and one of my pet-peeves is bad software written by someone totally disconnected from the end-user. If my career ever moves towards the gaming industry then I will come back to revisit this.