Jump to content
  • Advertisement
  • You can syndicate your blog to the GameDev.net community.
    Learn how here.

Blogs

Check out this VR game I am working on as Sound Designer, and try it for free !!!

Hi ! I would like to share this VIRTUAL REALITY game I am working on right now ! PriVRateer is a breathtaking space ship battle game that you can play alone or with friends ! A beta testing version is available for free (see bellow): Here is where you can download and play the game: https://discordapp.com/invite/Wt8MkJ7 Don't forget to check out my website and subscribe to my newsletter to get some really cool free sounds all along the year: www.ogsoundfx.com And also check out my Patreon page and see all the goodies you could get all the while helping me out: https://www.patreon.com/ogsoundfx

Olivier Girardot

Olivier Girardot

 

A Tale of Five Engines: Or How to Pick a Game Engine

Guest Blog: Musume  A Tale of Five Engines
Hi. My name is Rez, and I’m developing a side-scrolling action platformer named Musume.  Before you go much further into this blog, I want you to visit my game’s website and see what I’m doing: www.musumethegame.com, and I want you to do this for two reasons:  1. I promote my game absolutely every chance I get. If you’re a game dev, you should be doing the same.  2. This blog will make a lot more sense when you see the game I am making.  So go ahead. This blog will be here when you get back.  … Did you visit it? Good.  I’m going to tell you which commercially available game engine I’m using to make this game, and why. It will take us five engines to get there. By the end, I hope that my experiences will help you pick the best engine for your project.  Ready? Here we go! RPG Maker MV I began my game dev journey about eighteen months ago by buying RPG Maker MV on Steam. At $70, it seemed like an extravagant purchase, but I had always wanted to make a video game, and it seemed like the best way for a complete beginner like me. I had tried to make a game with RPG Maker on my PlayStation 2 a long, long time ago, but made zero progress then. Older and wiser, I figured I could do better now.  I now laugh at the idea that I thought $70 was a lot of money to make a game. I have spent a whole lot more in getting Musume made since then.  $70 is an absolute bargain when you see everything that RPG Maker MV gives you. You have a character creator, enemies, music, and tiles to create towns, overworlds, and dungeons. No other engine (at least from the ones I tried) give you literally all the resources you need to make a complete game.  And make no mistake, RPG Maker MV (and the whole RPG Maker series) is an engine. It is a framework that you can use to build your game. There are thousands of RPG Maker-made games on the market, and most of them look the same because the devs all use the packed-in assets.  But you don’t have to do that. You can import your own art and music. You can also learn JavaScript, MV’s underlying programming language, and tweak the engine until you create something truly unique. It’s a great place to start learning game development.  So why did I abandon it?  Because RPG Maker MV (and every single RPG Maker that came before it) is designed to create one specific type of game: a top-down, turn-based RPG. And I wanted to make something else.  I wanted to go 3-D.  Unity  After I decided that RPG Maker wasn’t going to cut it, I started looking around for something else. I still didn’t know much about game engines, but I did know that one name kept popping up over and over: Unity. I figured I had to check it out.  As it turned out, Unity is by far the most popular game engine on the planet among independent game developers, and for a very good reason: it’s free.  Well, there are some strings attached. However, if you’re reading this on a computer, you can – right now – download Unity for zero dollars. You can then use it to create a commercial game, and as long as that game doesn’t generate more than $100,000 in sales, or your studio doesn’t generate more than $100,000 in funding, every penny you make is yours to keep (minus royalties to places like Steam, of course). Exceed that limit, and you have to either pay for Unity Plus (a reasonable $25-$35 a month) or Unity Pro (an absurdly expensive $125 a month).  If you want, you can get one of the paid plans right off the bat; they come with extra features missing from the base version. Just remember, though: once you commit to a paid version of Unity, you are on the hook for a year. Use it for three months and then cancel? You still owe for the rest of the year, and Unity will get their money, even if you cancel the card you’re using to pay. Needless to say, I got the free version. And I’m glad I did, because Unity and I do not get along.  Unity provides free tutorials. YouTube is full of free tutorials. Udemy has very good paid tutorials, at very reasonable prices. None of that mattered for me.  The fact is, going from a beginner-friendly engine like RPG Maker MV to Unity was like going from a go-kart to a Formula 1 car. The learning curve was just too steep, and I couldn’t wrap my head around how to make things happen in this engine. It wasn’t for lack of trying, mind you; I bought and read books on C# (the programming language Unity uses), I did tutorials, and I stayed up until 3-4 in the morning some days, trying to make something happen. No dice.  But then, I learned about Unity’s biggest rival: Unreal Engine.  Unreal Engine  Unreal Engine (UE) is the brainchild of Gears of War and Fortnite developer Epic Games, and is currently on its fourth iteration. It gets its name because it is a descendant of the engine used to create Unreal, Epic’s hit first-person shooter that came out in the late 90s.  Growing up, I had read about UE’s enormous power and thought that a mortal like me would never be able to touch it. Even after I got into game development, I just assumed that an Unreal license cost thousands of dollars a year. But after making no progress with Unity, I decided to check it out. How much, I wondered, does it cost to use Unreal Engine?  As it turns out, it doesn’t cost anything.  Unreal Engine is completely free. There are no subscription plans. You owe a 5% royalty to Epic for all sales above $3,000, but that’s it.  Once upon a time, Epic waived the royalty fee if you published to the Epic store, but that seems to have gone away.  Unreal Engine is also, on the surface, incredibly beginner-friendly. UE comes with something called “Blueprints”, templates for all kinds of games that you can use to jump-start your own development.  This sounded like a match made in heaven. I immediately downloaded UE.  And after struggling with it for a while, I gave up.  I had the same issue with UE as I did with Unity: the learning curve was just too steep for a beginner. This isn’t the engine’s fault – games are complex pieces of software, and they require complex tools – but it was far more than I was ready to handle. So, with much regret, I gave up, and looked for something else.  Gamemaker Studio 2 In my search, I found what finally seemed like the perfect match: Gamemaker Studio 2.  GameMaker Studio 2 (GMS2) is the “sequel” to GameMaker Studio, a hugely popular game engine that is tailored for 2-D games and designed to be easy to use. A license costs $99, but like with most engines, there is a free version available that you can use to see if it is right for you. This version is super-limited and you can’t make commercial games with it, but it’s a great way to get a taste without spending the money.  Yes, I originally wanted to make the game in 3D. But after banging my head against the wall with both Unity and Unreal Engine, I was more than willing to compromise.  GMS2 is basically a dumbed-down version of Unity, and for someone like me, that was perfect. The layout is similar, but the tools are easier to access and use, and the programming language was developed with beginners in mind.  GMS2 uses a proprietary programming language called Gamemaker Language (GML). This language is a simplified version of object-oriented languages like C# and C++, with enough wiggle room built in that you can write successful code even if you are (like me) a ham-fisted programmer.  GMS2 is where I first started having success in development. I learned how layers worked and how objects interacted with each other. I made real progress with GML, learning how to code fairly complex functions. It was good.  But it was still too hard.  Here’s my problem. I am a grown adult with a full-time job, spouse, and children. I have very little free time.  I am also not a natural programmer. It can take me weeks to learn and understand something in coding that may take a more gifted programmer only hours to learn.  Combine this lack of free time with the need to learn a simplified but still complex tool, and you have a recipe for frustration. And while I was finally able to get the game up and running (you can see the results in some of the videos on the website), development was still painfully slow, because I was having an extremely difficult time learning GML. It just wasn’t getting through.  So I finally caved and did something that, at the beginning of my game engine search, I swore I would never do: use a visual coding engine.  Construct 3  “Visual coding” is the buzzword around a lot of new game engines. More and more engines are hitting the market, promising you the ability to make a game without writing a single line of code. Construct 3 is one of the most popular.  Visual coding usually consists of connecting boxes or nodes that represent blocks of code. The idea is that you can link actions together without worrying about obscure language or syntax issues.  Construct 3 is the latest engine in the Construct line. It works entirely in your browser. And at $100 a year for the subscription, it is by far the most expensive of all the engines I’ve tried (other than BuildBox, but that’s a story worth a whole blog entry unto itself).  It is also stunningly easy to use, although I struggled with it a bit at first.  The interface is extremely intuitive. You basically create game objects, and assign them actions based on options in a variety of drop-down menus. With a little practice, you’re off and running. It takes me hours to do in Construct what it would take me days or weeks in GMS2.  The biggest time-savers are the behaviors. Construct 3 enables you to add common platforming behaviors to your game. Things like basic controls, jump-through platforms, and bullets are templated in: you just have to tweak them to make them your own. For someone like me – who, in addition to coding, has to do just about everything else for the game except draw and compose music – this is perfect. It enables me to be as productive as possible with the limited amount of time I have. The learning curve is much flatter here.  I said above that I didn’t originally want to learn a VC engine, and this is true. I wanted to learn to code and become a “real” programmer.  However, I didn’t start this just to learn how to program. I did it in order to make a video game. Construct 3 is enabling me to do that much faster than any other engine I’ve tried. And for that reason, it is currently my engine of choice. 
The post A Tale of Five Engines: Or How to Pick a Game Engine appeared first on Gilded Octopus.
View the full article
 

