A list of things I wish I knew when I started. It seems like I did went through a lot of #%$@...
Q. When to move things from Blueprint to code?
When things are getting hard to read, or when you decide what something would be and won't change it anymore for gameplay purpose. For example, a raycast function for collision can be moved into C++ code, but a function that sets the health of player should stay in Blueprint.
Q: What are the most useful Blueprint functions?
Branch (the if statement for Blueprint) and Sequence (for executing multiple function block), Select is also important but it is confusing thus less useful.
Q: How should I use events?
Use Tick events wisely, don't put everything in there unless you have no other choices. Use delta time from tick events for timing.
When making events that have both a blueprint side and a C++ side, call the parent function at the end of your blueprint function block to execute C++ side.
Q: Some functions that I need to know how to use?
Select is pretty weird to use, you need to reset the pin type and set pin class to the one you want.
Q: Something about materials?
If in an online tutorial they have a black and white texture and you can't get it right using the exact same blueprint, try setting texture compression format and texture property to mask.
Use material instance to create the variant of the same material, and remember to set material parameters.
If you use a dynamic material, remember to keep a reference to it in your object to really change it dynamically.
Q: Something about post processing?
Check the Style tutorial and the ContentExample tutorial if you want a clean outline material.
Q: Something about AI?
If you want to do a "stun" for NPCs, try to just eject the controller rather than setting up AI state in different AI trees, it works great if you don't have a more complex AI system in mind.
Now that I think about it, all crowd control effects should be dealt with as controller problems, as it should not change the AI behavior...Need more research.
Q: Something about particle?
Start by copying/pasting someone else's particle, disable different component and see how it goes. Don't create your own particle when you first start.
Don't set particle color to variable if you are not satisfied with the look of the particle. After setting it to variable, the preview window will not work.
Particle System means just one emitter, don't be fooled by the name.
In case you don't know, a particle is a flat rectangle that always faces the camera, a emitter is something that produces these rectangles.
Q: Something about Matinee cinematic tool?
It is really easy to use if you had any Maya experience, follow the official tutorial. You only need some movement and camera track anyway.
Use two monitors will save you a lot of time.
Q: Something about the UI?
Use widgets and the interface is pretty self explanatory. There isn't much tutorial about widgets but they are really easy to use. Use Blueprint events such as "on construct" to make your UI widget interact with your game.
For widgets, On Construct events are called WHEN ADDED TO VIEWPORT, not when they are "created". Convenient but hard to realize :/
Also, widget are referred to as "UUserWidget" in code.Remember to #include "UMG.h" and edit the <YourProjectName>.Build.cs file (should be inside your project folder) to have it include "UMG" by adding it like this: PublicDependencyModuleNames.AddRange(new string[] { " UMG"});
If that line already exists, just add UMG into the bracket.
When trying to change the content of the widget, choose the content and check the "variable" check box.
Q: Compilation and general concerns?
Removing a file in Visual Studio does NOT remove them from your project, use the solution mentioned here, rename the file and rebuild.
Using int could cause unrecognizable type error because of reasons stated here, too bad we found it much too late :<
Monday, November 24, 2014
Game Design: Brick Monsters
This is a game I always wanted to do: a game of Pokemon meets Puzzle and Dragons where you adventure in the augmented reality world to find upgrade for your own pet monsters. It was largely inspired by Path of Exile (well doesn't look like it at all) in its gameplay. This design document was written for a project proposal that did not get passed, I might come back to revise it someday :3
Gameplay:
Rationale and Innovation:
Gameplay:
Brick Monster is a turn-based augmented reality RPG game for
Android where players rise their own clan of monsters and use them to fight off
evils both in the physical world and the virtual world.
Brick monsters are brick-like little monsters that has
special ability to fight off evil. Their power, appearance, skill and
attributes will change based on the user’s interaction with them. User can
decide what their monsters will look like and develop into by feeding them
different food gained in battles, and letting them interact with different
physical environment.
Monsters has five attributes: fire, water, grass, light,
dark. Attributes are numerical values and a monster can have any combination of
attributes. Improving attributes will change a monster’s allowable body color
range, the allowable body texture and the personality of monster. When a
monster’s attribute exceeds certain value, it will also learn new skills. Each
monster can only remember 4 skills at a time, if a new skill needs to be
learned, an old skill has to be forgotten. Both feeding and interacting with
monsters will change their attributes.
Monsters has no levels, but they have three stats: strength,
intelligence and utility. Strength influence a monster’s health, intelligence
influence its spell power, and utility influences its speed. Stats will also
unlock “support skills” which grants new power to their skills and influence
their look, and support skills will never be forgotten. The only way to improve
stats is to feed them monster food.
(Concept of what a monster should look
like)
While there is no level limit, feeding monster will make
them grow in weight, and eventually reach a value where no food can be fed to
the overweight monster.
When fighting in dungeons, users will need to organize a
team of three monsters, then carefully choose their skill combination and team
arrangement to fight off enemies. There are three team arrangement available:
aggressive, defensive and normal, each amplify the damage received and dealt
differently. The three monsters will have a combined health bar, but each will
take action according to its utility value, just like in a traditional turn-based
RPG.
(Concept for the team arrangement, blue
dots represents the monsters.)
More peaceful users can choose to keep their monsters as
virtual pets. They will be able to scan the surrounding environment and have
the monster showing up in the environment. Environment’s color and the
real-world time will influence monster’s behavior, and if an image target is
recognized, the monster will can interact with that image(e.g. playing with
characters in an animation poster).
User will start off by making a default monster, given a few
points to spend on different stats and choose only one basic attribute. The
look and skill of the monster will be dependent on its attribute. To start
battling, user can choose a dungeon from a list of dungeons provided by the
game, or scan their surroundings and use their monster’s power to find
dungeons. User can also start by interacting with their monsters and put them
in certain physical environment, while interaction cannot directly provide stat
boost, monsters can discover monster food in the scene that can be fed to the
monster later.
The game will be developed in Unity with Vuforia plug-in for
augmented interaction. I decided to use cube-shaped monsters so the
textures can be easily swapped using Unity and animation would not be difficult, Scaleform plug-in might be used for better UI
development.
This game was
designed to promote the use of augmented reality. It contains enough non-AR
gameplay elements to attract users who are afraid to try new content, while
provide enough benefits for those who tries to use AR and make it a meaningful
add-on for the game.
Below is an example of how
the brick monsters will show up in a real world scene using Vuforia
(The
example was developed by me in less than 3 hours)
Brick Monster is a
game where the players really decide what their characters are going to be. User
will be able to choose their monster’s look and skill to make a real monster of
their own, and no two monsters are going to be the same. While there are many
virtual pet games out in the market, very few of them have a meaningful
customize system that makes the user feel related to their character. Moreover,
the games that allows customization are mostly focused either on the look or
the battling ability, but not both. Therefore,
able to customize both the look and ability of the monster through battling and
interaction will attract both hardcore users who like to try out different
skill combination, and softcore users who would like to make their own monster
that looks unique. The turn-based battle will be friendly to people of all ages
as it does not require fast reaction, and allows user to put the game down at
any time to pick it up later without fearing to lose, which is important for
cell phone users.
Subscribe to:
Posts (Atom)