andrewmceachern
andrewmceachern
Blown to 8-Bits
25 posts
3D, CG, and Animation
Don't wanna be here? Send us removal request.
andrewmceachern · 7 years ago
Text
Detecting whether or not there is something on the other side of a door.
So, I’m prototyping a game where the player can build a semi-procedural space station by choosing between pre-built room shapes and linking them together. This presented the problem that I needed to find a way to determine if an airlock would allow the player to walk out into open space or if it was connected to an adjacent room. 
My first thought was to simply attach a trigger volume to the airlock door that would look for another trigger volume on an opposite airlock, which if found, would allow the door to open. Apparently Unreal does not let trigger volumes fire an event within another trigger volume however, so I had to come up with another method. (I’m convinced that they still might be able to and I’m just doing it wrong but after several failed attempts to get it working and several hours of looking at google I still haven’t been able to find a way to make that work.)
So here’s how I solved this particular issue. If I can find a better way to do it I might switch to that but this is working for now.
Tumblr media
This is the blueprint for the door I’m using. It’s still prototyping so the door is just simple meshes, but I added a trigger volume to find the player as they enter it, and an arrow component pointing out away from the door, into what would be space.
Tumblr media
Here’s the graph I created inside the airlock blueprint that enables the door to decide if there is something on the other side:
1) First I created a custom event called “CheckAllDoors” and made that event fire on level start up. I wanted a custom event so I could make it fire any time I want, such as when a player places a new room.
2) Next I created a bool called “ShouldDoorOpen?” which is set to false by default. This is the variable that the door checks against when the player enters the trigger volume, which if it returns false refuses to open the door to the player.
3) Next I created a “Line Trace by Channel” node.
4) For the starting location of my line I created a getter on the arrow component inside the door BP, then simply found it’s world location which returns the arrow’s pivot at the base of the door.
5) For the end point of the line I then got the arrows forward facing vector and multiplied it by 100, which sets the coordinates 100 units ahead of the returned value. Adding that to the world location gives me an end point 100 units in front of the start point, in which ever direction is relatively forward to the arrow in world space.
6) Finally, I created a branch which looks to see if the line trace hits anything (which due to the spacing of the rooms and the short length of the line could only ever be another airlock) and then switches the bool  “ShouldDoorOpen?” to true if it does. When the bool is true and the player enters the trigger volume the door will open.
This method seems to work and is nice as the event will only fire when I tell it to, rather than when a collision occurs. This makes it more reliable that a door will not randomly unlock as the player is running around their base and let them run out into space.
2 notes · View notes
andrewmceachern · 7 years ago
Video
youtube
Renault introduces a new car that drives itself and entertains you with VR.
Renault, with the help of Ubisoft and a few million dollars, has created a new VR simulation you actually experience while driving. Users put on the headset, which is paired with the car’s real front-facing motion sensors to reimagine the image of the road in front of you.
Tumblr media
Renault’s vision is that with autonomous, self-driving cars soon approaching the consumer market, this experience could be an entertaining experience since the focus no longer has to be on manning the wheel.
Read More: https://vrscout.com/news/vr-drivers-seat/
15 notes · View notes
andrewmceachern · 8 years ago
Text
“What things can the larger game industry learn from the indie developers?”
Caveat: I have never worked on an indie title, so I am analyzing this completely from the other side. But here is what I think the larger games can learn from the smaller ones:
1) How to operate within constraints. Sometimes I think this is the entire key to being successful in this business.
2) How to design a game around your team instead of growing the team to fit the design.
3) How to wear many hats instead of promoting hyper-specialization of tasks.
4) How to decide what you do NOT want to be good at. Indie games are very good at saying “We will X well. We don’t give a crap about Y.” Big budget games try to do everything well
 and often fail.
