Wednesday, October 31, 2012

Tetris Shooter Prototype - Run and Gun Example Game

Idea -> Focus -> Prototype

I have decided to create Tetris Shooting Game. I have started out with brainstorming, focusing on it, and now prototyping it.

This time, I will try to create the game using Stencyl, which is a software for creating games for both Windows and Mac OS X. While I was playing around with Stencyl, I have found a game that looks very appropriate and great to be modified and extended to create my Tetris Shooting Game, so I have decided to use this game as my prototype of my future game, Tetris Shooting game. If you click the picture below, you can start playing my prototype game, which is called Run and Gun Game; simple and basic shooting game.

Revision and changes will be made soon...

Improve Your Progamming Efficiency by Routine

For those new programmers, including me, it is very fascinating and exciting if we can create new things and make them work. After solving some struggle or tricky problems regarding to the codes and finally get what has been expected, we attempted to be satisfied enough that there is no need to fix or change since it just works fine.

The book called 'Code Complete' suggests us that if we already know how to program, then the next thing we need to know would be how to program efficiently. In order to become efficient, the book specifically suggests us to make use of routine.

What is Routine?

As the book 'Code Complete' states,

A routine is an individual method or procedure invocable for a single purpose.
The book also mentions that we can evaluate routines we create as 'high-quality' or 'low-quality', and programmers can create efficient, faster programs in an efficient way by focusing on this notion of routine.

This is because the main purpose or the focus of making use of routine is to reduce unnecessary parts from your program and so create very readable, less complex, and faster program.

Hints to Create Useful Routine

Here are some points I personally think are especially important from the book:

  1. Name properly; Easily understandable, yet tells you what a routine does.
  2. One purpose per routine; Keep simple. Just like each method in Java is supposed to have only one functionality
  3. Try to shorten each routine; The book suggests less than 200 lines is appropriate.

Having mentioned some of the ways to create and make use of useful and efficient routine, let us not just satisfy ourselves by knowing how to create things; let us satisfy ourselves by knowing how to create efficient programs efficiently.

Thursday, October 18, 2012

Markup Language 'HTML' and the Language for decoration 'CSS'

When people create websites, there are what people call 'Markup Language' that allow people to mark up and create websites. Most of the time, the websites people see on the internet are consisted mainly of "HyperText Markup Language", and "Cascading Style Sheets".

HyperText Markup Language (HTML)

As the book called 'Engineering Long-Lasting Software' says,
If the Web browser is the universal client, HTML, the HyperText Markup Language, is the universal language. A markup language combines text with markup (annotations about the text) in a way that makes it easy to syntactically distinguish the two.

HTML is the most famous Markup language nowadays and is fairly easy to get used to it. I personally found it interesting while I was learning it since as I type, the screen displays it, and it is just amazing experience to see how technology allows us to do that. HTML 5 is the newest type of HTML and it is used mostly for having interactive functionality for websites and more for games.

Cascading Style Sheets (CSS)

The book called 'Engineering Long-Lasting Software' also mentions about CSS:

CSS allows people to 'decorate' the contents of HTML so that people will enjoy seeing and reading your contents on the web. As the next screencast shows, the CSS (Cascading Style Sheets) standard allows us to associate visual “styling” instructions with HTML elements by using the elements’ classes and IDs.

I personally found it interesting to learn both HTML and CSS at codecademy as HTML is fairly easy language to learn compared to others, and you can enjoy how things you type change the decoration of your web page by playing around with CSS.

Thus, I strongly recommend that those people who are interested in webs and other things start learning at codecademy. It is very fascinating and definitely worth trying!

Sunday, October 14, 2012

Tetris Shooter Focus

Tetris Shooter is a tetris-based shooting game. The player is experiencing attacks from enemies toward them, who are trying to hit and eventually eat the player. The player will have to manage themselves to shoot the appropriate tetris bullets from their guns to defeat the enemies by fiting the shape of the enemies and the bullets. The environment of this game will be 3D, so the appearance of the enemies should be realistic or frightful enough that helps the player concentrate on the game in order to survive. This game is unique in a way that the player does not just try to fit the Tetris blocks, but actually fight against the enemies within a limited time, which gives the player a pressure.

Monday, October 8, 2012