Week #4

week #4 fly by, time its running out and the progress for this week was making the first enemy, the first weapon and the basic health gui, of curse this is not the final art. i must work harder in order to keep up with my schedule and finish on time!! 😓

Adrian HS

Adrian HS

Dev Diary #039 - Upscaling Heightmaps

Hello and welcome to this weeks Dev Diary! This week I will be showing some comparisons on how upscaling heightmaps effect them and what potential gains that might have for the developer. First though, a tiny report concerning my PC; I re-installed my Windows 10 to see if that would reduce the crashes I have been experiencing. So far, there has been only one BSOD during night, after the computer had been on for 3 days straight. Previously my computer crashed at more irregular intervals, sometimes even after 24 hours and the next few days stay up just fine for 4 or 5 days. It is clear though, that despite running DISM and SFC after every crash, there were some corrupt files that were causing the more sudden crashes.   The Theory Behind The Practice The theory behind the upscaling of the heightmaps was, that since most re-scaling algorithms add some details to the file, as they try to retain the details of the original file, upscaling heightmaps with certain algorithms should add granularity to the image, thus making the elevations smoother. This in turn should reduce the need for tweaking the 3D model after the heightmap has been used for it. The below examples share the same settings, that are; Plane 8m x 8m in size. Subdivided several times, first by 100, second by 6 and third by 1. Static light source - the lighting was unchanged between renders. Static camera - the camera remained stationary and settings unchanged between renders. Displacement effect scaled down to 0.1333 Above is the 3000 x 3000 pixel heightmap and below is the 12000 x 12000 pixel heightmap. The difference is really subtle when compared to such a large area, as the covered area if the heightmaps are about 4 square kilometers. The differnece becomes more apparent when you scale down the area, as seen below; Above is the 750 x 750 pixel heightmap, taken from the original 3000 x 3000 pixel heightmap. Below is the 3000 x 3000 pixel heightmap, taken from the upscaled 12000 x 12000 heightmap. As you can see from the above pictures, there is noticeably more detail on the higher resolution heightmap, as there are much more height differences, due to more graduation in the heightmap image. It seems like lighting changed a bit, but in truth, those are extra bumps in the terrain. The effects of upscaling the heightmap could still be much more visible, if the sample image used for diffusion were even smaller. I'll try upscaling the heightmap even more in the future, and see where the differences become not worth the hasle, but it might well be, that depending on how much detail you want to have in the 3D mesh, there is no upper limit. At least when using a decent quality source for the heightmap.   The Raw Images It wouldn't be so educational without the source image examples, now wouldn't it? Here are the side-by-side comparison images from the bottom left corner of the upscaled heightmap; As you can see, the differences are must harder to spot from the sample images. The only clear difference is, when you compare the "Nearest Neighbor" with any other method of upscaling the image. I personally like the results of the "Preserve Detail V2" without the noise reduction effects, which makes the road tracks quite clear also.   Conclusion This is but one example of how testing different solutions can bring benefits to developers, be it a beginner or a pro. Even when graphical designers often say, that upscaling regular images in conventional ways is not a wise thing to do (for a good reason), it depends highly on the application you need the upscaled image for. Hopefully this was beneficial to some of you. Thank you for tuning in, and I'll see you on the next one! You can check out every possible mid week announcements about the project on these official channels; • YouTube • Facebook • Twitter • Discord • Reddit • Pinterest • SoundCloud • LinkedIn •

ProjectTaival

ProjectTaival

Gameplay Fragment’s Moonrise | #24 The Souls of the Lesser Dragons, Part 2

