Tumgik
#soledevoloper
adamhousevgd · 8 days
Text
Tumblr media Tumblr media
It's high noon, and I finally finished my 3D revolver.
2 notes · View notes
adamhousevgd · 28 days
Text
Tumblr media
Featuring some Arched text and other colorful and creative text I made myself in photoshop.
2 notes · View notes
adamhousevgd · 1 year
Video
C# Advanced basics post-mortem
This time I decided if I want to make bigger projects, I needed to understand more specifically about the C# programming language I use and how it works so I can understand it to make the best fun games as possible.
I even made 3 short mini games as a little exercises to warm myself up.
What I learned
 different types of variables like doubles, characters, and colour.
different ways of how variables/ parameters add with each other, e.g.  float sum = (2 + 3) * (4 - (4 / 3)).
A better understanding of Enums and how the states can be used. e.g played dies or at main menu waiting for player to press play or restart, what happens next?  does he move a inch or not?
The calculated difference of float and int when dividing them respectfully such as calculating the nearest inside numbers (part of floats).
 Casting: Converts a variable to another variable. Eg int a = 5 into float a = 5.0f.
How more robust Lists can be, such as being counted, added, removed specifically or all selected, reversed, removed at range and etc. Also, an idea of what its generics are <>.
Different types of functions that can be used like voids, ints, floats and returning their parameters such as strings, ints and floats.
Functions store many parameters as much as they need. Also different types of functions can share the same name, except for the same types.
How effective and distinctive behaviour of If, if else and else statements of controlling mechanics.
Not to have so many if statements in a nested code otherwise it may affect performance of the game.
More detailed info, cleaner code, similarities to the ifs, if else, else statements and how complex switch Statements of how they execute with different variables to run code inside each of the cases and defaults.
the unique behaviour of breaks that break out of the code to execute outside code.
The Different types of loops such as For loops, for each loops, do while loops of how their used respectfully so it doesn't crash the computer on the wrong use.
Better understanding of Arrays of what the elements can contain such as ints, game objects, floats, bools, strings, doubles etc and how it can only be programmed to access their elements not outside its index or length.
How you can change array element values by code without setting its variables.
How for loop doesn't need to be specialised how many times to repeat the loop so it doesn't crash.
Advanced use of Coroutines such as Stopping Coroutines, waiting for seconds in real time (no matter how slow or fast the game is with time scale), how they can pass Parameters and strings to reference other functions and how the waitforseconds can be slowed or speed up by Time.TimeScale.
Passing arrays into void  returning functions like ints. The parameters can even have the same names of its variables and it won't cause an error.
How interesting is to model objects from classes each with their variables and to update them overtime.
How useful are constructors when passing variables.
How "this." refers to the class variable and outside the function parameters.
Difference of Objects create that get passed in Memory as references and values.
 More detail of Data encapsulation/visibility modifiers other than public or private. I learnt more such as Internal, protected modifiers, setting and getting variables.
 A deeper understanding of inheritance such as from Mono behaviour and from other classes such as behaviours, functions, properties and variables.
How Inheritance works with child game classes using override functions to override the virtual function from their parent classes to do something else.
Most functions, datatypes values including transforms which are inherited from Mono behaviour.
The pros and cons of method overloading, while good to use a variety of functions and parameters, but needs to be specific of which function and parameters to run.
The use of the Ternary Operator such as using ? (if) and : (else) respectfully like if statements.
Variable Attributes and such as [RequireComponent], [ExecuteInEditMode], [AddComponentMenu], [HideInInspector], [Range]and [TextArea] which are broadly useful to read and get components to reduce unexpected issues, and makes the life's easier for designers, respectfully.
 How static variables and functions can work together with each other's scripts without get components and creating objects. They also don't work with non-static variables and functions.
