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.

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.

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
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.
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
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
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
Photo
Recently completed this walk/swim cycle!
0 notes
Photo


Some drink containers and litter to throw around the scene on the project Iâm working on.
0 notes
Photo


More set dec for the space game. Plan to match this stool with the umbrella
0 notes
Photo


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
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
Video
youtube
The start of a new project for a vendor character. Shot some film for reference.
0 notes
Photo
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
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
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
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
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
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
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