Welcome to our twenty-fourth blog post!   In the last blog post, we went over our latest boss fight, the Souls of the Lesser Dragons. This fight has proven to be a significantly more difficult challenge than prior- totaling multiple hours of attempts, this boss has greatly heightened our sense of understanding when it comes to the mechanics of this game. You may have noticed in the previous blog’s video- we didn’t actually slay the boss. Yes, the boss proved too much a challenge, even for us. However, we know the fight is plausible. You can slay these bosses with the tools given to you. And the video above proves it. The intricacies of this fight are quite spectacular, and harp back to one of our core design principles: the difficulty of a fight such as this should stay consistent throughout the fight. In this project, our goal is to have more bosses similar to this. That is, instead of fighting just one lone beast (which can be a good boss design, but not our core boss design), we want the player to essentially be clashing their army against the enemy’s. One critical element to that is, that, as the opponent’s army begins to fade away… does the challenge snowball in the Player’s favor? Or must the Player continue to fight and fight and fight all the way through? Our desire is the latter- you must be prepared for a challenge, a challenge that lasts until the last foe falls. Preferably, increasing with difficulty. In this particular fight, we’ve truly proven to at least ourselves that this is the case. Each stage of the fight is equally as intricate and dynamic as the last, an equivalent challenge all around. So let’s go into each phase, and what makes them so special.   The Soul of the Lesser Dragon of Lightning is simple, but the timing is fairly precise. What you’re after is to Fear away the other two dragons at the same time so that you can quickly burst down the SotL Lightning Dragon. Timing is key- you cannot deal with more than just the SotL Lightning Dragon at a given moment, and you only have a short window, but with Mystic Energy, you’ll have enough time to kill it before the Fear status ailments end, and the SotL Flame and Frost are back upon you. The SotL Lightning Dragon’s health regeneration means you’ll need to not delay too long, else it will return to full HP. So you can’t have your focus averted- you’ll need all your warriors locked onto the SotL Lightning Dragon, not on dodging the spells of the other two assailants. Initially, the most devastating dragon is the SotL Lightning Dragon. This is primarily due to the fact that it invokes repeating damage, given how fast its spell can be cast, and the fact that it essentially can’t be dodged. It will quickly cut the health of our warriors, so that is why we must defeat it first.   There are two spells crucial to this next part of the fight. The Soul of the Lesser Dragon of Flame has some timings that are fairly critical to hit, else it just becomes a boss that kills off all your warriors without you even able to do a thing. The first revolves around our core spell, Fear. Fearing the SotL Frost Dragon is inherently the best move- we don’t want to deal with its frost freezing us in place; the stun of the SotL Flame Dragon is bad enough already. With a quick Fear, the SotL Frost Dragon is out of the fight, and we can focus on step 2. In this next part, we need to ensure our Apprentice of Nature is primed. While keeping the SotL Flame Dragon from moving around too much, we need the Apprentice of Nature to invoke its primary status ailment: Spell Deprivation. This fully prevents the target from casting any spells for a short moment. Which is key for the fight: the SotL Flame Dragon has some devastating spells, but it is worthless while unable to attack. Controlling the SotL Flame Dragon from moving around too much is very important- we need to minimize our movement so that when the Apprentice of Nature’s spell is cast, it actually hits the target and invokes the ailment. Now, with all steps in place, we can begin our engagement. In this, we repeatedly cast our Mystic Energy upon the Dragon. When the Fear and Spell Deprivation wear off, we retreat, and when they are ready again, we re-cast, and repeat. Timing is critical here. Given that the SotL Flame Dragon has no health regeneration, and the fact that its only way of regenerating health is if we accidentally hit the SotL Frost Dragon, we must carefully take our time here and pick the best shots. In this stage, bursting the Dragon down like we did the SotL Lightning Dragon will have negative effects- this being that our mana is very, very important right now. We do not want to be missing our shots, so timing our spellcasts so that they hit the Dragon while its not moving is of critical importance. Else, we’ll run out of mana mid-fight with the SotL Frost Dragon and end up dying as a result.   With the other two Dragons defeated, we have but one task remaining. But this will be no easy task. While you may think that, since the other Dragons are dead, that the fight is ours for the taking. But that is not the case- the SotL Frost Dragon will not go down without a fight. The primary concern with the SotL Frost Dragon is in regards to its health regeneration- its base regen is already excellent, but its healing spell is truly terrifying. We’ll need to be quick, to be able to strike it before it can cast it again. We only have less than a minute to pull this off.   With this fight, we can re-use strategies of prior. That is mainly revolving around spreading out our warriors so that the damage spread is minimized, and keeping our spellcasts up. The SotL Frost Dragon likes to move around, way more than the SotL Flame Dragon due to the fact that the Frost’s spells are closer range (and thus it must move to get within range to cast its spell). So surrounding is the best strategy- our spells are not quick enough to catch up to the speed of the Frost. But if we surround it, it will not move nearly as much (since it will already be in range). We quite enjoyed this boss fight, and the numerous amount of attempts required just to defeat it. Its a fairly hard boss, but it taught us quite a bit about the game’s mechanics, and we hope to develop more, similar, harder bosses in the future! Hopefully bringing out even more of the “army versus army” feel that we currently have going on this one. ---   Thank you for viewing our post! Support and interest for the project has been rapidly growing ever since we began posting here, and we're incredibly grateful for all the wonderful feedback so far! We hope this project interests you as much as we love developing for it, and please look forward to more updates coming in the very near future! If you’re brand new, consider checking out our trailer and overall description of the game here.

Yyanthire Studio

Yyanthire Studio

 

Devlog #5

Hi everyone,   This week I managed to get a lot done, I finished up play testing region 4 and the entirety of region 5, including to boss, which on a side note was an absolute pain in the original form that I had to cut down significantly. It was also VERY buggy :). This week My hope is to play test the final region and get all the builds made for release.   were closing in on the end folks!   Have a great day, Buttercreeper6

Timeline Games

Timeline Games

Hit Scanning!

I found a free slot this evening to sit down and implement a hit scanning routine for the engine.
As a precursor step I had to implement a spatial hashing data structure to store all the objects in the world in while providing fast overlap detection. For my hit scanning routine I ray march along the ray in question looking at all of the map cells and checking if any objects were hashed into them.  Any object was, then it gets clipped against the level geometry, as well as tested for distance from the ray.  If its completely clipped or too far from the ray it gets discarded. Finally the closest of all the remaining objects is returned. As you can see from the video below, it seems to be working okay in most situations, so I don't expect to need to change my approach much.
You can see a debug visualization of the spatial hash debug drawn in the top left corner of the window. Next task is either monster sprite animations or particles and blood spray.  

BitHack

BitHack

🎮 Bugs BE GONE - Indie Game Devlog #6 🎮

▼ Watch the Devlog on YouTube ▼ ▲ Watch the Devlog on YouTube ▲   Hey everyone! I recently started the development of N.E.S.T, an action-packed, looter-shooter mobile game, and have been logging the progress through videos on YouTube every week! You can view the full playlist here. I would greatly appreciate if you could support the development of this game by subscribing to me on YouTube here, or by following me on itch.io here. Thanks for your time, and hope to see you all there! 

Daniel Lochner

Daniel Lochner

 

Do the unexpected. Try the new thing out.Trust yourself. Be willing to fail!