The Reformation of Software Engineering Process: Agile Lifecycle

According to the book called 'Engineering Long-Lasting Software: An Agile Approach Using SaaS and Cloud Computing', there are basically three processes for software engineering (the book explains those using the word 'lifecycle'):

  • Waterfall lifecycle
  • Spiral lifecycle
  • Agile lifecycle

As a student who is willing to be a professional in this field, I thought it is very important that I aware of the fact that there are different kinds of software engineering processes and consciously make use of those with an appropriate manner. So, I would like to write and briefly summarize here what I learned about the each approach of software engineering from the book as my notes.

1. Waterfall lifecycle

The main characteristic of the waterfall lifecycle is that people start out with the process of very focused designing before they start coding so that they try to prevent any difference or contradiction from occurrence.

The drawback of this lifecycle, however, is that because it focuses on designing and attempting to prevent any errors and bugs, it typically takes 6 and 18 months to eventually release the product.

The Waterfall model can work well with well-defined tasks like NASA space flights, but it runs into trouble when customers are unclear on what they want. - Patterson, David; Fox, Armando (2012-07-11)

2. Spiral lifecycle

Spiral lifecycle, which is somewhat similar to waterfall lifecycle, is basically consisted of four phases:

  1. Determine objectives and constraints of this iteration
  2. Evaluate alternatives and identify and resolve risks
  3. Develop and verify the prototype for this iteration
  4. Plan the next iteration

The spiral lifecycle goes those four phases over and over to refine the product until it reaches a 'satisfied' level.

The Spiral lifecycle combines Waterfall with prototyping. It starts at the center, with each iteration around the spiral going through the four phases and resulting in a revised prototype until the product is ready for release. - Patterson, David; Fox, Armando (2012-07-11)

3. Agile lifecycle

Finally, agile lifecycle - The main difference of this and other two approaches of development is that this Agile lifecycle focuses on continual changing by interacting with its customers to refine and finalize the product while also checking if the product is becoming what their customer has been waiting for.

Regarding software lifetimes, the Agile software lifecycle is so quick that new versions are available every two weeks, so they are not even special events as in the Waterfall or Spiral models. - Patterson, David; Fox, Armando (2012-07-11)
Agile lifecycle was introduced in 2001, and it was kind of a reformation of software engineering process since people could realize in an instance that this way of developing software is the most efficient and 'accurate' way to create something that people are willing to obtain.

It was interesting to see how each process of software development differs to the others, and how Agile lifecycle penetrates to most of the software development projects nowadays.

Wednesday, October 3, 2012

VirtualBox Ubuntu Internet Connection and Shared Clipboard Conflict (OSX Mountain Lion)

Clipboard issue with OS X and VirtualBox

While I was working on the Ruby assignment in my online SE class, I was using Terminal running in Ubuntu VirtualBox. I firstly tried to copy the codes from the terminal to the external TexitEditor which was outside of the VirtualBox, but I could not.

Some specs about my computer and VM..

Laptop ---

Model: MacBook Air
System version:OS X 10.8.2
Processor Name: Intel Core i7
Processor Speed: 1.8 GHz
Number of Processors: 1
Total Number of Cores: 2
L2 Cache (per Core): 256 KB
L3 Cache: 4 MB
Memory:4 GB

---

Virtual Machine ---

Name: VirtualBox
Version:4.1.20

---

So, my professor and I tried to solve this issue and he found out that there is a way to share Clipboard with your OS and VirtualBox (Basically: Machine-> Settings -> Advanced(in General category) -> Shared Clipboard -> 'Bidirectional' as an option), and I rebooted the machine.

Became Worse Somehow...

Eventually in my case, the clipboard sharing was still unable, and moreover, it seemed like the Internet connection in VirtualBox was also down somehow. (I found out that later when I tried to work on my assignments on firefox installed in VirtualBox.), Sending ping request on Terminal seemed not working at all:
ping: unknown host www.google.com

Solution

Eventually by setting the Shared Clipboard option as 'disabled', the Internet Connection came back.

Shared clipboard system was kind of an important aspect for me since it sometimes is useful and at the same time crucial to be able to copy some of the codes from Terminal in Virtual machine and paste them to somewhere outside of the virtual machine.


Consideration..?

