Jekyll2023-11-25T21:56:41+00:00https://windy.moe/feed.xmlWindy Darian’s WorkhouseWindy DarianSwitched to Jekyll!2019-05-01T00:00:00+00:002019-05-01T00:00:00+00:00https://windy.moe/2019/05/01/switched_to_jekyll<p class="ln-en" lang="en">I switched to Jekyll and moved all data over!</p>
<p class="ln-zh" lang="zh">窝开始用Jekyll了!</p>
<!--more-->
<p class="ln-en" lang="en">Now I have a GitHub repository for my blog at
<a href="https://github.com/WindyDarian/workhouse">here</a>! The old posts
before this are still accessible from the
<a href="/posts/all/">archived list</a>.</p>
<p class="ln-zh" lang="zh">把之前的数据都转移到了Jekyll,甚至放到了GitHub上
(<a href="https://github.com/WindyDarian/workhouse">这里</a>)。为了方便阅读(和掩盖黑历史!)
比这篇博客更早的文章<a href="/posts/all/">可以在这里找到</a>。</p>
<p class="ln-en" lang="en">It had been a while since I last posted. By a while, I mean 2 years and 3
months. (I need to think about why.) I still had to do the routine maintenance
on the server regularly, because I was using WordPress. Every once in a while I
had to:</p>
<p class="ln-zh" lang="zh">已经很久没有写过博客了。(很久指两年零三个月。)然而因为用的是自搭的WordPress,即使在没写博客的这段时间,窝也必须时不时地维护VPS服务器,以下是例行维护时需要做的事情:</p>
<blockquote class="ln-en" lang="en">
<ol>
<li>Log in to my vps server with SSH.</li>
<li>Turn off Apache.</li>
<li>Update the software packages.</li>
<li>Turn on Apache.</li>
<li>Log in to WordPress backend. Check if there are new version of WordPress (and plugins and themes).</li>
<li>Allow Apache user to write WordPress folder.</li>
<li>Update WordPress.</li>
<li>Disallow Apache user to write WordPress folder.
<ul>
<li>(In the beginning of time I didn’t do this. Then my blog got destroyed by someone once, and it had to recover with a backup from a month or so before…)</li>
</ul>
</li>
<li>…</li>
</ol>
</blockquote>
<blockquote class="ln-zh" lang="zh">
<ol>
<li>SSH登录</li>
<li>关掉Apache</li>
<li>更新软件</li>
<li>开Apache</li>
<li>登录到WordPress后台,确认WordPress、主题、插件的新版本</li>
<li>赋予Apache用户WordPress文件夹的写权限</li>
<li>更新WordPress</li>
<li>回收Apache用户WordPress文件夹的写权限</li>
<li>。。。</li>
</ol>
</blockquote>
<p class="ln-en" lang="en">I wrote scripts to automate some of the things but, anyway, I am getting tired
of doing these. I am not very a weby engineer (“but a gamey one!”), and I was
just to lazy to replace it with another thing. But I realized I need something
to save me from the labor.</p>
<p class="ln-zh" lang="zh">虽然写了脚本让事情轻松很多,需要手动做的事情还是很繁琐。即使如此窝也就这样用了很久的WordPress毕竟窝不是经常做web相关的码农(还是做游戏最棒!)。终于厌烦了重复劳动,决定找新的解决方案。</p>
<p class="ln-en" lang="en">I like version control tools, especially git since it’s decentralized and easy
to backup (by just <code class="language-plaintext highlighter-rouge">git clone</code>). I cannot live without them. However with
WordPress and the blog data in mysql database, it didn’t feel I was controlling
them… Plus I want to use my favorite text editor, and markdown.</p>
<p class="ln-zh" lang="zh">窝喜欢版本控制软件,尤其是git。它在版本管理的同时还是去中心化的,也就是说每一个克隆了仓库的电脑都是一个有完整历史的备份。总之用git是非常开心的一件事!然而在WordPress里就找不到这样的快乐了:(… 此外,如果能用窝喜欢的文本编辑器那最好不过。</p>
<p class="ln-en" lang="en">So I made the switch!</p>
<p class="ln-zh" lang="zh">窝不用WordPress啦!</p>
<p><a href="/assets/post_images/2019-04-30-jekyll.png"><img src="/assets/post_images/2019-04-30-jekyll.png" alt="俺はWordpressをやめるぞ!" width="256px" /></a></p>Windy DarianI switched to Jekyll and moved all data over! 窝开始用Jekyll了!Calculate Projectile Direction to Hit a Moving Target in Unreal Engine or Anything (Projectile Subject to Gravity)2017-02-25T09:42:51+00:002017-02-25T09:42:51+00:00https://windy.moe/archived/english/2017/02/25/calculate-projectile-direction-to-hit-a-moving-target-in-unreal-engine-or-anything-projectile-subject-to-gravity<p>In one of the prototypes I am working on recently, there are some enemy archers and I need them to be able to hit the player's character in movement. That is, knowing <strong>location</strong> and <strong>velocity of the target</strong>, the <strong>enemy archer's location</strong> and the <strong>speed of the arrow</strong>, I need to calculate a <strong>direction</strong>, or velocity for the archer to shoot the arrow. My assumption is that the arrow will subject to and only to <strong>gravity</strong>, while considering the <strong>velocity</strong> of the target when the projectile is launched. My code is an iterative method inspired by <a href="http://www.gamasutra.com/blogs/KainShin/20090515/83954/Predictive_Aim_Mathematics_for_AI_Targeting.php">this post from Kain Shin</a> for C++ in Unreal Engine, but I it can be easily adapted to another platform. Adding acceleration, although I haven't tried, should also work somehow using my method.</p>
<p><a href="https://wiki.unrealengine.com/AI_aiming_for_the_lazy">This post</a> used KINSOL library to solve the problem, but it would eliminate the cross-platform potential of my game. The third method in <a href="http://www.gamasutra.com/blogs/KainShin/20090515/83954/Predictive_Aim_Mathematics_for_AI_Targeting.php">this post</a> doesn't work well if the upward/downward angle is very large. Considering the fact I already have a function working for non-moving targets, I decide to adapt from the second method in <a href="http://www.gamasutra.com/blogs/KainShin/20090515/83954/Predictive_Aim_Mathematics_for_AI_Targeting.php">this post</a>, which is an iterative way.</p>
<h2>Simplified case: assuming target does not move</h2>
<p>It is easy to solve the equation if the target is not moving. I already had some <a href="https://github.com/WindyDarian/DragonHunt/blob/master/Source/DragonHunt/DragonHuntHelperLibrary.cpp">code</a> already working in <a href="https://github.com/WindyDarian/DragonHunt">DragonHunt</a> (Thanks to Menglu!) to calculate direction to launch projectile, but it didn't take the movement of the target into consideration. (That is, the AI in the game needs to be smarter than that in DragonHunt XD)… Also, there is a function named SuggestProjectileVelocity in Unreal Engine that does exactly the same thing (<a href="https://docs.unrealengine.com/latest/INT/API/Runtime/Engine/Kismet/UGameplayStatics/SuggestProjectileVelocity/index.html">C++</a>, <a href="https://docs.unrealengine.com/latest/INT/BlueprintAPI/Game/Components/ProjectileMovement/SuggestProjectileVelocity/index.html">Blueprint</a>)</p>
<p>I have shooter's position <strong>Po</strong>, position of the target <strong>Pt</strong>, gravity <strong>G</strong>. I have a downward axis in the direction of <strong>G</strong>:</p>
<p><strong>Iy</strong> = normalized(<strong>G</strong>)</p>
<p>And I can calculate a front axis, and the direction of which is</p>
<p><strong>Ix</strong> = normalized(cross(<strong>G</strong>, cross(<strong>Pt-Po</strong>, <strong>G</strong>))).</p>
<p>Not that it is possible the target is directly above or below the shooter, and we need to consider the special case - but I'll assume that's not happening for now.</p>
<p>And we can now do the whole calculation in the 2D space. I have target's relative position in <strong>Ix</strong> and <strong>Iy</strong> as</p>
<p>Px = dot(<strong>Ix</strong>, <strong>Pt-Po</strong>)<br />
Py = dot(<strong>Iy</strong>, <strong>Pt-Po</strong>)<br />
g = |<strong>G</strong>|</p>
<p>And what we need is to solve for the desired initial velocity of projectile in the space of <strong>Ix</strong> and <strong>Iy</strong>: Vx and Vy, in the following system:</p>
<ul>
<li>Vx^2 + Vy^2 = s^2 (S is initial speed)</li>
<li>Vx * t = Px</li>
<li>Vy * t + g * t^2 / 2 = Py</li>
<li>Vx > 0</li>
<li>t > 0</li>
<li>(And Px, g, s should already be greater than zero if the inputs are correct)</li>
</ul>
<p>We can have the following result:</p>
<p><a href="/assets/old_uploads/2017/02/sol-1.png"><img src="/assets/old_uploads/2017/02/sol-1.png" alt="" width="298" height="230" class="alignnone size-full wp-image-1267" /></a></p>
<p>Finally we can calculate the velocity or direction of projectile we need to shoot in by</p>
<p><strong>V</strong> = Vx * <strong>Ix</strong> + Vy * <strong>Iy</strong></p>
<p>Note that there are two possible solutions. I would prefer the visual of higher arc of arrow in my game, so I'll just positive sqrt(Delta) in my case. We can prefer negative sqrt(Delta), to favor a shorter path if there is one.</p>
<p>If Delta is smaller than zero, the target is too far forward; if the things in the outer sqrt is smaller than zero, the target is too far upward. That's why I prefer my function than Unreal Engine's SuggestProjectileVelocity(), because I can alter the result (in my case Delta to zero if smaller than zero in order to try to shoot as long as the archer could - which just looks good) - and to calculate an "impact time" even if the target is far away, which would be important in the iterative method in order to hit a moving target, which can be initially out of archer's reach but moving towards the archer.</p>
<h2>Now the target has a velocity</h2>
<p>If the target at <strong>P0</strong> has a velocity <strong>Vt</strong>, we can call the function we have written above, and to calculate a projectile velocity <strong>V0</strong> and impact time t0. After that, we can get calculate a new position of the target by <strong>P1</strong> = <strong>P0</strong> + <strong>Vt</strong> * t0.</p>
<p>Then, we use <strong>P1</strong> as the new target position to calculate a new projectile velocity and <strong>V1</strong> and travel time t1, which can be better than <strong>V0</strong> and t0. And we have new arbitrary target position <strong>P2</strong> = <strong>P0</strong> + <strong>Vt</strong> * t1.</p>
<p>So, iteratively, we can calculate <strong>V[i]</strong> and t[i] from <strong>P[i]</strong> = <strong>P0</strong> + <strong>Vt</strong> * t[i-1] . If target's velocity is not large, it should converge. And after some iterations (in my case 8), the initial velocity and direction of V[i] should hit the target. We can also introduce some interpolation to help convergence:</p>
<ul>
<li><strong>P[i]</strong> = <strong>P0</strong> + <strong>Vt</strong> * lerp(t[i-2],t[i-1], alpha) . </li>
<li><strong>V[i]</strong>, t[i] = projectileVelocityForStaticTargetAt(P[i])</li>
</ul>
<p>I used alpha = 0.8 and it reduceed the iterations needed to 5 to get a stable hit in my case.</p>
<p>And this is the code in Unreal C++ for the iteration:</p>
<pre>
FVector UHelperLibrary::CalculateProjectileDirectionForMovingTarget(FVector Target, FVector TargetVelocity, FVector Origin, FVector Gravity, float Speed, bool & bWillHit, float & Time, int Iterations, float EpsilonTime)
{
if (TargetVelocity.IsNearlyZero())
{
// To hit a static target. You can also use SuggestProjectileVelocity;
return CalculateProjectileDirectionHelper(Target, Origin, Gravity, Speed, &bWillHit, &Time);
}
FVector PrevDirection;
float PrevTime = 0.0f;
float NewTime = 0.0f;
bool bHit = false;
constexpr float Alpha = 0.8f;
for (auto i = 0; i < Iterations; i++)
{
PrevTime = FMath::Lerp(PrevTime, NewTime, Alpha);
// Or use SuggestProjectileVelocity;
PrevDirection = CalculateProjectileDirectionHelper(Target + TargetVelocity * PrevTime, Origin, Gravity, Speed, &bHit, &NewTime);
if (NewTime == InfFloat)
{
bHit = false;
break;
}
if (FMath::IsNearlyEqual(NewTime, PrevTime, EpsilonTime))
{
break;
}
}
Time = NewTime;
bWillHit = bHit;
return PrevDirection;
}
</pre>
<p>And <a href="https://github.com/WindyDarian/ProjectileAimingHelper/blob/master/HelperLibrary.cpp">here is the full code</a>.</p>
<h4>References:</h4>
<ul>
<li><a href="http://www.gamasutra.com/blogs/KainShin/20090515/83954/Predictive_Aim_Mathematics_for_AI_Targeting.php">http://www.gamasutra.com/blogs/KainShin/20090515/83954/Predictive_Aim_Mathematics_for_AI_Targeting.php</a></li>
<li><a href="https://wiki.unrealengine.com/AI_aiming_for_the_lazy">https://wiki.unrealengine.com/AI_aiming_for_the_lazy</a></li>
<li><a href="https://en.wikipedia.org/wiki/Trajectory_of_a_projectile">https://en.wikipedia.org/wiki/Trajectory_of_a_projectile</a></li>
</ul>Windy DarianIn one of the prototypes I am working on recently, there are some enemy archers and I need them to be able to hit the player's character in movement. That is, knowing location and velocity of the target, the enemy archer's location and the speed of the arrow, I need to calculate a direction, or velocity for the archer to shoot the arrow. My assumption is that the arrow will subject to and only to gravity, while considering the velocity of the target when the projectile is launched. My code is an iterative method inspired by this post from Kain Shin for C++ in Unreal Engine, but I it can be easily adapted to another platform. Adding acceleration, although I haven't tried, should also work somehow using my method. This post used KINSOL library to solve the problem, but it would eliminate the cross-platform potential of my game. The third method in this post doesn't work well if the upward/downward angle is very large. Considering the fact I already have a function working for non-moving targets, I decide to adapt from the second method in this post, which is an iterative way. Simplified case: assuming target does not move It is easy to solve the equation if the target is not moving. I already had some code already working in DragonHunt (Thanks to Menglu!) to calculate direction to launch projectile, but it didn't take the movement of the target into consideration. (That is, the AI in the game needs to be smarter than that in DragonHunt XD)… Also, there is a function named SuggestProjectileVelocity in Unreal Engine that does exactly the same thing (C++, Blueprint) I have shooter's position Po, position of the target Pt, gravity G. I have a downward axis in the direction of G: Iy = normalized(G) And I can calculate a front axis, and the direction of which is Ix = normalized(cross(G, cross(Pt-Po, G))). Not that it is possible the target is directly above or below the shooter, and we need to consider the special case - but I'll assume that's not happening for now. And we can now do the whole calculation in the 2D space. I have target's relative position in Ix and Iy as Px = dot(Ix, Pt-Po) Py = dot(Iy, Pt-Po) g = |G| And what we need is to solve for the desired initial velocity of projectile in the space of Ix and Iy: Vx and Vy, in the following system: Vx^2 + Vy^2 = s^2 (S is initial speed) Vx * t = Px Vy * t + g * t^2 / 2 = Py Vx > 0 t > 0 (And Px, g, s should already be greater than zero if the inputs are correct) We can have the following result: Finally we can calculate the velocity or direction of projectile we need to shoot in by V = Vx * Ix + Vy * Iy Note that there are two possible solutions. I would prefer the visual of higher arc of arrow in my game, so I'll just positive sqrt(Delta) in my case. We can prefer negative sqrt(Delta), to favor a shorter path if there is one. If Delta is smaller than zero, the target is too far forward; if the things in the outer sqrt is smaller than zero, the target is too far upward. That's why I prefer my function than Unreal Engine's SuggestProjectileVelocity(), because I can alter the result (in my case Delta to zero if smaller than zero in order to try to shoot as long as the archer could - which just looks good) - and to calculate an "impact time" even if the target is far away, which would be important in the iterative method in order to hit a moving target, which can be initially out of archer's reach but moving towards the archer. Now the target has a velocity If the target at P0 has a velocity Vt, we can call the function we have written above, and to calculate a projectile velocity V0 and impact time t0. After that, we can get calculate a new position of the target by P1 = P0 + Vt * t0. Then, we use P1 as the new target position to calculate a new projectile velocity and V1 and travel time t1, which can be better than V0 and t0. And we have new arbitrary target position P2 = P0 + Vt * t1. So, iteratively, we can calculate V[i] and t[i] from P[i] = P0 + Vt * t[i-1] . If target's velocity is not large, it should converge. And after some iterations (in my case 8), the initial velocity and direction of V[i] should hit the target. We can also introduce some interpolation to help convergence: P[i] = P0 + Vt * lerp(t[i-2],t[i-1], alpha) . V[i], t[i] = projectileVelocityForStaticTargetAt(P[i]) I used alpha = 0.8 and it reduceed the iterations needed to 5 to get a stable hit in my case. And this is the code in Unreal C++ for the iteration: FVector UHelperLibrary::CalculateProjectileDirectionForMovingTarget(FVector Target, FVector TargetVelocity, FVector Origin, FVector Gravity, float Speed, bool & bWillHit, float & Time, int Iterations, float EpsilonTime) { if (TargetVelocity.IsNearlyZero()) { // To hit a static target. You can also use SuggestProjectileVelocity; return CalculateProjectileDirectionHelper(Target, Origin, Gravity, Speed, &bWillHit, &Time); } FVector PrevDirection; float PrevTime = 0.0f; float NewTime = 0.0f; bool bHit = false; constexpr float Alpha = 0.8f; for (auto i = 0; i And here is the full code. References: http://www.gamasutra.com/blogs/KainShin/20090515/83954/Predictive_Aim_Mathematics_for_AI_Targeting.php https://wiki.unrealengine.com/AI_aiming_for_the_lazy https://en.wikipedia.org/wiki/Trajectory_of_a_projectileVulkan Runs on My Phone yay!2016-11-01T17:57:53+00:002016-11-01T17:57:53+00:00https://windy.moe/archived/english/2016/11/01/vulkan-runs-on-my-phone-yay<p>Just tried using official samples from <a href="https://github.com/googlesamples/vulkan-basic-samples">https://github.com/googlesamples/vulkan-basic-samples</a> to build Vulkan on my shining new phone...</p>
<p>It works! But the samples are not working well with NDK 13b on my computer (strange errors when building sample modules) - solved by switching back to NDK r12b for the moment.</p>
<p>Now I can do anything with it! XD</p>
<p><a href="/assets/old_uploads/2016/11/Screenshot-from-2016-11-01-22-43-38.png"><img src="/assets/old_uploads/2016/11/Screenshot-from-2016-11-01-22-43-38.png" alt="screenshot-from-2016-11-01-22-43-38" width="1920" height="1080" class="alignnone size-full wp-image-1152" /></a></p>
<p><a href="/assets/old_uploads/2016/11/DSC012492.jpg"><img src="/assets/old_uploads/2016/11/DSC012492.jpg" alt="dsc012492" width="840" height="560" class="alignnone size-large wp-image-1153" /></a></p>Windy DarianJust tried using official samples from https://github.com/googlesamples/vulkan-basic-samples to build Vulkan on my shining new phone... It works! But the samples are not working well with NDK 13b on my computer (strange errors when building sample modules) - solved by switching back to NDK r12b for the moment. Now I can do anything with it! XDAndroid I m bak!2016-10-31T19:01:16+00:002016-10-31T19:01:16+00:00https://windy.moe/archived/english/2016/10/31/android-i-m-bak<p>[embed]https://www.youtube.com/watch?v=S7FrOMWSA_g[/embed]</p>
<p>See ya Windows Phone... Waited long and got dis blu precious... Now finally I can try to weave some mobile game prototypes and Vulkan...</p>
<p>I remembered I have developed an Android on Google Play back in 2014... And it is one of the most boring game in the world ever. Downloaded it again from Google Play and captured a video...</p>
<p>I don't think you want to try it out at <a href="https://play.google.com/store/apps/details?id=com.windydarian.countsheep">https://play.google.com/store/apps/details?id=com.windydarian.countsheep</a></p>Windy Darian[embed]https://www.youtube.com/watch?v=S7FrOMWSA_g[/embed] See ya Windows Phone... Waited long and got dis blu precious... Now finally I can try to weave some mobile game prototypes and Vulkan... I remembered I have developed an Android on Google Play back in 2014... And it is one of the most boring game in the world ever. Downloaded it again from Google Play and captured a video... I don't think you want to try it out at https://play.google.com/store/apps/details?id=com.windydarian.countsheepAR Paint Ball2016-10-31T18:54:50+00:002016-10-31T18:54:50+00:00https://windy.moe/archived/english/2016/10/31/ar-paint-ball<p>[embed]https://www.youtube.com/watch?v=lsZNX70xJhs[/embed]</p>
<p>Teaching assistant is a tough job..</p>
<p>And the video above is an AR assignment basecode/demo I created as teaching assistant for CIS568-Game Design Practicum at UPenn. The concept is use the phone as a paint gun and PC screen as canvas. I used Vuforia AR plugin and Photon networking plugin with Unity, and combined inputs from camera and gyroscope.</p>Windy Darian[embed]https://www.youtube.com/watch?v=lsZNX70xJhs[/embed] Teaching assistant is a tough job.. And the video above is an AR assignment basecode/demo I created as teaching assistant for CIS568-Game Design Practicum at UPenn. The concept is use the phone as a paint gun and PC screen as canvas. I used Vuforia AR plugin and Photon networking plugin with Unity, and combined inputs from camera and gyroscope.Tried Unreal Editor with HTC Vive2016-06-26T11:58:39+00:002016-06-26T11:58:39+00:00https://windy.moe/archived/english/2016/06/26/tried-unreal-editor-with-htc-vive<p>Got an HTC Vive. Tried with Unreal Editor. So good. I tried to take some screenshots but no screenshot can express it.</p>
<p><a href="/assets/old_uploads/2016/06/Untitled-714008.png"><img src="/assets/old_uploads/2016/06/Untitled-714008-1024x576.png" alt="Untitled [714008]" width="840" height="473" class="alignnone size-large wp-image-1096" /></a></p>
<p>Also Tilt Brush!!!</p>Windy DarianGot an HTC Vive. Tried with Unreal Editor. So good. I tried to take some screenshots but no screenshot can express it. Also Tilt Brush!!!Starting a new game project - Siren’s Aria2016-04-09T19:32:18+00:002016-04-09T19:32:18+00:00https://windy.moe/archived/english/%E4%BD%9C%E5%93%81/creations/2016/04/09/starting-a-new-game-project-sirens-aria<p>Participated in a game jam hosted in the university (PennPlay 2016) last week.</p>
<p>The theme was time, so we built an top-down shooter arena using Unreal Engine where both player can rewind the time of their character and bullets. (Darren designed the game!)</p>
<p>The name of this game is Re:Wind. Got an Editor's Choice award. Thanks Nicole!</p>
<p><a href="/assets/old_uploads/2016/04/20160403115109_1.jpg" rel="attachment wp-att-1063"><img src="/assets/old_uploads/2016/04/20160403115109_1-1024x640.jpg" alt="20160403115109_1" width="840" height="525" class="alignnone size-large wp-image-1063" /></a></p>
<p><a href="/assets/old_uploads/2016/04/title.jpg" rel="attachment wp-att-1064"><img src="/assets/old_uploads/2016/04/title-1024x568.jpg" alt="title" width="840" height="466" class="alignnone size-large wp-image-1064" /></a></p>
<p>Anyway, I am starting a new project for the game design (and programming) course. And we will be using Oculus Rift and LeapMotion controller. The prototype will be open source at <a href="https://github.com/WindyDarian/SirensAria">https://github.com/WindyDarian/SirensAria</a>.</p>
<p>The name will be <strong>"Siren's Aria"</strong>.</p>Windy DarianParticipated in a game jam hosted in the university (PennPlay 2016) last week. The theme was time, so we built an top-down shooter arena using Unreal Engine where both player can rewind the time of their character and bullets. (Darren designed the game!) The name of this game is Re:Wind. Got an Editor's Choice award. Thanks Nicole! Anyway, I am starting a new project for the game design (and programming) course. And we will be using Oculus Rift and LeapMotion controller. The prototype will be open source at https://github.com/WindyDarian/SirensAria. The name will be "Siren's Aria".A Dragon!2016-03-21T04:58:01+00:002016-03-21T04:58:01+00:00https://windy.moe/archived/english/2016/03/21/a-dragon<p>[embed]https://www.youtube.com/watch?v=-fuUxWwR494[/embed]</p>
<p>ooooooooooooooooooooooo<br />
It is for the game DragonHunt we are developing as a course project</p>
<p>Update:<br />
Animated and textured the model (roughly). And used in this: <a href="https://www.youtube.com/watch?v=xo7S7od-mmE">https://www.youtube.com/watch?v=xo7S7od-mmE</a> (or check it out at https://windy.moe/portfolio/ )</p>
<p><iframe width="640" height="480" src="https://sketchfab.com/models/6df6cdce80614f72a5dd926106059e75/embed" frameborder="0" allowfullscreen mozallowfullscreen="true" webkitallowfullscreen="true" onmousewheel=""></iframe></p>
<p style="font-size: 13px; font-weight: normal; margin: 5px; color: #4A4A4A;">
<a href="https://sketchfab.com/models/6df6cdce80614f72a5dd926106059e75?utm_medium=embed&utm_source=website&utm_campain=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">Dragon</a><br />
by <a href="https://sketchfab.com/windy?utm_medium=embed&utm_source=website&utm_campain=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">windy</a><br />
on <a href="https://sketchfab.com?utm_medium=embed&utm_source=website&utm_campain=share-popup" target="_blank" style="font-weight: bold; color: #1CAAD9;">Sketchfab</a></p>Windy Darian[embed]https://www.youtube.com/watch?v=-fuUxWwR494[/embed] ooooooooooooooooooooooo It is for the game DragonHunt we are developing as a course project Update: Animated and textured the model (roughly). And used in this: https://www.youtube.com/watch?v=xo7S7od-mmE (or check it out at https://windy.moe/portfolio/ ) Dragon by windy on SketchfabGoing to school feels like…2016-03-05T14:44:18+00:002016-03-05T14:44:18+00:00https://windy.moe/archived/english/%E4%BD%9C%E5%93%81/creations/2016/03/05/going-to-school-feels-like<p>[embed]https://www.youtube.com/watch?v=FiDehn2i4NA[/embed]</p>
<p>Wind is blowing.<br />
The snow hit you in your face.<br />
Though you may not be able to feel it,<br />
It is cold.</p>
<p>And you are alone on the way.</p>
<p>But don't worry.<br />
Maybe if you pass the canyon,<br />
You will see the castle.</p>
<p>(An interactive environment created using Unreal Engine. Still a work-in-progress. May introduce VR later.)</p>
<p>[gallery columns="4" ids="976,977,978,979"]</p>Windy Darian[embed]https://www.youtube.com/watch?v=FiDehn2i4NA[/embed] Wind is blowing. The snow hit you in your face. Though you may not be able to feel it, It is cold. And you are alone on the way. But don't worry. Maybe if you pass the canyon, You will see the castle. (An interactive environment created using Unreal Engine. Still a work-in-progress. May introduce VR later.) [gallery columns="4" ids="976,977,978,979"]A multiplayer dragon simulator (?)2016-02-24T18:29:14+00:002016-02-24T18:29:14+00:00https://windy.moe/archived/english/%E4%BD%9C%E5%93%81/creations/2016/02/24/a-multiplayer-dragon-simulator<p>[embed]https://youtu.be/oUYUN5vUBEw[/embed]</p>
<p><a href="/assets/old_uploads/2016/02/2016-02-24_00002.jpg" rel="attachment wp-att-938"><img class="alignnone size-large wp-image-938" src="/assets/old_uploads/2016/02/2016-02-24_00002-1024x576.jpg" alt="2016-02-24_00002" width="840" height="473" /></a></p>
<p><a href="/assets/old_uploads/2016/02/2016-02-24_00005.jpg" rel="attachment wp-att-939"><img class="alignnone size-large wp-image-939" src="/assets/old_uploads/2016/02/2016-02-24_00005-1024x576.jpg" alt="2016-02-24_00005" width="840" height="473" /></a></p>
<p><a href="/assets/old_uploads/2016/02/2016-02-24_00007.jpg" rel="attachment wp-att-940"><img class="alignnone size-large wp-image-940" src="/assets/old_uploads/2016/02/2016-02-24_00007-1024x576.jpg" alt="2016-02-24_00007" width="840" height="473" /></a></p>
<p><a href="/assets/old_uploads/2016/02/2016-02-24_00008.jpg" rel="attachment wp-att-941"><img class="alignnone size-large wp-image-941" src="/assets/old_uploads/2016/02/2016-02-24_00008-1024x576.jpg" alt="2016-02-24_00008" width="840" height="473" /></a></p>
<p><a href="/assets/old_uploads/2016/02/2016-02-24_00009.jpg" rel="attachment wp-att-942"><img class="alignnone size-large wp-image-942" src="/assets/old_uploads/2016/02/2016-02-24_00009-1024x576.jpg" alt="2016-02-24_00009" width="840" height="473" /></a></p>
<p>Yay! So that is the prototype of prototype for our school work game! Using Unreal Engine and Steam API...</p>
<p>Credits to Xueyin, Menglu, Windy!</p>
<p>啊那个坑……有朝一日会填满的……</p>Windy Darian[embed]https://youtu.be/oUYUN5vUBEw[/embed] Yay! So that is the prototype of prototype for our school work game! Using Unreal Engine and Steam API... Credits to Xueyin, Menglu, Windy! 啊那个坑……有朝一日会填满的……