It's amazing how much a change in our attitude and mindset towards fear can alter literally everything. Game development can be a lot of looking into the unknown and fearing the decision you have taken is the right one.      There's the fantasy football draft board from my main league this year. I got into it a little later than most of my friends, and I've always felt like I've had to play catch-up with their knowledge of players as well as the dynamics at play. You can see my team with a thick border around it - I went third this year.   If you've never played fantasy football before, every round you get to pick a player to add to your roster. We start at the top left and follow a snake pattern. If you went first in round 1, you will go last in round 2, etc.     What this means is it's not only about your knowledge of the players/teams/schedule, etc. But it's also a matter of looking at what other people are doing.   - What position is everyone else going for? - Will that player be available that round? - Is he/she going to take my pick?!   Plus, there's always the moments when someone makes a bad pick or didn't know this player was out for a few games. We're friends, so it's fine when we give each other a hard time (definitely a big part of the fun) - but I'm surprised how often in business and in our lives we're focused on what everyone else is doing and what they would do in our situation.   So this year, I made a plan, trusted my gut and used my instincts. Instincts in business and development is a simple way of saying “I trusted the accumulated knowledge and experience I have accumulated over the years to make this decision”.     Back to my Fantasy Football team; positions are worth more than others in most leagues, but our scoring makes Defenses and Tight Ends potentially very valuable. There are only a couple of players worth getting at those positions every year (in my opinion), so I decided to target those positions specifically.     And when I did, look at what happened. Everyone else began snatching those positions after I went for them first - you can see the picks of the same position by color. Right after I made my pick, the rest of the "worthwhile" players at the position were very quickly gone.   I had decided before the draft what position I was going for in each round. Everyone groaned when I went for Travis Kelce and the Bears Defense, but then they reacted to (and even emulated!) my picks.   Going for a Tight End in the third round is traditionally, a bad move. And a Defense in the seventh? Ridiculous! Sure, other teams were able to get good or ok players, but I got the best at two different slots on my team.   I had given serious thought towards my strategy and was confident in it because I knew why I was making the "ridiculous" picks. 
  Because of my willingness to use a bold strategy, I forced other teams to react to me instead of me reacting to them.   At the end of this draft, my team ended up receiving the highest score on every rating service we checked. While anything can happen this season, I'm in a great spot.   Now I'm not trying to say you should have exclusively individual ideas that you just know are awesome. Quite the opposite - you should definitely run your ideas by others and consider their input voraciously, especially if they have years on you. All of it informs what you do and why.   And while it's easy to say "take risks!", putting it into practice can be far more difficult. It's one thing to take risk in a fantasy football league - quite another to add risk to your professional, business, and personal lives.   But if we are willing to be as bold and purposeful in the rest of our lives as we are in fantasy, Halo, or poker, we would "win" a lot more.   Noone's approached game audio the way Unlock is - but being confident in our research and the reasons why it's a better option for indie and mid-level teams is a huge part of why we're doing it!   Don't discount your thought process, strategy, and instinct. There's a reason you're doing what you do.

Be sure to check out Unlock Audio and grab some free stuff. Want to reach out? hello@unlockaudio.com

Unlock Audio

Unlock Audio

 

Graphics Programming weekly - Issue 100 — September 29, 2019

Strand-based Hair Rendering in Frostbite the presentation shows the new WIP hair rendering system a realtime system that is based on hair stands instead of cards strands are rasterized into shadow and deep opacity maps for performance reasons, a visibility buffer is written, and a sample deduplication pass is applied shading is done in a screen space pass shows how the different shading components have been implemented pptx archive wayback-archive Local linear models and guided filtering – an alternative to bilateral filter the article presents guided filtering as an alternative to a bilateral filter explains the bilateral filter logic and compares against guided filtering showing what the strengths and weaknesses of both approaches are wayback-archive PIX 1909.23 – New timing capture features, performance improvements and bug fixes the new PIX CPU timeline view shows when a thread context switch happened and to where optimized shader access tracking, significant speedup when opening the pipeline view wayback-archive Ray Tracing Denoising overview of denoising techniques in raytracing applications covering sampling and signal processing techniques additionally covers blurring kernels and spatial reprojection techniques wayback-archive Jobs Senior or Lead Graphics Programmer (Helsinki, Finland) Ubisoft RedLynx is a multiplatform game development studio located in Helsinki. Along with the hugely popular Trials series, we have developed and published more than 100 games and we are a passionate team of over 140 people of 21 different nationalities. We are seeking an experienced Graphics Programmer to join our core technology team in creating impactful game experiences Would you like to advertise your job openings here too? More information How powerful can WebGL be in comparison with native OpenGL? performance comparison of a ray tracer application using native OpenGL against WebGL (Chrome, Firefox) The GPU performance is comparable on the D3D backend, even better at times wayback-archive Custom Render Pipeline Taking Control of Rendering Unity tutorial showing how to set up a custom render pipeline covering how to set up the project cull, filter, and sort objects add support for multiple cameras
wayback-archive [Video] DirectX Raytracing: Real-Time Denoised Raytraced Ambient Occlusion overview video for the new DirectX Raytracing sample, showing a Raytraced Ambient Occlusion implementation Technically Art: Issue 36 (27.09.2019) collection of tweets related to VFX, shaders, and game art wayback-archive Multi-resolution Ocean Rendering in Crest Ocean System [280 MB pptx] provides an overview of the ocean rendering system the system is based around hierarchical, fully dynamic ocean data sources shows how to model waves, integrate shading and realistic flow patterns wayback-archive Thanks to Spencer Sherk for support of this series. Would you like to see your name here too? Become a Patreon of this series.
Read more

jendrikillner

jendrikillner

 

Gameplay Xilvan Design's Games coming in 2019-2020!

Hi everybody from Gamedev.net, Us, Xilvan Design is building 2D & 3D games in Blitz3D, we are now showing to you our kindly official gaming related pages. - The Xilvan Design Website - (please click on each links, download games & bookmark the pages): Lights of Dreams IV: Far Above the Clouds v14.17. Candy World II: Another Golden Bones v20.75. Candy Racing Cup: The Lillians Rallies v7.47. Candy World Adventures IV: The Mirages of Starfield v12.07. Candy to the Rescue IV: The Scepter of Thunders v15.07. Candy's Space Adventures: The Messages from the Lillians v25.47. Candy's Space Mysteries II: New Mission on the earth-likes Planets v15.17. -"Firstly, I removed many bugs caused by Noopy's Ball in Candy World II v20.75. In Candy to the Rescue IV v15.07 & Candy's Space Adventures v25.47, I've verified everything related to the Lighthouse, the Windmill & the great Trees. Now the ball appear at the respective place in front of Noopy or Candy. In Lights of Dreams v14.17 I fixed the turning of the character Xylvan & many more. Now the grass is lower in order to give a better monster visibility." -"Secondly, I fixed the turning around bug in every game, except in Lights of Dreams IV. In this one, every monsters have a new color. I fixed the side of every teleporting & pet switching during a game." -"Thirdly, I changed the installers of each games like Candy World II, Candy World Adventures IV, Candy to the Rescue IV & Candy Racing Cup. Now the logo in each games are showing in each step of the installation process. I finally got my Candy World Adventures IV v12.07 installer for all my fans. Our games are free for the moment!" -"Fourthly, I fixed the colors of the ambient lights, adjusted the starlight coming from Galaxies, now the dogs may Walk, Run, Jump, Fly together, Grab bones, Pastries, Golden Bones, Hearts, Crystals, attack with freesbies. In Candy's Space Adventures, I fixed the far away galaxies, the stars, the planets, all asteroids are present, comets may be destroyable just like the evil ufos. Around the planet, It may have sattellites & healing stations." -"Fifthly, I've found a new grass textures for my 3D games including Candy World II, Candy to the Rescue IV, Candy Racing Cup, Candy's Space Adventures, Candy's Space Mysteries II & Lights of Dreams IV. Now these game are playable & more challengeous." -"Sixtly, it will be possible to edit all the levels of the game since Candy World Adventures IV v10.07. All 28 levels and 8 more in the future. Now, Noopy will do more animation than in v9.47. In v10.37, I've also Added two more colors for the buttons: An Orange & a Yellow one. Since v11.07, the butterflies have more possibilities of colors. Now, the game is ready to be tested by you in v11.57, because, for the moment, the install work great." -"Sevently, I Want to continue Candy Racing Cup: The Lillians Rallies, then I've just changed the camera type. I want to add more circuits, characters & cars. Now, there's no more accident in the demo caused by collisions. The cloud may now change of lightening. I changed the cars' reflection of lights & added butterflies of all colors. In next versions, I want environment mapping applyed on the cars, maybe I'll add more worlds to explore, more cars & more characters." -"In conclusion, In the near future, I'm up to create a whole new Spatial Mode in Lights of Dreams V.  New Space travel possibilities will be available before 2020 in our games. In v14.17, I changed the leaves around the colomns buildings. Now they're altmost all textured & visible all sides." Once more, here is my YouTube Channel, where we are showing Candy's & Lights of Dreams series. Each games is free to play for the moment! Now I have around 1223 subscribers!  - My Youtube Channel - Hope you'll like our games, bookmark, downloads & watching our videos! Friendly, Xylvan, Xilvan Design.