I think this issue raised some of the crucial problems here for at least those VM users running on Mac OS X (mine is Mountain Lion) that shared clipboard system is not available currently, and if you try to make it available for you, sometimes it disables your Internet connection in VM.. :(

Monday, October 1, 2012

What is "Designing"?

What is the process of designing? How does the process of designing defer in each field, such as UI design and database design? As a student who does not know much about designing, these questions seem to me something that is far away from what I can comprehend and attain.

However, as a student who is willing to work as a professional in technical fields, I personally think it is crucial for me to know, or at least be aware of the fact that the process of designing is important in even SE.

The book called Code Complete(2nd Edition) says something about designing:

Regardless of how it's done, small projects benefit from careful design just as larger projects do, and recognizing design as an explicit activity maximizes the benefit you will receive from it.
Well, it already sounds like designing is critical in any technical field, even in the process of Software Engineering.

Throughout the chapter Design in Construction, the book explains a lot about the process of designing, such as the common characteristics of a high-quality design, the steps of designing in SE, and more. The sentences that caught my attention from this book were below:

Because design is nondeterministic, design techniques tend to be heuristics—"rules of thumb" or "things to try that sometimes work"—rather than repeatable processes that are guaranteed to produce predictable results. Design involves trial and error. A design tool or technique that worked well on one job or on one aspect of a job might not work as well on the next project. No tool is right for everything.
It means that the process of designing is so subjective that you will need to find out the pattern to be high-qualified design, or what makes the design really better. It made an impression on me; the book taught me that the shortcut for improving design skills is actually to design, as it is for programming and many other things.

New Game idea #3 - Tetris Shooter

The third idea about my future game will be called Tetris Shooter.

Name of the game

Tetris Shooter

Technology

3D (or 2D)

Player point of view

Tetris shooter

Story

There is a kingdom called Tetris Kingdom where everything is made of Tetris blocks, and you are one of the soldiers of the kingdom. Recently, someone created the monsters by the Tetris blocks; those monsters can move and eat Tetris blocks to grow. As the monsters happen to know that there is a Tetris kingdom, which would be a full storage of food for them, they started attacking the kingdom.

Your aim is of course protecting the kingdom from the invasion of those Tetris block monsters.

Gameplay

As you are the soldier, you can move by yourself, the enemies will attack toward you anyway, and you only have a gun.

The kingdom has made this gun that allows soldiers to shoot blocks of Tetris as bullets, which has a special power to silence the monsters by adequately shooting those monsters with appropriate blocks that match and fit the shape of the monster's body. Unless you shoot the monsters with the appropriate blocks of Tetris, you will need to shoot some additional amount of Tetris.

The enemy will try to attack and eat you. If you are bitten several times, you will die. In order to survive and protect the kingdom, you will need to shoot blocks of Tetris wisely to reduce the loss of the bullets since it may become an serious issue later.

Again, if there is any idea, concern, or advice, I would love to receive some comments with this idea..

New Game idea #2 - The Tag Game

The second idea about my future game will be called The Tag Game.

Name of the game

The Tag Game

Technology

3D (or 2D)

Player point of view

Tagger OR Runaway

Story

There is a kingdom called golden kingdom in which there are tons of sold golds. There are basically two kinds of people; police in kingdom(=Tagger in this game), and thefts from a different district.(=Runner in this game).

  • Tagger: You are kind of a police; your job is to find out runners who have stolen golds from the kingdom, and catch all of them.

  • Runner: You are kind of a theft; your job is to run away from police in the kingdom so that you can obtain golds that you have stolen from the kingdom.

Gameplay

The game starts from where thefts just finished stealing the golds, so basically the runaways(thefts) just start to escape from the kingdom. The police is just notified that golds are stolen from runaways. Basically the scene will start from taggers find runaways. However, I am thinking it will be great if runaways can optionally sneak to somewhere in the kingdom so that they can find the way to get out in addition to just running away straightforward from taggers as if we do in the real world.

Both taggers and runaways can obtain some special ability by getting items in the field; they are randomly set, and both taggers and runaways can take it. Those items strengthen users by giving an special ability (e.g. taggers can get a gun that shoots webs to catch runaways, or runaways can obtain the item to fasten themselves, etc..)

Again, if there is any idea, concern, or advice, I would love to receive some comments with this idea..