PROYECT 4 – 2D/3D/4D

Preface

I started this super-motivated project with many ambitious ideas, which have gradually been reduced to more realistic results. I left Unity aside even though I wanted to go deeper in the future. I have focused on Proccessing because it is more related to external interactivity, from different sources. And it is also more complex when it comes to programming. This is another reason why I chose Proccessing to loosen up more with the programming.

ABOUT

My game is about an online node that wants to get all the data on the planet to take control of humanity. And it has to get as much data as possible from the different platforms that are known to everyone.

The idea of this game is that it would be combined with video mapping and people could interact with the game directly by moving their body.

So far, so good… But I found it very difficult to start working… the simple things like the movement of a sphere in proccessing or the displacement of an object with the keyboard, has made me take longer than expected

FIRST STEPS

.

Given my limited knowledge of programming it’s taking me a long time to get what I want from the game. But on the other hand I’m starting to understand the basic concepts such as what One Class is, a builder, a function and how to use them.

The most complicated thing for me is to make good use of the arrays. I feel that I don’t get enough out of them.

Luckily I already have my main character moving in the X-axis and releasing independent projects from his position.

I also have different Spwane objects appearing from above, but I think I’ll have to change the way I’m creating them because it’s all the time the same object appearing in different places. However, the projectiles are totally independent objects. And why haven’t I done the same with the enemies? Because at the time of creating the enemies I didn’t know any other way to make them.

SOMETHING TO PLAY,

INTERACTIVITY

After that I had something to play with, but I didn’t really have anything, just a character moving around shooting projectiles and other objects spawning from top but without interaction!


So I was thinking for a long time to check ALL MY PROJECTILES AND MY SPAWN OBJECTS in real time and know if any of them comes in contact with another one of them.

The first thing I did was study more about objects, classes and functions. Then I transformed my projectiles and my enemies into different classes with their builders and functions.

GETTING HARDER

CODE SMASHING

This is where I start generating new objects for every time I press a key that causes a new object to be created and added to an ArrayList.
ArrayList enemies = new ArrayList();
And of course why I don’t use a normal Array instead of an ArrayList, because I tried it and it’s more complicated. Difficult for my current skills. However I can use ArrayList as if they were normal arrays, and also with extra functions like add(), which adds an object to the array and increases its total length! Likewise if I use remove(), I remove an element from the ArrayList and modify its total length as well! This is great! With only one line of code!

ArrayList<enemies> enems = new ArrayList<enemies>();
// contador para spawnear nuevos enemigos
  if (frameCount % 120 == 0 || spawn > 98 ){
   
    ene1 = new enemies();
    enems.add(ene1);
    
  }
  
  player.display(); // player controller

After this I discovered that by using a for I could show all my projectiles at the same time. And I did the same with the enemies

for (int i = 0; i< projs.size(); i++){
    
    projs.get(i).mov();
    projs.get(i).display();
    //println("  Projectile nº: " + i + " Position : " + projs.get(i).pos);
    
  }

Now I only needed the “simple” ones, to delete the objects from the array when they are intercepted or disappear from the screen. This process took me several long days.

I was going to post the code, but I don’t think anyone’s going to take that long to figure it out.

Once I managed to finish making it work, I implemented a point system for those functions to have a “solid” Prototype with which to continue adding material to it.

3D TIME

I was a little scared because I didn’t know what to use as 3D since I was working on a 2D project… But I came up with a great idea! To create a StartScreen for the prototype that was in 3D! So I was researching and watching several videos about processing and 3D, I have to say that it is VERY complicated and it takes a relatively good level of Arithmetic and Trigonometry. But there’s nothing you can’t learn by putting in the time and effort! Luckily I discovered that in the College Library there is a book called “Processing, A programming HandBook for Visual Designers and Artists” and there I learned a lot about sin(), cos(), pow()… And more that I will learn!

I thought a couple of objects in a 3D environment with a little text wouldn’t cost me much… 250 LINES OF CODE!

The first I got something that at first glance does not seem much but … only the cube and its movement with the mouse is 98% of the function StartScreen()!!!

The cube was difficult because I didn’t use any primitives! I created 8 points on the x,y,z axis and then linked them with lines. A lot of work but I can use each part of my cube individually, or use it all at once.

SOUND

With the sound I had clear what I needed from the beginning, a background as a base. And some more for the movement, the shooting and the destruction. What I was looking for in this section was to go deeper into the capabilities of Processing.

I wanted a sound with rhythm, to bring out its sound spectrum, with 4 bands is more than enough. and to use the amplitude of each band as input for the temporal size of my enemies in real time.

Everything magnificent to work! But I see that it doesn’t work on the . mp3 and .wav files… I investigate and discover that Processing by default only takes AIFF files! So with Audition and Media Encoder I took my files and exported them again with the format I wanted and crossed out!

After that I only had to load the files following the Processing.Sound documentation and I haven’t had many problems to implement them, since my special effects are directly related to events I already have programmed in the game. I only had to go to each part and play each sound with a simple sound.play().

THE FUNNY PART – FREQUENCY ANALYSER

Processing has in its sound library a function called FFT that analyzes the waveform of an audio.

I’ve only taken four to load minus the program. This function does if you put it inside Draw() it analyzes in real time the audio track and updates at the same time all the values in an Array in this case Array[4] where 4 is the number of bands we have chosen previously. Then we have to normalize those numbers because they give us a few useful raw results. And then we will assign them to the size of our enemies in real time!

I leave an exaggerated example to be understood, this will not exist in the final Prototype.

Dots resizing by the low amplitude of a song

Finals Conclusion

This project has challenged me and I have learned a lot, but I have not focused as much on my audience. I have decided to focus more on my needs as a designer, programmer, artist or whatever. It doesn’t help that I know how to solve a problem with a specific target. If I don’t have enough skills to develop the problem. I think we need to develop more our skills as individuals and create what we like. And not create for others to like. Following this methodology only reaches people in a cold way.

When a person creates something they should create it in which they would like to transmit to the world based on their point of view and their philosophy. The targets that we seem to be talking about are enemies rather than people will appear on their own if you create things with desire and good energy. No pressure, no stress. Because then all that is reflected in your work.

For my part, I know that the Prototype I have designed is far from being something consistent, leaving aside the visual design that I have not spent much time on, I have developed my programming skills a lot. And that make me very happy.

0003 Workshop – Simple animation task

This week’s task has been complicated. Encouraging curved, natural-looking moves is very difficult. I don’t really understand the… basic “laws” of animation. What would be the lines of action, the shapes, the timing, the displacement. All of them together have to function as a perfectly joined whole. But it’s not easy.

Flag Cicle

Animating a flag may seem simple, but it is not and even more so if you want to create a cycle. Cycles help to optimize the animations and speed up the work but getting a good loop needs time and a good eye.

Wave cycle

The principle behind the wave cycle is really very simple and may be applied to a wide range of animations. If donewell it can create some elaborate actions to very good effect.

My Cicle Flag Animation

Walk Cicle

Here I’ve tried to do a cycle of a baby walking, I think it’s funny. I’ve had difficulty with my hair and my arms. But maybe I need a little more work to get a more fluid result.

Modeling a Whale with Blender

References

Neilblevins.com. (2020). CG Education. [online] Available at: http://www.neilblevins.com/cg_education/primary_secondary_and_tertiary_shapes/primary_secondary_and_tertiary_shapes.htm [Accessed 12 Jan. 2020].