Xylvan

Xylvan

Unity Weekly Updates #63 - Puzzled

Well, look who's back! Hello. This is your favourite weekly update blog! Last week was interesting, to say the least. Last weekend, I decided to bring The Legend of Zelda: Link's Awakening on the Nintendo switch. I must say that the experience was very satisfying. Although the game itself is still a bit outdated in terms of game design, it remains quite memorable. Also, with an almost identical conception of rooms (especially dungeons rooms), I was able to experiment a bit with my own room designs too. So without any further ados, let's dive right into it! New Rooms Mechanics  While playing Link's Awakening, I realized that most enemies in Zelda games were not as complex as I originally thought. With this realization came another question: if it's not the enemies that make the game fun, then what is it? After a few hours of play, it became very clear... Zelda games are known for two things: their dungeons and their puzzles. In our case, the "dungeons" part is already taken care of. This leaves us with the star of this post: puzzles! Puzzle Pieces So last week I was cooking up a puzzle system. The idea was to have a solid puzzle system from which to build semi-complex puzzles. With it, we can also have compound puzzles. Each puzzle can have two possible states: on or off. Some compound puzzles wait until all their sub-puzzles are cleared before turning themselves on. It's also possible to invert the puzzle too. A compound puzzle can also have different logic gates. By default, a compound puzzle uses the AND gate. We can also have an OR gate and even an XOR gate. Paired with the inverter, we get the full logical gates range! Puzzles can also freeze. Frozen puzzles won't be able to change their on/off state anymore. Quite handy when a puzzle is finished! But anyway, let's take a look at some puzzle elements! Toggle Switches First up, here's the toggle switch. Basically, it is a switch that activates interacting with it with the "e" key. Each switch can also interact with other switches. With this, we can create complex puzzles that are quite interesting to solve. Pressure Plates And finally, here is the pressure plate. To activate it, just press the button down. This can be done by either pushing a heavy object onto it or just standing on it.  Some pressure plates need constant pressure to stay "on" while others will freeze up once activated. Just look at the colour of the plate to find out. And that's about it for the puzzle as of yet. I still have to integrate puzzles into rooms and also refactor the game flow so to include puzzles. I also want to add more type of puzzles and perhaps even change the map generation to add even more puzzles.   In other words, a bunch of work ahead! Minor Updates Changed ice floors: Now ice floors have walls. This is especially noticable when surrounded by either chasms or liquids.
Refactored the screen brightness modifiers so that they also include tints: This way I can more closely simulate the dark brown tint of sunglasses. Added a mechanism allowing players to break down any obstacles that would have been broken only by bombs.  However, players must be strong enough and have the right kind of weapon. Added a ColorModifierStack class that acts as a ModifierStack but for colours.  Next Week I have to say that playing at Zelda allowed me to realign my priorities and also showed me how to do the parts principle well. Before I thought that what should be improved was the bosses. However, Link's Awakening showed me that a game does not need a complex boss to be fun. Although bosses remain a priority, it's far less important than puzzles. Thus I'm planning on working on those puzzle bits first. Then perhaps it's really gonna be boss time. Aside from that, it's your usual suspect... I'm really feeling great about puzzles, though. It can potentially bring a whole lot of depth to an otherwise quite dry game... So yeah, that's about it!

jb-dev

jb-dev

C# GUI WPF + OpenGL 3.1