How Delegates can be used to subscribe or call events from scripts including statics
How to return value answers when adding or subtracting.
How to make log warnings and log errors execute by code in the console depending how the script is written.
-Pumpkins and Golems
The possibility that I can make a game based on its rigid body physics a little more than complex code. E.g dodging rolling pumpkins from a slope, etc
-Bombs Away
Being able to spawn bombs in-between min and max distances with floats randomly from one transform variable.
Being able to restrict players movement with floats, Vector 2 and if statements without using a box collider.
-Knife Hit
Able to add force on knife with either Space or Mouse keys respectfully without causing unwanted design issues or bugs.
Able to set the knife game object to be parent of the wood by collisions and turning off collisions with "Detect Collisions" by turning it false on the knife once collided.
Overall
It was a long and hard work to get a better understanding with these datatype concepts. But I'm glad that I've done it so I can get a better understanding of how C# works so that way once I start to make more complex games, I am more aware of how it works so its easier to understand, fix unexpected bugs, and work differant ways to execute code.
10 notes · View notes
adamhousevgd · 11 months
Text
On this stormy night, you find shelter, but at what cost? Your time to see my portfolio piece and admire the stormy nature of my project, yay!! In this project, I made a simple and short level design project of the player navigating through a tiny forest on a stormy night who will then find a mysterious cabin to stay in.
This project was designed not to be the next game on the market, but to flex my level design skills with particles, and for the first time to use Tree Creator and wind zone to create trees and wind respectfully. The assets (including the fps controller and one of the trees) are mostly borrowed from the Unity asset store, except for the trees I created (which will be shown one by one later in the video).
WHAT I LEARNED:
· How effectively I can use the Tree Creator to create main roots, growth, leaf frequency and growth, textures, branches, LOD, how effective are they in the wind, size (including leaves), and crankiness of branches of trees
· About how to use the wind zone for the first time and how effective and complex it is to use to enable to blow the trees around like the real-life wind.
· How I can make small particles float around until they reset their starting position to play the particle again.
· How I can shape particles. E.g. the dust flying around and the rain particles falling respectfully.
· Rotating around skyboxes to fit in with the scenes better. · Using code to make a randomized range with an enumerator to flick the lightning (directional light) between 15- 20 seconds.
· How effective using flare lights can be used to get players' attention from a distance,
WHAT I IMPROVED:
· I improved on mixing different terrain textures with each other to make it seamless and blended together as possible.
· I managed to control how high and low the terrain is to distinguish which are hills/mountains and walkable areas.
· Getting a better hang with the lighting and post-fx respectfully.
· Snapping modular pieces such as planks and steel roofs to corners of the little house to reduce z-fighting visuals.
WHAT I COULD HAVE DONE BETTER?:
· For rain particles, I could have added a splash particle when the rainwater collides with the terrain to make it more realistic and alive instead of it going through the ground.
· Not all the trees look exactly what I call “natural” trees, some looked a bit randomized with branches and a little bit blobby, so I will need to practice with the Tree Creator in the future to get better realistic trees.
· I would need to be careful how many leaves and branches are attached to the trees, otherwise, it will increase the polycount in the scene and crash the game.
· I only used a minimum of post fx this time because I thought without the player having a flashlight or lamp posts around, the player would struggle to find their way around if the post fx is too dark. So next time I should have a flashlight or lamp posts for the player to navigate around and use more post fx to enable me to use more of my creative freedom of it.
OVERALL:
Not only was this something a little different and a good exercise to improve my level design skills including sculpting the terrain and creating particles, but to try out new things like using the tree creator to create trees and using the wind zone to control how much wind to blow trees. Next time I may need to practice on the terrain editor and tree creator more to create more unique trees and terrain or just simply create trees and land from modular sets instead all respectfully, but that would depend on the next game I will be making. Overall- good exercise to expand my level design toolbelt.
5 notes · View notes
adamhousevgd · 1 year
Video
A short minigame project exercise to kickstart for the new year, This time comes a Frogger clone. I usually prefer not to make game clones, but I decided to do a short exercise to warm up my skills for this year since I'm doing more complex projects later this year and then looking for work as a game tester or game designer. I did not make these assets, they were provided to me by AwesomeTuts. What I learned - to move the player character 1 unity without using delta time. - Getting The player to move to the starting position without using a vector 3 variable while executing it from another script rather than the player controller script. What I could've done better -Even though the background "roads" is not mine, It doesn't look pretty and is uneven with the player moving from unit to unit. So I could have made the roads and grass( safe area) follow unit by unit rather than be uneven which would cause the player to be hit by cars more easily. Overall -It was a nice warm-up for the beginning of this year.
6 notes · View notes
adamhousevgd · 1 year
Video
This time, I decided to do a programming exercise of a simple boss battle which will prepare me to make more complex boss battles for my future games. Normally I would prefer making it into an fps project battle boss, but I decided to do it similarly to a tank shooter-styled game to learn different ways of mechanics to use for my future games. WHAT I AM DEMONSTRATING: •   Player can move backward and forwards and rotate around. •   Player can shoot orbs from in front of him instead of using ray casts. •   The turret boss can aim and shoot cannonballs at the player wherever he is. •   The turret boss randomizes a minimum and maximum shoot force and fire rate. •   Both the player and the turret boss have health which determines the win-or-lose factor of the game. WHAT I LEARNED: •   Assigning game object variables with nulls is a good way to reduce errors when starting the project, except when they are called by in script by methods, awakes, or updates. •   Making game objects flash by mesh renderer when damaged then back to their original color which was stored in the awake function. •   Getting object references from projectiles by using their game object name instead of tags. •   Made simple particles for the cannonball and magic orbs. For the orbs, they combine lots of particles to make 1 orb. •   Adding relative force to Cannonball’s rigid body relative to its coordinative system. •   The difference between PlayOneshot audio parameters compared with play Audios. •   Getting the turret to randomize with Random.range with fire rate and force of cannonballs respectfully. •   Not getting the UI methods in the update function otherwise it wastes performance in the game manager. •   Static variables can be saved in the game Manager and be updated whenever called from other scripts. •   For orbs, I can use the audio length to play a certain sound before self-destroying the game object. Making sure the audio plays its full sound without cutting off. OVERALL: It was a nice and short exercise, I think usually boss battles are a bit more complex than this one, but I learned different ways of making mechanics that will be useful for my toolbelt in future development. #gamedevelopment 
3 notes · View notes
adamhousevgd · 2 years
Link
Finally!!! I finished my Tiki hut.
8 notes · View notes
adamhousevgd · 2 years
Link
Changes were made to reduce difficulty and players getting lost respectfully. +Rearranged some enemies. +Added more light posts including the prison area. + Changed light decay from 0.06 to 0.04. +changed shotgun fire rate from 1.6 to 1.2. +Changed assault rifle damage from 20 to 22. Don't forget to save your battery power as much as you can! https://lnkd.in/gfR7_dT6  
4 notes · View notes
adamhousevgd · 2 years
Photo
Tumblr media
Captured the first Render video of my Tiki Hut. Textures were done by the School of game design (possibly)          
3 notes · View notes
adamhousevgd · 2 years
Video
Did some Boomerang mechanic testing that when the player throws a boomerang, sword, gun, etc.  It will come back to the player so it can be thrown again.
6 notes · View notes
adamhousevgd · 1 year
Photo
Tumblr media
Coming Soon: a horror survival game where you are stranded on an island full of psychotic Maniacs hunting you down who is led by a sadistic General.
This is not the first time this game was made and released by a wanna-be Game developer like me, So this will be on a private page. So follow me here  to get access to it.
2 notes · View notes
adamhousevgd · 3 days
Text
Tumblr media
Been testing filter settings in Photoshop for the last month to get an idea of how Photoshop can be used. I decided to make a retro movie-like poster of myself from an old pic when I was in Japan in 2018.
0 notes
adamhousevgd · 1 month
Text
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
I merged 2 images of the human eye and the earth together in Photoshop. I made different variations, enjoy. I am not the original creator of the 2 separate original images, the rights belong to... - Eye (IKO) - Earth (NASA)
0 notes
adamhousevgd · 5 months
Text
Giant Spinner of Death: Obstacle course
youtube
Finishing off the year 2023, I decided to try something a little bit new and simple to see how far I come, I made a simple little obstacle course to see if I was missing anything that I already should have learned and improved with making mechanics before making more complex mechanics and design in games.
For the first time, I decided to simply use Cinemachine to test out the smooth virtual camera to follow the player.
The goal of this game is to reach the goal while avoiding obstacles as much as you can before time runs out. Don’t collide too many obstacles, or you lose!
I did the best I could to not overload the player with so many obstacles at a time, otherwise, it would be overwhelming and difficult for them to dodge the obstacles.
I needed to make sure the was enough room for the player to move around and dodge obstacles, especially the dropped obstacles which I intentionally put close to walls so the player can navigate around them a little easier after being dropped. The giant spinner of death I wanted to be the main threat to the player so the player is forced to keep their eyes on it at all times otherwise it will collide with the player and knock them towards another wall or obstacle.
I put a timer in the game to challenge the player to get to the end goal in time before it runs out. It would be a little too easy and not as challenging for the player if there was no timer since they could just wait a long time before all obstacles are dropped and go slow and steady around obstacles.
WHAT I IMPROVED:
Combining 2 strings and an int making into one sentence with a number countdown which is “you have” + “seconds” + “secs left”.
Got into the habit of making code much cleaner to read by separating some code into functions to avoid writing the same code again, So instead It calls certain functions at appropriate times  ( e.g if the player loses by colliding too many objects or time ran out, it calls the function “displayLoseText” to display lose text.
WHAT I LEARNED:
How to set up the virtual camera from the cinemachine package.
How effective it is to make the cinemachine virtual camera smoothly follow the player.
How to turn on and off gravity on game objects by code.
It’s a good idea to start variables with lowercase letters.
Get axis movement is a method.
Delta time makes updating independent by making the time of frames consistent with the user’s computer. It uses the getaxis value multiplys by delta time movement value speed consistent with the user’s computer as it creates a single value.
The spinners that move without using delta time when timescale is 0 will still move. Possibly due to the fact it's not accessing time as it moves on its own.
Using Enumerators to drop obstacles in certain periods of seconds instead of using Time works best if the game level needs to be played again if players lose or win, otherwise the obstacles will not reset is drop counter and drop too quickly because Time has not been reset to zero when replaying the level.
Can change game objects tag names in code.
Tag is actually a property.
OnCollisionEnter is a callback.
Collision is a variable while "other" is a parameter. “other” stores information about what the gameobject might hit and what it might do with that information. I’ve known OnCollisionEnter for a while, but it's good to know more details about it.
Rotate (transform.Rotate) is a method. Methods are in capital letters.
The difference between defining and calling a method.
WHAT WENT WRONG? WHAT I COULD HAVE DONE BETTER?:
I couldn’t get the walls to always stop the player in its tracks, it is a difficult problem to solve. It could be because the player is moving so fast that it can pass through thin walls. I could have made thicker walls.
The player can also pass through walls by holding a move key as soon as the play button on the unity editor is pressed. The player can pass through corners for some reason, I tried to cover the corners as best as I could, but there was no luck succeeding. Thick walls wouldn’t be right for an obstacle course since most of the walls needed to be avoided by the player. So, the easiest solution I did was to add a timer that would pause the game and offer the player to try again if time is up.
When the player moves towards the wall, it shakes rapidly. I tried to see if I could give it a physics material to reduce the wall shaking, but for some reason, it had no effect, so sadly I had to let it go. I will need to find out more about creating physics materials to make it work as intended depending on the game mechanics and player collision.
OVERALL:
Even though I knew most of these data types beforehand, I learned some new details about them which is important for me to understand and how they work so I can work with them (or around them).
I need to get an understanding of some knowledge I may not have known 100% before (e.g. How player cube is not so bouncy on walls) and may need to research more to prevent or reduce the unwanted executions from code.
I could have tested it with a player, but I thought it wasn’t too important for now. The intention was to be more of a programming exercise to see what I know and what I don’t know, not a playable commercial game that the public can play.
1 note · View note
adamhousevgd · 5 months
Text
Zombie Man (feat animations)
I was originally sculpting and then retoping a 3D zombie to improve my skills in 3D coat after my 3rd gaming course in 2018, but I had to put it on hold because I was about to do my 4th gaming course making me forget it afterward, until recently I decided to finish it off by texturing it in 3D Coat and Photoshop, then using Mixamo to animate the zombie and finally to edit its animations in the Time Editor in Autodesk Maya completing the project for good.
After I finished texturing the zombie, I exported 4 animations from Mixamo using the zombie T-pose model in the process. I exported attack, scream, idle, and catwalk. You heard me, right? Catwalk! I honestly thought it was funny that a zombie was doing a fashion catwalk. Unfortunately, I had issues with editing the animations in Time Editor since it was my first time using it, so I scrapped it.
For Time Editor, I tweaked the animation of the attack, and then for the idle and scream - I blended them together into one animation.
Not only I was happy to finally finish it and learn new things, but I was also happy to warm myself up yet again to do 3D art again due to myself not doing any 3D art for a while. In the future, I will need to use those skills to create assets for my own games, especially when it comes to creating my own original characters and monsters.
Since it’s been a while since I sculpted and retopoed the zombie, I can’t precisely get into nuts-and-bolts detail of what I learned or improved, but I can explain what I learned while I was texturing and animating the zombie recently for the last month.
Post mortem is short because most of the skills I used in 3D Coat and Mixamo are what I learned in the past, however, I did learn new techniques in Photoshop and Autodesk Maya.
WHAT I LEARNED:
Various voxel and sculpting tools to make details of the zombie in 3D coat.
How I can use the Time Editor in Autodesk Maya to edit Mixamo exported animations and blend two of them together with layers.
The difference of creating an Additive layer which adds on animations like moving the head and arms. Override layer which overrides animations on any chosen joint rig in Autodesk Maya's Time editor for animated characters.
Creating a control rig to allow me to control the joints of the zombie easily when animating them in Autodesk Maya.
 Making adjustments in Photoshop using the Hue/Saturation and Color Balance to change the zombie's skin color. These adjustments I rarely use for my projects.
 Making adjustments in Photoshop using the levels to make some areas darker or lighter depending on the texture map in Photoshop. Yet again I hardly use levels in Photoshop.
WHAT I IMPROVED:
Better making muscle and bone placements on the 3d model based on human anatomy compared when I made Rambit Bonzer 3D model years ago: https://sketchfab.com/3d-models/rambit-bonzer-e5cdc786e744479f884136a3be7c6c83
Making texturing details stand out using a bit of light and dark texturing e.g. (rib cage around the body).
Remembering to save color swatches before I switch to a new texture color to use in 3D Coat.
I got the hang of exporting the retopod 3d model better in 3D Coat so that way it shows its sculpted details better when rendered.
WHAT WENT WRONG? WHAT I COULD HAVE DONE BETTER?:
I could have made some cuts and muscles deeper compared to the source material I used for inspiration on my zombie in 3d coat.
I occasionally make a mistake I paint the texture on the wrong layer in 3D Coat. I need to make sure I don’t do that otherwise development will be slow causing me to not meet certain deadlines in time before the game launch.
It was my first time using the Time Editor in Autodesk Maya, so I couldn’t easily edit the zombie catwalk with it. I need more time practicing using Time Editor in Autodesk Maya.
For the Zombie attack animation, I couldn’t get the other arm that the zombie didn’t swing with to be more flexible. Yet again I need more practice with Time Editor in Autodesk Maya.
I struggled with making the right lighting and rendering on Sketchfab for each zombie man model, I will need to practice with the options more to get a better hang of it.
I could have made the video render shorter so I could encourage people to see the actual 3D model of the zombie and the animations on Sketchfab rather than show it all on social media and spoil the surprise.
OVERALL:
It may have taken a while to complete the zombie, but it feels satisfying that it is now on display on my portfolio so people can see it. The project sure gave me a better idea of how I can make characters and scary monsters better for my games.
I don’t use 3D coat as much as I used to, but I hope I can use it again in the future to give it justice showing how effective it is in creating assets for my games.
I don’t know how likely I will use Time Editor again in Autodesk Maya, but at least I know it’s an effective way to blend and tweak animations if need to be used, but practice using it won’t be my biggest priority for now.
Full 3D models can be viewed here: https://sketchfab.com/Adamh5/collections/adams-zombie-man-d4b3f25a2cd740d4973a8f079065290e
youtube
1 note · View note
adamhousevgd · 7 months
Text
youtube
I.T.H: Imperial terminal hacker.
This next prototype, no 3D or 2D world this time, but only uses a terminal simulator to hack into an Imperial nation for the rebels (this includes you!).
Your job as a hacker is to shut down three facilities to prevent the dictator’s mad scheme to launch nuclear Armageddon and make it difficult for the dictator’s military to fight back against the rebels.
This was an easy project to do, however, I learned some new programming tricks (more below) that gives me better ideas on how to use them. Unlike the other practice prototypes, I have done alone, I only programmed one script which is “terminal” which controls level selection, menu, and jumbled passwords to guess, and commands to type. The rest of the scripts, 2D assets, and sfx are provided by Gamedev.tv since it was based on a tutorial from them.
WHAT I LEARNED:
On some occasions, changing variables to const’s will allow the game to run faster and heavily reduce it causing an error.
Using Enum’s to determine on which screen the player should be in: e.g. Main menu, password, and win screen while working with a level int that also determines if it’s part of level 1, 2, or 3.
Using a string to determine the player's inputs if the player types of things like “menu”, “exit” “quit” or “close”, easter egg numbers and levels (both for main menu only) “1”, “2”,  and “3”.
Using switch statements to determine which level input (meaning which level the player has typed) and each case level value that contains a string array of passwords that will be jumbled ready for the player. Each of the 3 groups has a collection of passwords that the player must guess the password by typing the password name to match with the jumbled password to win the level.
Using a default case if the player types an invalid level number that is higher than 3 or less than 1.
Using an int parse for a level value to pass it into a string to activate levels depending on which of the valid level the player has chosen.
During gameplay of the levels, using if statements to determine if the player has typed the valid password (string) and will display win screen, else restart the level.
Using one function to add terminal line of "you can type menu at any time". Meaning don’t repeat yourself if you can. Same goes with functions like clear screen (clears all text on screen and brings in new text), and display win screen.
Using a function with a switch case with the level passed value from int to string to determine which level was completed and matching the appropriate win screens with ASCII text. So, if player completes level 1 = ASCII win screen of tank and completes level 2 = ASCII win screen of lock.    
Organising the code to be clean, easy to read and not too jumbled for myself and other people to read the code.
Giving people want they want from menus and Ui save’s surprises for the narrative and the story in the game itself to be found by players later.
How consistent are switches compared to if statements for using different logic in blocks of code. They can also be used to compare other values like ints, floats, strings, etc.
Deleting the library folder in the unity project will reduce half the size of the project before zipping. The library will be rebuilt once the project is open.
Variables that are built in unity have a lowercase and are called primitives (e.g., int or float).
length is a property in an array.
Expressions:  which evaluates to the same thing of type of code e.g "Hello world" and "Hello" + "world".
The difference between local variables which are inside functions and member variables which are outside functions and available to all other functions.
How effective Enum’s can be used for menu items because its organised like a file directory.
WHAT WENT WRONG? WHAT COULD HAVE I DONE BETTER?
I couldn’t make a build of this game so people play the game, it might have been because I shared different game assets in one project which may have conflicted with other files. I did try to export the dependencies to a new separate project so I could make a build, but I got strange errors that certain datatypes were missing. It was very difficult and confusing so I didn’t bother going through all that trouble, but I definitely should make separate projects for each game next time.
I got someone to test my game, she easily got past the 1st level because the words were easy as intended, but she couldn’t get past the 2nd and 3rd levels which are medium and hard difficulty respectfully. I had to tone down the words. I got her to test my game again, but she still had no luck with 2nd or 3rd level.
 I could have spent more time testing the difficulty with people, but I had to let it go because the project was not a commercial game, but a practice project and I wanted to work more time on more important projects that I have more faith that will do commercially.  I don’t know how popular or niche those hacking sim games are in the market.
OVERALL:
It was a decent project to exercise the basic coding I knew, but in a new different, and efficient way. I’m happy that I gave it a go, learned some new tricks, and built myself up with more coding and game design knowledge.
Normally those hacker sim games are not my cup of tea, but it was something different and set itself apart from my other prototypes on my portfolio since I have a lot of first-person shooters, minigames, 3D models, UI work, and misc.
It was good to warm up my game design and testing session before I find more work for clients, but I will need more experience in toning the right difficulty for players.
0 notes