5) Indie games often have to leverage their communities to get enough playtesting and to gather feedback from other regions. It makes it very easy to be really grateful for your community.
6) It feels almost impossible these days to launch a big budget game that is NOT a game-as-service. In other words, to recoup development costs and justify huge expenses and teams, you almost have to buy into DLC, value added services, additional content, competitive seasons, and yes, loot boxes. Sometimes I am very jealous of great indie titles that only want to be relevant for 20 hours.
12/4/2017
21 notes · View notes
andrewmceachern · 8 years ago
Text
Riot tries hard to have good conversations with players, but it can be a challenge when we’re having tough conversations or when players are angry or even abusive. I wrote this to share my strategy around how I talk to players on social media with my colleagues. It might be useful for anyone out there in game development or it may help players understand the developer point of view a little bit.
Be grateful you have passionate players.
Remember that there is a power dynamic in place here. You have the power and they do not (except a little bit through their decision to play or spend).
Since they can’t force you to make a change they don’t like, they can get frustrated. 
Because they may feel like you aren’t listening, one of the few tools they have is to get angrier or more ridiculous.
When you are in an emotional place as a developer, spend extra time re-reading your responses. Ask for a buddy. I often draft a response and then sit on it for an hour to make sure I’m not going to say something I regret.
When you are saying something unpopular you are in one of those moments where you are spending the trust you have built up with players. Which means you’re going to need to build up the reserves again somehow.
Your studio and colleagues should have your back (this is certainly true of Riot). Even if 1000 players are calling out out, it doesn’t mean everyone is calling you out. We aren’t. I do think we screw this up sometimes and beat up devs when they are already beat down for saying something that didn’t go over the right way.
Engaging is hard. You’re going to screw up. It’s fine. You will get better with practice. You’ll learn from trial and error when your tone is off or when you chose your words poorly. There aren’t many shortcuts here, assuming you want to develop your own personal voice.
If you can’t take it anymore, take a break, do something else, go for a walk, have a beer. You don’t have to wade back in right away, and players do tend to cool off over time if the issue isn’t super serious. (But, if you actually fear for your safety, get help from the company.)
Always take the high road. Hold yourself to a higher standard. Remember you comments will often be taken out of context. Nobody will see the inflammatory comment that caused your inflammatory response.  Just don’t go there. Remember the power dynamic. When you talk down, you’re just being a bully. Even if they deserved it.
P.S. I don’t go into a lot of tactics here, like don’t lie, don’t make promises, don’t sound like a corporate robot, do be authentic, do be humble, do acknowledge someone’s feelings are legit, and so on. This was intended more as a high-level framework: how to get yourself into the right emotional and mental space to have the conversation.
P.P.S. I realize the timing of this post may seem suspect with other events happening in the game industry today. Really though I was reflecting on the conversations Riot has been having with League players about the rune and reward changes we recently launched.
11/13/2017
39 notes · View notes
andrewmceachern · 8 years ago
Photo
Tumblr media
Recently completed this walk/swim cycle!
0 notes
andrewmceachern · 8 years ago
Photo
Tumblr media Tumblr media
Some drink containers and litter to throw around the scene on the project I’m working on.
0 notes
andrewmceachern · 8 years ago
Photo
Tumblr media Tumblr media
More set dec for the space game. Plan to match this stool with the umbrella
0 notes
andrewmceachern · 8 years ago
Photo
Tumblr media Tumblr media
Some set dec for a sci-fi game I’m working on. This is a sort of Blade Runner-esque inpired umbrella to match with vendor stands and such.
0 notes
andrewmceachern · 8 years ago
Video
youtube
Blocking for the vendor scene. Not sure if I’m happy with the staging and I want to push some of those poses more, but its here for what it is.
0 notes
andrewmceachern · 8 years ago
Video
youtube
The start of a new project for a vendor character. Shot some film for reference.
0 notes
andrewmceachern · 8 years ago
Photo
Tumblr media
Starting a walk cycle is always amusing. The full plan is to animate an idle > transition to walk > walk > transition to run > run. Lots to do!
0 notes
andrewmceachern · 8 years ago
Text
“What do you think are some of the most common mistakes new(ish) game designers make?”
Making a change that is really just for them as a player and not for players as a whole.
Not recognizing that they have reached a point of diminishing returns.
Doubting themselves and flip-flopping too often,
Not having explicit goals and just progressing without direction.
Clinging to ideas that have been poked full of holes.
Abandoning ideas too quickly when they been challenged but haven’t really been poked full of holes yet.
Coming up with a great idea and whiffing on the implementation or follow-through.
Not understanding technical risk when they hack something together.
Using players as guinea pigs to try out a wacky idea.
Over-reacting to feedback, especially from players.
Not understanding that they can challenge, respectfully, the people in authority.
7/19/2017
25 notes · View notes
andrewmceachern · 8 years ago
Text
Spell 4: Extinction Event
youtube
Progression on ultimate attack going from ref > blocking > in betweens > polish
youtube
R: Extinction Event – Amintas channels a short time, sending the crystal high into the air before calling it back down to ravage the targeted area. All enemies caught in the blast are dealt a large deal of magic damage and slowed 60% for 1.5 seconds; enemies in the blast’s epicenter are instead slowed for 80% and receive bonus true damage.
Animation: For this animation I needed to drive home the supernatural aspect of the ability (since the character is using the crystal’s power not his own) and also for it to have some kind of “wow” factor as it is the character’s strongest ability. I decided that having the character float up in a trance like state would check both those boxes and give me the opportunity to showcase the crystal itself which does all the damage; which is why I made it float above Amintas in the air before taking off. Initially I had the character pick himself up off the ground but from a gameplay perspective no matter how I tried to execute it, it took to long. So that’s when I tried having the crystal return to Amintas with enough velocity it picked him up instead, which could happen much faster! This also has the added bonus of showing how fast the crystal was travelling previously (it flies off screen to get into position before) and what kind of power it can have. 
Gameplay: Amintas’ final ability is one with a large risk/reward factor. It has a long channel time (very slightly over 3 seconds) but the effect it can have on the game would be felt by everyone if used right. This ultimate ability has a really big tell so it would be necessary to have only certain types of attacks interrupt the casting of it, or make him untargetable for the later part of the channel. The full animation is 105 frames but the character can begin moving again after 95 if they needed to. In this way it would be an ability similar to a character like Nunu with a long cast time but a nice pay off if you can make it work.
0 notes
andrewmceachern · 8 years ago
Text
Spell 3: Cor’s Wrath
youtube
Progression on the attack going from ref > blocking > in betweens > polish
*please excuse my muffin top in the ref vids
youtube
E: Cor’s Wrath – Amintas causes a great stone pillar to erupt from target location dealing magic damage and displaces the first enemy it makes contact with, knocking them back towards Amintas. If Amintas is the first character to make contact with the pillar it will knock him backwards instead, acting as a dash and allowing him to traverse over obstacles.
Animation: This attack animation would ideally be used by the player during an ambush scenario, so to that end I tried to get the first part of the motion done as fast as possible so that it could trigger the necessary effect with looking off. Because of this the character does about half of the motion in the animation over only 1/3 of the animation’s run time. Similar to the previous attack I didn’t have the full time to really sell the antic the way I would have liked, so I compensated on the rebound as he lands, taking my time to make sure that the weight sold as well as possible. In addition, I tried to make the gems fall as naturally as possible so even if the character’s movements were a bit off the gems themselves (which the enemy players would be watching to see what they do) would look and feel right.
Gameplay: This move effectively roots Amintas when he uses it. So, because he can’t move during casting time I felt it was okay to have him go almost airborne since the player understood that by casting the ability he wouldn’t be able to move for a few moments. This loss in forward momentum is mitigated by the spell’s effect which either catapult’s a chosen target toward Amintas (more than making up for any lost space between them) or flinging Amintas away from anyone chasing him (moving him more than if he just kept running anyway). On top of that even though the animation runs at 30 frames it could be cancelled or interrupted somewhere between frames 12 and 15 making it closer to what a heavy attack should be.
0 notes
andrewmceachern · 8 years ago
Text
Spell 2: Gem Rush
youtube
Progression of Amintas’ second ability from ref>blocking>in betweens>polish.
youtube
W: Gem Rush – Amintas is charged with the power of Runeterra, making his next basic attack in the next 4 seconds hit with all of his gems for bonus magic damage. This attack deals bonus physical damage instead if Amintas is in the jungle or river, surrounded by Runeterra’s beauty.
Animation: As the character design called for this to be a powered up normal attack this had to be Amintas’ fastest animation. In order for gameplay to not be interrupted the character goes through the bulk of the animation in only 9 frames. this doesn’t leave a lot of time for antic or to sell the animation properly, so to compensate for this I first stretched out the character’s arms at the start and during his swing to exaggerate the momentum being generated and also to increase the readability of the attack. After that I had the character pause at the end of his down swing for 3-4 frames (1/3 of the prior animation!) to give the viewer’s eye a chance to catch up and register what just happened. 
Additionally, Amintas takes his time receiving his gems again, selling the speed and weight that was missing in the attack earlier by stretching out the gems to emphasize their velocity and making him recoil from the perceived impact of the gems returning to him. In this way even though I cheated the beginning of the animation the viewer’s sense of what feels “right” is returned before the animation ends.
Gameplay: As mentioned above this is an empowered auto-attack, meaning it had to be really short and sweet so that the character can continue doing whatever the player needs him to as soon as possible. So, while the entire animation is 30 frames long (too long for a quick attack) the animation is expected to be interrupted as soon as frame 9 and blended into a movement or second attack animation. If the player fires the ability off and lets the character sit there the full animation will play and cycle perfectly into the idle animation.  
0 notes
andrewmceachern · 8 years ago
Text
Spell 1: Crumble
youtube
Progression on the attack going from ref > blocking > in betweens > polish
youtube
Q: Crumble – Amintas uses the power of the crystal to create a tremor, causing a fissure to travel in a line in front of him. Enemies caught in the attack take magic damage and are slowed for 2 seconds and enemies within melee range of Amintas are knocked back.
Animation: As a game animation the character movements had to be fairly fast so that the player could cast the ability and then resume gameplay as soon as possible. In a fast paced game like League of Legends it is also important that the animations read really well with the few frames you get to execute them and with all the other things in the game going on. 
In order to accomplish this I tried two key things: the first is the exaggerated dip that the character takes before throwing his gems so that a player watching this happen would see this unique movement (meaning that the character doesn’t dip like that while walking or even using his other abilities) and would then know that Amintas was casting his first spell. The second was to stretch out the character’s arm so that from any angle it was obvious that he was throwing something and in which direction, I really wanted to telegraph that. In addition the stretching of the arm transfers the viewer’s focus from the character to the gems he’s throwing, which at that point are the more important things to be tracking. This in conjunction with a particle effect, which you can see in the attacks montage here, I think accomplish what I needed that animation to do. 
Gameplay: In terms of game play this move would likely be a “heavy” sort of attack, lasting in total 27 frames, but could be interrupted around the 15 or 16 frame mark and go back into a move or other attack animation.  The ability itself is both a damaging and a CC move so a longer cast time is a little more justified.
0 notes
andrewmceachern · 8 years ago
Text
Amintas Finished Animations
youtube
Here are the finished animations for my character concept. Next up is a break down of each attack and a postmortem for the project.
0 notes