We will see how to place OpenTK.GLControl on WPF window to make GUI application with 2D/3D graphics using modern OpenGL 3. This is the result VS project: EditedTriangle_WPFOpenGL31CSharp.zip How to create the project from scratch Note 1: RMB - Right Mouse Button click
Note 2: Good Color calculator for normalized values: http://doc.instantreality.org/tools/color_calculator/ Create WPF application, with the name "EditedTriangle". See the screenshot: Download OpenTK.GLControl.zip and OpenTK.zip Create the empty "Libs" folder in the solution folder (where the ".sln" is placed) Unzip "OpenTK" and "OpenTK.GLControl" folder in the "Libs" folder Add references to "OpenTK.dll" and "OpenTK.GLControl.dll". For this: RMB on "References" -> select "Add Reference..." -> select "Browse" -> click the "Browse..." button -> select DLL's. See the screenshot with the result: Add "Assemblies". For this: select "Assemblies" -> "Framework" -> check: System.Drawing System.Windows.Forms WindowsFormsIntegration , see the screenshot with the result: Click "OK" button Open the file "MainWindow.xaml" in VS. Add this line as an attribute of the "Window" element: xmlns:opentk="clr-namespace:OpenTK;assembly=OpenTK.GLControl" Place this code inside of <Window></Window> element: <Grid> <DockPanel LastChildFill="True"> <StackPanel DockPanel.Dock="Right"> <Button x:Name="buttonSetBGColor" Content="Set BG Color" Margin="5" Click="buttonSetBGColor_Click"></Button> <Button x:Name="buttonSetTRColor" Content="Set TR Color" Margin="5" Click="buttonSetTRColor_Click"></Button> </StackPanel> <WindowsFormsHost Margin="5" Initialized="WindowsFormsHost_Initialized"> <opentk:GLControl x:Name="glControl" Load="glControl_Load" Paint="glControl_Paint" /> </WindowsFormsHost> </DockPanel> </Grid> Copy the code below to "MainWindow.xaml.cs" and run the project MainWindow.xaml.cs using System; using System.Windows; using OpenTK; using OpenTK.Graphics; using OpenTK.Graphics.OpenGL; namespace Triangle_OpenGL31WPF { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { private Utils.ShaderProgram _program; private Matrix4 _projMatrix; private int _startIndex = 0; private int _amountOfVertices = 3; public MainWindow() { InitializeComponent(); } private void WindowsFormsHost_Initialized(object sender, EventArgs e) { glControl.MakeCurrent(); } private void glControl_Load(object sender, EventArgs e) { GL.ClearColor(new Color4(0.631f, 0.6f, 0.227f, 1f)); _program = new Utils.ShaderProgram( "Shaders/vShader.glsl", "Shaders/fShader.glsl"); if (_program.Id == -1) { MessageBox.Show(string.Format("Error: see the file \"{0}\"", Utils.Logger.logFileName)); return; } InitVertexBuffers(); SetTriangleColor(Color4.Red); int uProjMatrix = GL.GetUniformLocation(_program.Id, "uProjMatrix"); if (uProjMatrix < 0) { Utils.Logger.Append("Failed to get uProjMatrix location"); return; } _projMatrix = Matrix4.CreateOrthographicOffCenter(-1f, 1f, -1f, 1f, 1f, -1f); GL.UniformMatrix4(uProjMatrix, false, ref _projMatrix); } private void InitVertexBuffers() { float[] vertices = new float[] { // Triangle 0.0f, 0.5f, // (x, y) -0.5f, -0.5f, 0.5f, -0.5f }; // Create a vertex buffer object int vbo; GL.GenBuffers(1, out vbo); // Bind the VBO to target GL.BindBuffer(BufferTarget.ArrayBuffer, vbo); // Write the data into the VBO GL.BufferData(BufferTarget.ArrayBuffer, vertices.Length * sizeof(float), vertices, BufferUsageHint.StaticDraw); // Get the storage location of the aPosition int aPosition = GL.GetAttribLocation(_program.Id, "aPosition"); if (aPosition < 0) { Utils.Logger.Append("Failed to get the storage location of the aPosition"); return; } // Assign the VBO to aPosition variable GL.VertexAttribPointer(aPosition, 2, VertexAttribPointerType.Float, false, 0, 0); // Enable the assignment GL.EnableVertexAttribArray(aPosition); } private void glControl_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { GL.Viewport(0, 0, glControl.Width, glControl.Height); // Fill a canvas GL.Clear(ClearBufferMask.ColorBufferBit); if (_amountOfVertices > 0) { GL.DrawArrays(PrimitiveType.TriangleStrip, _startIndex, _amountOfVertices); } // Swap the front and back buffers glControl.SwapBuffers(); } private void buttonSetBGColor_Click(object sender, RoutedEventArgs e) { var dialog = new System.Windows.Forms.ColorDialog(); if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { float r = dialog.Color.R / 255f; float g = dialog.Color.G / 255f; float b = dialog.Color.B / 255f; GL.ClearColor(new Color4(r, g, b, 1f)); glControl.Invalidate(); } } private void buttonSetTRColor_Click(object sender, RoutedEventArgs e) { var dialog = new System.Windows.Forms.ColorDialog(); if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { float r = dialog.Color.R / 255f; float g = dialog.Color.G / 255f; float b = dialog.Color.B / 255f; SetTriangleColor(new Color4(r, g, b, 1f)); glControl.Invalidate(); } } private void SetTriangleColor(Color4 color) { int uTriangleColor = GL.GetUniformLocation(_program.Id, "uTriangleColor"); if (uTriangleColor < 0) { Utils.Logger.Append("Failed to get uTriangleColor location"); return; } Vector3 c = new Vector3(color.R, color.G, color.B); GL.Uniform3(uTriangleColor, ref c); } } } MainWindow.xaml <Window x:Class="Triangle_OpenGL31WPF.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:Triangle_OpenGL31WPF" xmlns:opentk="clr-namespace:OpenTK;assembly=OpenTK.GLControl" mc:Ignorable="d" Title="Triangle" Height="256" Width="290"> <Grid> <DockPanel LastChildFill="True"> <StackPanel DockPanel.Dock="Right"> <Button x:Name="buttonSetBGColor" Content="Set BG Color" Margin="5" Click="buttonSetBGColor_Click"></Button> <Button x:Name="buttonSetTRColor" Content="Set TR Color" Margin="5" Click="buttonSetTRColor_Click"></Button> </StackPanel> <WindowsFormsHost Margin="5" Initialized="WindowsFormsHost_Initialized"> <opentk:GLControl x:Name="glControl" Load="glControl_Load" Paint="glControl_Paint" /> </WindowsFormsHost> </DockPanel> </Grid> </Window>  

8Observer8

8Observer8

 

Getting there, and what I have learned so far

What I have mostly learned, is that doing something that is fun makes motivation come the easiest , compared to anything else I have ever done in my past. Making a game is probably one of the most fun things I have ever attempted. Doing the work, though apparently harder for most, is the absolute easiest for me. I get at least two hours a day, every day, every week. Doesn’t sound like much, but include a marriage, two toddlers, a few teenagers, four worthless cats and a full time job, ten hours a week is pretty freaking awesome. Jake knows what this is like as well, and the fact we have gotten this far is a true testament to what it means to us. Most can relate, but hopefully we become part of the elite who actually finish projects The last post is a to-do list I published about twenty days ago. I have been eating away at it, and am about two thirds done when I realized first, how little I have done, and then, how much I have done. Its amazing what a little optimism can do for your day, and your week, and any project you might be working on. I am currently working on the inventory controller and realized I have learned a few points in my journey so far, and just wanted to post it. Mainly so I don’t forget, and to help others confirm their own findings. First off, do not start a part of the project without finishing it. Maybe this seems redundant, and I am sure there will be times in the future where I fear I might get confused coming back, but really, if the script is working 80% or so, and there is a couple things implemented that arn’t working as expected, continuing on with the intention of coming back to fix it is being lazy. Coming back to it costs more energy, and working on other parts with that bug glaring at you is no fun either. Bottom line: Do not add something unless it works. Don’t implement something and then not finish it because it isn’t essential at the moment. Secondly, fractal the shit out of it. This project could have probably used a better fracturing system, but hey, I got it now. I did a good job of realizing what should have been fractured in the beginning, so it probably won’t become spaghetti down the road. Most of my mistakes come from starting a script with the intention of it only doing x and y , and before I know it, its a thousand lines plus and does about every single function that object could possibly do. Luckily, my ability to do this within a script is on par, but doing it within relating objects needs a bit more work. Practice makes perfect. Thirdly, the next game I do, I want to start with the soundtrack first. Really, I have no logical reason why, just seems like a good idea LOL! Fourthly, write tight code from the start. I am not sure why I didn’t plan out how I was going to name things, but part of the problem was I didn’t know how the libraries were names – and I should have, because it is apparently standard naming procedure. Do not save “clean up” for a later step.
View the full article

davidkilmer

davidkilmer

 

Snake - Story mode reaches its first milestone!

I've been quiet here on gamedev for the past two weeks, but only because I've been busy getting story mode operational.  Since my last update, I've managed to get all the core aspects of story mode functioning.  Referring back to my wiki page on GitHub, I've completed points 1 through 3 and point 8 (because it was easy and natural to do so at the time): Levels will load dynamically, progressing the player through an entire campaign to completion. All types of win conditions are supported.  The level designer has the choice of:  number of a particular food item eaten, length of snake, or time survived. The level designer can define a maximum snake health.  Hitting a barrier only causes the snake to lose a point of health. Eating food scores points.  The game keeps track of how far the snake moved from the time food spawned, up to the time it was eaten.  Bonus points are scored if the snake moves the shortest possible path. Multiple food spawns are supported, with carrots being the extra type of food supported so far.  Each new type of food will have pre-determined characteristics; for carrots, they give a low score, but also heal the snake by a small amount. Story mode adds a "food spawned" sound effect that isn't present in quick mode. I also spent some time blending grass textures together to help spruce up the visuals a little bit:   As soon as I got the second type of food spawning, and tested out being able to spawn multiple food instances, the game actually got kinda fun.  I'm quite happy with how it's all coming together. 😀 Now it's time to start thinking about the actual story behind Story Mode!  I have a basic outline floating around in my head, but need to flesh out the details and figure out how that will translate into the actual game play. In terms of features, the next smaller thing I want to add is "dangers".  The first danger I'll add will be a spike that comes up from beneath the ground, causing damage to the snake if its body is present on that tile.  In terms of level design, I have the ability to set where both food items and dangers will spawn.  So I'll be able to provide a visual cue that certain tiles are dangerous; and avoid having food spawn there.  Food might spawn near such tiles, though -- gotta make it a challenge! And the next major feature will be cut-scene support.  I'm expecting this to be a fair bit of development work... but hopefully also a lot of fun once it's working!

rileyman

rileyman

Rudimentary concepts brought to life

It's been a while . . . I've spent these last couple of weeks experimenting and slowly building up the foundations (concepts) of a playable character; which would ultimately end up in the demo. It's based on an old Frankish design, with some additional tweaks here and there. Granted, it is really-rough around the edges, but I wanted to see how it all came together; thus left some parts for the imagination (will polish it later, like the straps and the cape, etc.). Initially, when I landed on this design, I decided to cramp as much detail onto this model as I could–just so that it would double as promotional material. That being said, that inadvertently created this intangible struggle of having to create two separate low poly models for said purposes. Suffice to say that the more I worked on this, the more clear it became that it might be a better idea to switch engines all together (to Unreal). But . . . and this is the main source of my conundrum: this would also mean that the project would be thrown back several months; not entirely sure that the delay would justify itself. Whatever might be the case, I'll keep working on this small, linear dungeon crawler ("cave run") and see where this project will go from here . . . Furthermore, I thought to share some close-ups of the model:

theaaronstory

theaaronstory

Unity MMORPG devlog #6

Yesterday I published one more devlog entry of my project. On this video I talk about character customisation and animations. There is a lot of room for improvements, especially the animations department, but it's OK for now and I will move forward to NPC scripting, and polish the animations later down the road. Let me know your thoughts and questions. Cheers!  

ricvalerio

ricvalerio

 

Multiple Projects

Right now I have 3 game projects is in development. One of them is ‘There Is No Tomorrow’ which is going to be published soon hopefully. While the other 2 projects are still in early to mid development stage. Actually recently I started ANOTHER project for mobile but now I am pausing the development till I finished ‘There Is No Tomorrow’. This one week which I was handling 4 game projects, my mind is becoming more confusing and over-active, I don’t feel good at all. So I guess that my limit is 3 projects and no more. Just yesterday, I released ‘Noosphere’ on Steam. The actual release is in 2020. This is a first person horror game which is actually my first 3d first person game. All my previous games are third person view. https://store.steampowered.com/app/1161430/Noosphere/Wishlists count is important to a game’s success. If you are interested in this genre, please feel free to add the game to your Wishlist https://store.steampowered.com/app/1161430/Noosphere
View the full article

KOEX studio

KOEX studio

 

Asset Screen #2: Humble Beginnings

This is the beginning of the new asset screen. It doesn't look like much yet, but quite a lot of work has gone into it already behind the scenes.

In order to see just the data in this screen shot, an entire workflow had to be developed to allow the computer to create each record, automatically detect each piece of data on any given record, determine whether it should be displayed, format it, place it in the correct spot, and mark it as either visible or invisible (which means that there are actually a number of records that exist but that you can't yet see because no one has clicked to open them).

It's a humble beginning, but now that we have this much working, adding new elements won't be nearly as difficult as adding these first few was, and further progress should be much more rapid. In the coming weeks, I'll be focusing on making this more visually appealing, on adding more elements, and on adding a lot of behaviors (e.g. many of these elements will be clickable). Original post blogged on Rank: Warmaster Dev Blog.
View the full article

LordArt

LordArt

 

A simple progressView for Corona

One of the things that makes Corona great is that we offer over 1,000 API calls to make your life as a developer easier. This includes various convenience APIs that make our simple-to-use APIs even simpler. However, sometimes those convenience methods can be less of a convenience and more of a headache when you try to use them beyond what they were designed for. Let’s examine the widget.* library as an example. The widget.* library contains API’s to create buttons, switches, tableViews and more, but they were created with the intention of emulating the look and feel of iOS and Android UI elements. Corona Labs eventually added options to alter their look so they could be themed to fit your game or app better. The problem is trying to theme these widgets can be more complex than building a custom widget on your own. One of these widgets is the widget.newProgressView. In its simplest setup, the widget.newProgressView is quite simple: local widget = require( "widget" ) local progressView = widget.newProgressView({ left = 50, top = 100, width = 220, isAnimated = true }) progressView:setProgress( 0.5 ) And you get:
when the progress is set to 50%. It’s a simple iOS-like progressView. If you change the widget theme to Android, it will be more familiar to native Android apps. But what if you want to do something that fits your app better? Well you can use image sheets to do that. Let’s look at the code first: local options = { width = 64, height = 64, numFrames = 6, sheetContentWidth = 384, sheetContentHeight = 64 } local progressSheet = graphics.newImageSheet( "widget-progress-view.png", options ) local progressView = widget.newProgressView({ sheet = progressSheet, fillOuterLeftFrame = 1, fillOuterMiddleFrame = 2, fillOuterRightFrame = 3, fillOuterWidth = 64, fillOuterHeight = 64, fillInnerLeftFrame = 4, fillInnerMiddleFrame = 5, fillInnerRightFrame = 6, fillWidth = 64, fillHeight = 64, left = 50, top = 200, width = 220, isAnimated = true }) progressView:setProgress( 0.5 ) There is a lot more you have to do to set it up code wise, but in addition you have to provide an image sheet that has to be specially constructed. It’s a six frame, 64px X 64px per frame image, where you have an outer frame and an inner fill. Frames 1 & 3 represent the end-caps of the outer frame, frames 4 & 6 represent the fill of the end caps. Frame 2 is the outer frame that’s stretched to fill the size you’ve set (width = 220 above) and frame 5 is the actual progress image that will be stretched to the percentages the view is set to. Even with this, it’s limited. This image sheet (ignore the background colors, they are there just to show you each frame):

will result in a progressView that looks like:
That frame and fill may not be what you want. What if you want to have something like a red to yellow to green gradient and perhaps have a pointer that shows where in the red to green range you are? Well you can’t really do that with this widget. Why? Because the middle frames stretch to the width and then the end caps are added. But you can do this with one image and one display.newRect() if you don’t mind rectangles, or a third image to act as a mask if you want rounded corners. Let’s look at an example that will give you that gradient “temperature gauge”. Starting with this image and mask:
and:
The image will be the background of our progressView and the mask will be used to give it rounded corners. We will also use a display.newRect() and fill it with a navy blue color that will block out the percentage of the gradient that hasn’t been reached yet. At 75% progress we should have something that looks like: The code for this is quite simple. Let’s make a function to create a new gradient progressView and also create a method to set the percentage. local function customProgressView(percent) local thisProgressView = display.newGroup() thisProgressView.backgound = display.newImageRect(thisProgressView, "pvBackground.png", 200, 40) local mask = graphics.newMask("pvMask.png") thisProgressView:setMask(mask) thisProgressView.progress = display.newRect(thisProgressView, 100, 0, 200, 40) thisProgressView.progress:setFillColor(0,0.25, 0.5) thisProgressView.progress.anchorX = 1 thisProgressView.progress.width = 200 - (percent * 200) function thisProgressView:setProgress( percent ) self.progress.width = 200 - (percent * 200) end return thisProgressView end local progressView3 = customProgressView(0) progressView3:setProgress( 0.75 ) progressView3.x = display.contentCenterX progressView3.y = 350 Start by creating a display.newGroup() to hold the progressView. This will not only serve as a single display object that we can easily position, but also act as a table to hold the three display objects and the function to set the percentage. The function will return a handle to the display.newGroup() that you will manipulate in your code. Next set the background image using a display.newImageRect() to load our gradient background image. This tutorial hard codes the size, but you can easily pass size parameters to the creation function. A graphics.newMask() is added to the group, so that any other display objects added to the group will be affected by the mask. A display.newRect() is created and stored in the group as well. This will hide the progress yet to be achieved. This requires a little trickery to work right. Anchor the rectangle to the right side. Set the color and use the .width value of the rectangle to size it to how much you want to block. Add a function to the group that can be used to set the percentage after the initial creation. It’s the same math used above. Finally return the group to the calling function. Then in the calling function, you can initialize the progressView and then set the percentage. The entire function and code to position and set the value 22 lines of code. Trying to use the widget.newProgressView()‘s theming option is 28 lines (plus the widget itself!), can’t do this kind of customization, and is more code. Hopefully this will demonstrate that some things you think are hard are actually pretty simple.
View the full article

CoronaRob

CoronaRob

 

Just Keep Going

Time and time again, I'm reminded how so much of success is based on a willingness to keep going when times get tough and challenges seem insurmountable.
 
  Whether it's hitting the aesthetic that's right for the project, finding more clients and collaborators, or responding to obstacles and setbacks, endurance and being able to constantly chip away at progress always seem to be what really determines success.     This guy here is Andy Dufresne, and he escaped prison after being wrongly convicted by slowly chipping away at a concrete wall at night for almost 20 years. He had many setbacks and obstacles in the form of people, walls, lack of resources, criminal status, and a massive lack of sleep. But giving up wasn't an option.   Even after devoting that amount of time, he still had a serious struggle to finally escape. You'd think he was entitled to finally reap some rewards, right? But he still had to crawl through a literal pipe full of s***!    Yes, he's the main character from The Shawshank Redemption. Both the movie and Rovio (Angry Birds team) are great examples of illustrating this mindset. We need to put in time and sweat knowing none of it entitles us to success, but it all brings us that much closer to it.   At any point, Andy could have dwelled on how much of a victim he was, focused on how much wall was left, lost sight of his ultimate goal or began prioritizing things outside of the life he wanted. He could have said he was tired and would dig away at that concrete wall tomorrow. Or, Rovio could have used their past "failures" as an excuse to stop trying.   We all have these choices before us on a daily basis. And once we begin to make the "wrong" easy choices, it gets harder and harder to make the "right" ones.   Adopting a disciplined and focused mindset is incredibly powerful and healthy. It can help develop your craft(s), increase our output and in many ways be a serious mental health-saver in difficult moments. Huge problems become smaller when you just put one foot in front of the other. Over time those small steps add up to massive progress.    So much of life is dealing with obstacles that others seemingly don't have to, or paying your dues yet again (especially for professional creatives/artists!).   Just take a deep breath. Think. Have confidence in your efforts, and know you are bringing yourself that much closer to where you want to be one small step at a time.  
  Be sure to check out Unlock Audio and grab some free stuff. Want to reach out? hello@unlockaudio.com   Elliot Callighan is a composer and sound designer, and the owner of Unlock Audio. He also teaches in the film and game programs at DePaul University and is an Officer in the Army National Guard.

Unlock Audio

Unlock Audio

Welcome to the first tech demo - testers wanted.

I haven't updated this blog for almost a year, but that doesn't mean I haven't been working on the game. Since the last post I have been working on implementing stats for characters and items and made character and inventory screens plus a belt for potions. Also character levels and experience was implemented. When I went to start implementing dialogues I realized that I had quite a bit of technical debt when it came to game data. Much was hardcoded, and other things were in my own file format, so I made a Worldbuilder application with a graphical interface I could use to define things like what zones to include, how they relate to each other, items, droptables, what mobs to spawn, their attributes and droptables etc. All of this data has ties to both the Unity client and the server - mobs and items point to prefabs in the unity spawner scripts, and zones point to Unity scenes. This data can then be exported to the server and the client.
This proved to be a bit of a task but at the end I was very happy that I did it. Some things are still not easily  definable the way I want them, like portal and spawn coordinates that I have to find myself, but it will do for now. Then I implemented some basic dialogue, and replaced the old character model with the "Adam and Eva Archers" pack that I bought from Mr Necturus' shop: http://mr-necturus.com/store/index.php?route=product/product&amp;product_id=625. All in all I like these a lot. The textures are pretty big which is of course a good thing but since they're too big for my purposes I played a little around with the import sizes to lower the build size. Next step was to set up a 3D scene for character creation, and enable gender selection, now that I have both male and female characters working.

If anyone is interested in checking out the progress and giving some feedback then you're welcome to download the latest client build: https://treacherousjourneys.com/downloads/journeys.zip

Note that this is an online game, and currently the only server I run is in Germany, so non-European users will probably get a lot of lag.
And remember this is still in very early stage of development - this is not a polished or feature-complete version.
Basic controls:
Left click ground to walk
Left click monster to attack it, right click to attack in a direction while standing still
Left click an item on the ground to grab it
Press 1-4 to quaff a potion
Press "i" for inventory panel - drag items between cells or to the ground.
Press "c" for character panel.
 

Polydone

Polydone

New levels and game mechanics! :)

Hi everyone! Since my previous devlog I made 15 more levels and added some new game mechanics as well.
In total the game now has 25 levels. I'm currently working to add endless mode as well, I think it fits in nicely with the physics-based nature of the game. Here's whats new in terms of mechanics: Pistons - when you press space piston moves up and when you release space it goes back down. It can push the ball if you time it right, it can also be used to 
prevent the ball from moving if you activate it in the right moment Moving obstacles - they behave exactly as you'd expect them to
Besides this I've also did some minor adjustments to color pallet, added tutorial, as well as fixed some bugs. That's it for now! I hope that this game will soon be ready for release. Can't wait to hear how you like it. Thanks for reading this devlog!
Any feedback is greatly appreciated!

AlienplayGames

AlienplayGames

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!