Jump to content
  • Advertisement

Blogs

 

Linux builds for Corona

Corona Labs is pleased to announce early beta testing for Linux builds. With this feature you can use the Corona Simulator either on Windows or macOS to produce a Corona build that should run on Debian and generic x86-64 Linux platforms. This feature is currently in a limited beta test. You will need to enable building before the option appears in the simulator. Information on enabling the Corona Simulator to make Linux builds can be found in pinned posts either on: Our community forums ( https://forums.coronalabs.com/forum/662-linux/ ) or Our community Slack’s #linux channel ( https://coronalabs.com/slack/ ) We request that any observations, comments and issues be reported at those two locations. Note: This is using Windows and macOS to make apps that run on Linux. This feature is not running the Corona Simulator on Linux to make Android builds.
View the full article

CoronaRob

CoronaRob

 

Add'em

Hello, Here I am again with a handful of fresh news from the Enchanted Land back stage.  The even better news is that it will be my birthday tomorrow, so there will be a reason to celebrate :). I have some of the interactivity such as adding/deleting friends, etc. programmed. Now I'm going to start programming the messaging system, which users will be able to send images and text.     

Creativityy Everythingg

Creativityy Everythingg

Science Game Jam Weekend Project

Over the weekend of September 8th and 9th, 2018, our team participated in a Game Jam hosted by the Nashville Game Developers and The Adventure Science Center in Nashville, TN.  The event kicked off on Saturday morning with introductions and our challenge for the weekend: create a science-based game with an educational spin.  Given that The Adventure Science Center had dedicated September as "Make It Month," creating a video game based on the science of water seemed perfectly in sync with that idea.   Through a bit of brainstorming and ideation, we came up with our theme: Water.  Water is one of the most interesting substances in the universe with a host of properties and uses.  We wanted to use our game to teach about the 3 main phases of water - solid, liquid, and gas.  The player would be tasked with navigating a 2D puzzle environment using game mechanics to heat or cool their water character to make it through obstacles and finish the puzzle.  Following a ton of online research on water, we all got a little bit smarter about how water acts, what it can do, and why it's such a versatile substance!  Now, to make that into some interesting and educational gameplay. We knew we wanted the experience to include the player having to change between the various phases of water to complete the level.  The challenge became how to do that in an educational,  yet fun way.  We decided to utilize the idea of a Bunsen burner to heat the water into a gas to be able to float.  We would use a freezer to turn the water into an ice cube to be able to break through obstacles.  And we'd use the idea of time and friction to turn the gas or ice back into water to navigate grates in the floor.  From there, the team began pulling together assets, coding, and building the game level.  By the end of Day 1, you could start to see the results of the team's work. For Day 2, our goal was to put out a finished game that would be fully playable start to finish, while also providing some polished visuals and gameplay.  One of the aspects added during Day 2 was our water molecule character, Mo L. Cool, who would serve up interesting facts about water or helpful hints to get the player through the puzzle.  Seth, our artist, came up with a very cool, unique take on the water molecule, showing the hydrogen atoms as headphones on the "head" of the oxygen atom.  Mo L. Cool would live on the game screen and pop up with info every so often throughout the game, triggered by keys the team placed in the level.  By mid-Day 2, we had some Adventure Science Center guests come through to see what we were working on at the Game Jam.  We decided it would be a perfect time to get some outside opinions on the game and let them play test the current version of the game.  With an Xbox controller in hand, the 2 guests gave the game their best shot while providing us some helpful insights into where we could make adjustments and fixes to make the experience even better. By the end of Day 2, we had our completed prototype game, which we dubbed "Mind Over Matter."  While we were able to build a complete game level and experience, there are still a few tweaks we'll be making for the final product.  We'll be putting it out on our social channels plus this and other gaming sites for folks to download for free to play (very soon).  It was great to see at the end of the weekend what all the other developers at the Game Jam had been working on.  Each of them showed off their science-themed gaming creations to the group. Some had been working solo on their project, while others also worked in teams.  Everyone had amazingly creative ideas and were able to get completed game experiences built over 2 days.  We thoroughly enjoyed ourselves and look forward to future game jams! Here's a gameplay video showing our completed prototype from start to finish (that first part is tricky)!    ASC Game Jam 9_17_2018 2_14_17 PM-1(4).mp4  

bencinStudios

bencinStudios

Tales of Vastor - Progress #6

Tales of Vastor - Progress #6 Content What's done? What's next? What's done? Merchant I added the merchant to Tales of Vastor. The merchant is an abandoned child of a bandit. He got raised by other thieves and build his store after leaving the thieves guild. Now, he sells the items he found or bought elsewhere. Of course, he has own items depending on the players level and will buy your stuff as well. Here's an example of his item list: Village in the woods One of the next steps in the storyline will be the village in the woods. It is based in the eastern part of Ethen and will be necessary in order to gather information about the princesses location. This is the elder, which will be talking to you. The new character Last time, I announced a new character. If you checked out my Twitter account, you may have seen the paladin already. She is the third playable character and wields a greatsword. She will deal the most damage, but won't have as much health or defense as the knight. What's next? Further animations for the paladin Story adaptations to the village elder Keyboard handling The Tales of Vastor homepage If you have feedback, you can contact me via mail or direct message whenever you want. Be sure to take a look at Twitter as well, since there will be more frequent updates. Thank you!

LukasIrzl

LukasIrzl

 

This Week in Game-Guru - 09/17/18

So wow, what a busy week!  I have a lot of interesting and exciting things to bring up for you all.

First of all, apparently I'm to be featured on the Game-Guru site.  I've been writing this blog for the better part off and on for 4 years now.  It's primarily for a writing exercise for me; I receive no monies for it and it really doesn't benefit me much.  It's more like a 3 hour headache each Monday, hah!

Official Game-Guru News
The mega pack 1 DLC is being updated to PBR.
So this is a regular occurrence and while overall this is a positive the more important news I believe is buried here:

"Back in the main product, we are looking closer at supporting a new model format, the very modern and exciting GLTF v2.0 format which you will find springing up over the last few years, including popular asset stores such as SketchFab. More news on this as it happens, and we look forward to giving you more powers to import the models you want for your next game making project."

I don't know much about GLTF but I will say this can only help.  One of the major limitations of Game-Guru has centered around the .x model types and their importation.  I hope this brings some serious flexibility to the engine.

Also in other news I found on the site, not sure when this was implemented but they finally put a 'showcase' section in which is good because some really good projects can be found there as a 'highlight' of what you can do in Game-Guru.  No surprise some of the names/faces there, though, right?


You can find the full list here: http://www.game-guru.com/showcase

What's Good In The Store
This week on the store we have Teabone, who once again created fantastic set of criminally low priced objects.
It's literally 80 cents.

This is ironic, of course, because it's a 'crime scene pack'.  Get it here!
On a secondary note I've spoken with T-Bone and you can expect more to be added as well as a slight price increase so if you purchase it now you'll save some money in the long run.  Though admittedly it's so cheap it might not even matter if it goes up.

Next we have Pasquill's 'best in show' train set.  I will honestly say this is gorgeous beyond what it has a right to be.  It's priced reasonably, which you might think it's high priced but personally I've seen assets like this go for MUCH higher on other game engine sites.

You'll notice he's broken it out into separate components of trains and rails.   All I can say is if you're looking for the best looking train and rail setups possible - these are a must have.  You can get them here:

Train pack

Rail pack

Lastly not to clutter this section Mad Lobster made a beautiful console for his Mad Scientist Laboratory set.

You get four versions of it for the price of one if you buy it as an individual object; obviously holders of the pack get this for free.  It's PBR mapped and it just looks amazing.



Get it here:
Mad Scientist Spinning Console


Third Party Utilities and Tutorials
There's some really cool dynamic lighting scripts here: https://forum.game-guru.com/thread/219867

Amenmoses has been working on bringing antiques to life: https://forum.game-guru.com/thread/220041

Preben has been working on volumetric lighting(GASP): https://forum.game-guru.com/thread/220046

New user "DannyD" made a (in my opinion, much needed) Setup.ini gui editor: https://forum.game-guru.com/thread/220007



Free Stuff
Well.. damn.  I *WAS* going to post a free cargo ship that Bod had put up but some clod went and crapped all over him on this thread here: https://forum.game-guru.com/thread/220042

Bod pulled his entire thread of free stuff.  It's all gone, for pretty much ever.  I can't even blame the guy.  He's been burned by more than one jerk in the past on this stuff and it's just a damn shame someone as generous as he is has to put up with things like this.  The situation in a nutshell was:

Bod made a licensed product available for free under strict rules that you cannot modify, alter, or sell it.  This is a fairly standard practice, actually.
So this user modified it, asked for help with his modification of it, and then when Bod called him out on it got absolutely childish and insulting towards Bod who in turn pulled his massive repository of free stuff.  RIP.

For the user who decided to make a stand over something they were clearly on the wrong in...



In the meantime...

https://serygalacaffeine.com/2018/09/12/redsorceress-skyboxes-archive/ free skyboxes!

http://playerzeek-fpsc2011.yolasite.com/ old assets for FPSC!  Maybe you can import them.


Random Acts of Creativity
Slaur3n's work is coming along wonderfully on his cowboy shooter.



It's positively impressive to see people put this level of effort into a game.  Really solid effort and I hope it sees release!
In My Own Works
This week I spent a few hours working on both chapter 18 and having to go back to chapter 4 and add an entire section on the new water controls on the tab-tab menu.  This is going to be a down to the wire production for my book.  I'm up to around 65,000 pages and need to hit 120k for my deadline.

My Lightkit script is on sale for 1.75!
My CameraKit script is on sale for 2.75!

Thanks again for reading and see you next week!



View the full article

Bolt-Action Gaming

Bolt-Action Gaming

Unity Weekly Updates #12 - Having a 【Midnight Special】

Last week didn't have any particular theme, although it still was a busy one... Statuses First off, all statuses now have effect textures. these are really abstract, but nice to look at. (From left to right: Bleeding, Burning, Damned, Frenzied, Frozen, Knocked Out, Poisoned, Paralyzed and Stunned) Also, I've perfected statuses effects on enemies. Now their current status is a lot more obvious. A nice status icon is displayed over their head to help identify that status. The Diner Secondly, I've added a new room: the diner.  The idea of it is quite simple: the diner offers food for the player to eat.  The room itself is modelled after classic 50s diners with a jukebox and checkered patterns all over the place. There's even a nice neon sign that is truly aesthetic.  The lighting is still a WIP, but the models themselves are pretty much done. There might be some details to add here and there, though... The exterior also needs some work. I was thinking of giving it a huge diner sign, but for now, there's nothing fancy... Crystals Lastly, I've given the player the ability to switch their active crystals. For those who didn't know, crystals are run-persistent collectables that can give the player the opportunity to take shortcuts that gives fame and fortune to whoever chooses to take them. A GUI element is displayed at the bottom of the screen. Within it, there are 3 crystal counters for each type of crystals. When the player switches their active crystal, the element rotates around to display the right counter at the right time. There's even a nice animation for it. I've only worked on this yesterday, so it still has rough edges here and there. Also, there's no discernable way to identify the active type of crystal on the GUI element alone as of yet... There are some icons that could be ready, but I want to try to put those icons in a custom font file. This way, I can use Unity's dynamic text display functionality to have scalable graphics. One of the drawbacks of this is that only monochrome icons can be used... Minor updates Modified the bank so that it spawns with a back wall Fixed bugs with MonoBehaviours scripts presets Fixed a whole lot of bugs with the map generator. Turns out that when the player was extremely lucky, they could remain trapped in the stating room because all other rooms would become secret rooms. Added a limit on how many secrets tunnel rooms can be spawned Added a ceiling to most room obstacles such as locked doors and cracked walls so that the lighting won't look weird anymore. Added back walls to special rooms. Thus, the design of those rooms will be applied continuously rather than abruptly end. Changed the tri-colour decal shader to add emission (mainly used with the diner's neon sign) This week Now that the diner is done, I can go ahead and continue the implementation of even more rooms.  Last time I've talked about status-themed rooms, but turns out that there are a lot of other more important rooms to be added beforehand. I will be adding these up progressively... Now that the player knows their current active crystal type and their remaining amount, I can also add rooms dealing with those. I could also try to spawn pickable crystals, but right now rooms seem to be more important than crystals: they add more opportunities and varies the gameplay a lot. And finally, another possibility is to actually create these custom font files I've previously talked about, although it's not that important... Before I forget! Last week I've forgotten to mention that I've also tried to compose some music for the game. Here's a preview: ohok.mp4

jb-dev

jb-dev

 

Week #36 - Finally, some eye candy !

The first few assets of the games revealed Alpha is completed I had to take some time off the blog to really dig into the coding, solve many bug, update AI, improve movement and main and secondary feature of the game. A huge step toward the final game was taken during the last 12 weeks.  Sorry about being so quiet, but I felt that reveling code progression wasn't interesting for the audience. Talking about feature without being able to show them or without anything visually appealing to help you appreciate and understand wasn't working really well. That said, all the feature required to have a game, either UI or in game function are all there. All the main game mechanic is there and working. I wouldn't say everything is flawless but everything work. Nothing as been tested in terms of gameplay which will be the whole point of the upcoming months. We finally can  build level. It was really important for me to complete the code first. You can't build level correctly if you are unsure of how far you can go. Of course, coding is never over, we will need to fix a few known bug and mostly evolve the code depending of game experience. Next Step : Building 1 level Choosing what to build first is not as easy as it sound. I'm building 2 scenes right now, both of them are strongly attach to the scenario and it's easier for me to figure out what need to be here and there and it will build up confidence at building good level for the player. The first scene is the "hangar" scene which is actually the base you settle on earth which you will visit after each mission. Since you see this portion very often in the game, i want to make sure to put a lot of time into it. It also involve building important assets such as the ship, bonuses item, teleport pad and stuff like that. The other scene is the actual first level, which is the tutorial level. It set the whole story, it's not just a tutorial that give you the game basic, yeah it does that too, yah it will be terribly easy unlike the rest of the game, but it is a really important part of the story and can't wait to see it come alive. The candy : Armor Gun and Skin Have a look of the first three shots (more stuff coming next week, the ship, the teleport pad, the holographic table, already completed, but I want also to share concept art and step by step of the ship). The armor skin provide protection to the character while allowing him to cloack and become invisible (a "Predator" cloacking style effect). The belt also allow the character to build up energy into their gun to unleash a unique ability. The "zap" gun is a plasma gun that use high energy to trow electric pule at enemy. It doesn't require any reloading and it never overheat. This game is about action and fun, not about managing ammo. You can shoot whenever you want at the cost of creating noise and chaos. Zoile also receive some love and now have a skin My intention is to have semi-realistic look and colorful asset. I hope you guys enjoy it, please share me your idea.

Gon'Interactive

Gon'Interactive

Get Fancy Ball from itch.io

You heard it, Fancy Ball 2 is also available on itch.io for Windows, Mac and Linux: https://silviushader.itch.io/fancy-ball-2   Of course, who uses itch.io? We are gamedevs so we use gamedev.net. What was I thinking when I sent that link... well, it doesn't matter, you are not forced to download it from itch.io, you can also download it from Google Play, here's the link https://play.google.com/store/apps/details?id=com.PizzaFest.FancyBall2   Thank you for reading and downloading in case you did download the game.

SilviuShader

SilviuShader

Water water everywhere... and not a drop to drink!

Oh boy... my fave part... simulating water!  You'll see on my YouTube channel I'm not new to this...   But let's not get carried away... I don't need water looking anywhere near as realistic for 'The Berg'.  A simple sub-divided plane and another vertex displacement shader will do the trick... The problem I have is that I get 'hung up' on water.  I can fiddle for hours tweaking this and that.  MUST NOT DO THAT THIS TIME!! ... Several days later... float step = viewSize / subdivisions; vec2 pp = vec2(playerPos.x, -playerPos.z); vec2 adjPlayerPos = floor(pp / step) * step; vec2 remainderPP = pp - adjPlayerPos; float uvScale = viewSize / mapSize; vec2 uvOffset = vec2(adjPlayerPos + (mapSize / 2.) - (viewSize / 2.)) / mapSize; vec2 newUV = uvOffset + uv * uvScale; float dOffset = 0.001; vec2 depths = vec2(0); depths.x = clamp(nSeaLevel - texture2D(heightMap, newUV + vec2(-dOffset, -dOffset)).r, 0., nSeaLevel) / nSeaLevel; depths.y = clamp(nSeaLevel - texture2D(heightMap, newUV + vec2(dOffset, dOffset)).r, 0., nSeaLevel) / nSeaLevel; float avDepth = (depths.x + depths.y) / 2.; float displace = 0.; vec2 waveOrigin[3]; waveOrigin[0] = vec2(0.5, 0.5); waveOrigin[1] = vec2(0.3, 0.25); waveOrigin[2] = vec2(0.9, 0.75); float waveOriginDist[3]; waveOriginDist[0] = distance( waveOrigin[0], newUV ); waveOriginDist[1] = distance( waveOrigin[1], newUV ); waveOriginDist[2] = distance( waveOrigin[2], newUV ); vec2 t; for (int i = 0; i < 3; i++) { displace += cos( waveFreq * ( 1. / float(i + 1) ) * waveOriginDist[i] + (time * 2.)) * avDepth; displace += cos( waveFreq * avDepth * 2.5 * waveOriginDist[i] - (time * 1.5) ) * 0.5; t += normalize(newUV - waveOrigin[i]) * cos(time * 0.1); } displace *= avDepth; t *= 10.; vec2 adjVertPos = vec2( position.x - remainderPP.x, position.y - remainderPP.y ); vec3 newPos = vec3( adjVertPos.x + t.x, adjVertPos.y + t.y, displace * heightScale ); vec3 transformed = newPos; What... have... I... done...? What kind of monster have I created? ... 🤣 Just kidding....  

Greedy Goblin

Greedy Goblin

 

Feeling the ice beneath my feet

Ok, so far the terrain looks pretty good, but I can't walk on it.  How the heck do I do that? Two options as I see it... Try and use the heightmap to figure out what the height is at my current position and just get the camera to follow that. Generate collision geometry from the heightmap and then do ray-triangle based collision detection.  Yeah yeah, I'm sure I could just find some free resources/JS library on t'interweb that will do all this gubbins for me and give me a full blown phsyics engine to boot... but where's the fun in that?!  Oh yeah, by the way, did I mention I'm nuts. After much thought and general mucking around I opted for the 2nd option.  To create a geometry object that would contain all the vertices/faces for the terrain.  I don't need to render it so no need to create a mesh (can you imagine the insanity of rendering a mesh of this scale in the browser on a low-end device... madness I tell you, madness!).  I could potentially, at a future date, even stream the bit of collision geometry that I need from the Node back-end on the fly to speed things up further. For now though I'll just create the geometry in memory on the client-side and use that.  It's just an array of vertices after all. this.generateCollisionMesh = function () { // Render the height map texture off-screen and read the pixel data into an array let texSize = _this.heightMap.image.width; _this.pickingScene = new THREE.Scene(); _this.renderTarget = new THREE.WebGLRenderTarget( texSize, texSize ); _this.pickingCamera = new THREE.OrthographicCamera( 0, texSize, 0, texSize, 0.1, 10 ); _this.renderTarget.texture.minFilter = THREE.NearestFilter; _this.renderTarget.texture.magFilter = THREE.NearestFilter; let mapGeom = new THREE.PlaneBufferGeometry( texSize, texSize, 1, 1 ); let mapMaterial = new THREE.MeshBasicMaterial( { color: 0xffffff, side: THREE.DoubleSide } ); mapMaterial.map = _this.heightMap; let mapMesh = new THREE.Mesh( mapGeom, mapMaterial ); mapMesh.position.set( texSize / 2, texSize / 2, -1 ); mapMesh.rotation.x = Math.PI; _this.pickingScene.add( mapMesh ); let pixelData = new Uint8Array( 4 * Math.pow( texSize, 2 ) ); _this.renderer.render( _this.pickingScene, _this.pickingCamera, _this.renderTarget ); let ctx = _this.renderer.getContext(); ctx.readPixels( 0, 0, texSize, texSize, ctx.RGBA, ctx.UNSIGNED_BYTE, pixelData ); // Create a plane geometry that we can modify to create the collision mesh let tSubdivisions = ( _this.mapSize / _this.viewSize ) * _this.subdivisions; _this.collisionGeom = new THREE.PlaneGeometry( _this.mapSize, _this.mapSize, tSubdivisions, tSubdivisions ); let mapHalfSize = _this.mapSize / 2; for ( let i = 0; i < _this.collisionGeom.vertices.length; i++ ) { let v = _this.collisionGeom.vertices[i]; let tx = ( ( ( v.x + mapHalfSize ) / _this.mapSize ) * texSize ); let ty = ( ( ( v.y + mapHalfSize ) / _this.mapSize ) * texSize ); let pdIdx = Math.clamp( Math.floor( tx + ( ty * texSize ) ) * 4, 0, pixelData.length ); if ( isNaN( pdIdx ) || isNaN( pixelData[pdIdx] ) ) { continue; } v.z = ( pixelData[pdIdx] / 255 ) * _this.maxHeight; } _this.collisionGeom.verticesNeedUpdate = true; _this.collisionGeom.normalsNeedUpdate = true; _this.collisionGeom.computeVertexNormals(); _this.collisionGeom.computeFaceNormals(); _this.collisionGeom.computeBoundingBox(); } I don't even know if I need those 5 lines at the end but I'll leave them in for good measure. p.s. It took me a few days to get this right as the collision geometry just wasn't quite matching up to the actual rendered mesh.  Turns out it was because I'd not set: _this.renderTarget.texture.minFilter = THREE.NearestFilter; _this.renderTarget.texture.magFilter = THREE.NearestFilter; Oh my wasted life!!! 😡 Terrain collision geometry now working so I created a little function to test the height at a given point... this.heightAt = function ( x, y ) { function rayTriangleIntersection( p, ray, v1, v2, v3 ) { let ab = new THREE.Vector3().subVectors( v2, v1 ); let ac = new THREE.Vector3().subVectors( v3, v1 ); let n = new THREE.Vector3().crossVectors( ab, ac ); let d = ray.dot( n ); if ( d <= 0 ) return false; let ap = new THREE.Vector3().subVectors( p, v1 ); let t = -ap.dot( n ); if ( t < 0 ) return false; let e = new THREE.Vector3().crossVectors( ray, ap ); let u, v, w; v = ac.dot( e ); if ( v < 0 || v > d ) return false; w = -ab.dot( e ); if ( w < 0 || v + w > d ) return false; let ood = 1.0 / d; t *= ood; v *= ood; w *= ood; u = 1.0 - v - w; let pRay = ray.multiplyScalar( t ); return { point: pRay.add( p ), normal: new THREE.Vector3( u, v, w ) }; } let halfSize = _this.collisionGeom.boundingBox.max.x; let mapSubdiv = _this.mapSize / _this.viewSize * _this.subdivisions; let localPos = new THREE.Vector3( x, y, 0 ); localPos.add( new THREE.Vector3( halfSize, halfSize, 0 ) ); let t = localPos.divideScalar( halfSize * 2 ); t.multiplyScalar( mapSubdiv ); // Determine a 'grid' position from the local position let g = new THREE.Vector2( Math.floor( t.x ), Math.floor( t.y ) ); // And determine which half of the grid square the co-ords are in let faceOffset = ( 1 - Math.frac( t.y ) <= Math.frac( t.x ) ) ? 1 : 0; // Use this to calculate the face array index. let idx = ( g.x + ( g.y * mapSubdiv ) ) * 2 + faceOffset; let face = _this.collisionGeom.faces[idx]; if ( !face ) return; // Then use the associated vertices to calc the intersection let v1 = _this.collisionGeom.vertices[face.a]; let v2 = _this.collisionGeom.vertices[face.b]; let v3 = _this.collisionGeom.vertices[face.c]; let p = rayTriangleIntersection( new THREE.Vector3( x, -y, 0 ), new THREE.Vector3( 0, 0, 1 ), v1, v2, v3 ); return p === false ? p : { h: p.point.z, normal: face.normal }; } I'm sure I could code that better.... but really, I can't be bothered.... it works....  

Greedy Goblin

Greedy Goblin

Adding atmosphere and a mini-map

After some extensive refactoring of my messy code (it's still a mess but at least it's refuctored mess now) I decided to add a bit of atmosphere to the game by adding some fog... which also, quite conveniently, hides the edge of the terrain geometry so you don't see it 'popping' in.  😂 I also built a mini-map class to display in the top-left corner of the screen.  Again, easier said than done.  I had no idea how to go about creating HUD elements with ThreeJS... no... idea!  I mean, I've literally only just picked up ThreeJS so I have very little idea what I'm doing with it (disclaimer: I did once upon a time spend considerable time with XNA and the Sunburn rendering engine so I'm not a total noob to 3D rendering).  I eventually decided to create a separate ThreeJS renderer, scene and all that gubbins just to render the mini-map... possible overkill?  Yeah well, so what... it works. Next I need to make the player/camera follow the terrain.... aww what?... how does that work when using a displacement shader (??!?)... the terrain vertices ain't baked in man!  Next blog....

Greedy Goblin

Greedy Goblin

 

Into The Berg

So here we are.  I'm not a seasoned blogger, or skilled game dev or any such thing.  Social media is, in my opinion, a bit of a pain, so don't be expecting regular daily updates or anything like that.  They'll happen when they happen. This project (The Berg) is just my idea of fun in my spare time.  I didn't want to use any fancy game engines or integrate a full-blown physics engine.  The idea is to keep it retro, as simple as possible while still creating something that a) looks fairly decent and b) is fun(ish) to play. I have no idea how this is going to turn out, or if it will ever get completed but we'll all have a good old laugh at my incompetance along the way I'm sure.  😜 Anyway, so I already got part way in to building this thing and thought 'Hey, here's a really dumb idea, why not blog about it for a laugh and waste more of my precious spare time!'.  Awesome! So what I have so far is a simple Node/ExpressJS/ThreeJS set up in VS Code and I've created the island geometry from a 2D texture passed into a custom vertex shader which takes a flat subdivided plane and applies a displacement to each vertex based on the appropriate UV co-ords.  I want to keep a retro look and feel so this isn't some smooth terrain; it's full of lovely flat shaded triangle-y goodness. So I created a terrain height map in Gimp (with the help of an online island generator tool for the contour -> http://exupero.org/hazard/post/islands/). The real size is 2048 x 2048.  I want to create something on the larger scale here! Once my Node/ThreeJS setup was up and running, I built a Terrain class (this is all in Javascript by the way) and set about loading the texture using the ThreeJS loaders and passing it through to my terrain vertex displacement shader. P.S.  The terrain shader took me a while to figure out.  Initially it didn't work quite as expected but eventually I got there.  Essentially I pass the player position to the shader and only sample a smaller portion of the heighmap depending on what view distance I want.  So I'm only ever rendering a small sub-section of the heightmap which changes as the player moves.  This was easier said than done... in my head at least. In the end it looks something like this... float step = viewSize / subdivisions; vec2 pp = vec2(playerPos.x, -playerPos.z); vec2 adjPlayerPos = floor(pp / step) * step; vec2 remainderPP = pp - adjPlayerPos; float uvScale = viewSize / mapSize; vec2 uvOffset = vec2(adjPlayerPos + (mapSize / 2.) - (viewSize / 2.)) / mapSize; vec2 newUV = uvOffset + uv * uvScale; vec4 dm = texture2D(heightMap, newUV); vec3 newPos = vec3( position.x - remainderPP.x, position.y - remainderPP.y, dm.r * heightScale ); vec3 transformed = newPos; Sheesh!  That looks... err... complicated, but it gives a great result....      

Greedy Goblin

Greedy Goblin

 

Part 4: Portals and UI changes

Portals In games you find something that take you to other maps, sometimes this is called a Portal. On the server side Portals are just scriptable objects like NPCs. The game script adds Portals like it would add an NPC: -- Game start up function onStart() local portal = self:AddNpc("/scripts/creatures/logic/portal.lua") if (portal ~= nil) then -- Map ID where this portal leads to portal:SetVarString("destination", "75e3dfcf-479a-11e8-ad09-02100700d6f0") -- Will call onTrigger() when it collides portal:SetTrigger(true) -- Set position of portal local x = -20.059 local z = -0.00870347 local y = 26.7 portal:SetPosition(x, y, z) end -- ... end The script for the portal is similar to a script for an NPC: name = "Temple of Athene" level = 20 modelIndex = 11 sex = 0 creatureState = 1 prof1Index = 0 prof2Index = 0 function onInit() -- Player collides with BB. Make it a bit larger than the default BB. self:SetBoundingBox(-1, -1, -1, 1, 1, 1) return true end function onTrigger(creature) local player = creature:AsPlayer() if (player ~= nil) then player:ChangeGame(self:GetVarString("destination")) end end The process for changing a game instance is a bit complicated. The player is only connected to the game server when he/she is in a game instance. When you click on a map in the map window the client disconnects from the game server and connects to it again, telling the game server which map it would like to access. The game server creates an instance of this map, and adds the player to this instance. A Portal is a bit different, because the server initiates the switch to a different map. Also we must distinguish whether the client enters an existing instance—which is always the case when using the map window and the instance is not full, because these are outposts where people can meet—or the server creates a new instance. This is the case when entering a battle field, which is exclusive for a party or two, e.g. a PvP combat. But when it comes to gameplay and game mechanics, nothing has been implemented yet. Video UI changes Several small changes to the UI were made. The people from Urho3D have updated the UI texture and styles, which I really like, it is so friendly and ... green xD. A big Thank You to the Urho3D developers for this great library! Additionally the position of the health bar above the characters looks now more natural and speech bubbles have been added.  

trill41

trill41

 

top 5 flash game on pc

Today on the Internet are very popular simple flash games that allow you to have fun. They are dedicated to a variety of subjects, but the most popular race and shooters. In such games you do not need to think much, they are very simple and entertaining. For a fun pastime, you should choose only the best projects. For example, you can at any time play free of charge in tractors on the game site  Also here are collected and other interesting unblocked games. Here are the most popular ones. 1. Cool Tractors 7 Differences   This is a game for attentiveness, which is surely worth playing for adults and children. The screen displays two similar pictures, in which there are seven discernible differences. All of them need to be found in a certain time to pass the level. In this game, three different tasks are available. But do not hope for an easy walk, to go through it will have to try.   2. Fast firefighters   The work of firefighters is very much appreciated, because these heroes save lives of people, risking their own. With this game, everyone can try themselves in their roles. The player acts as the driver of the fire truck, which needs to quickly arrive at the scene. In this it will interfere with uneven roads, traffic jams and other obstacles. Upon arrival, you need to get the hose and start extinguishing the fire. It is important to remember that time is limited, and everything needs to be done very quickly.
  3. Taxi Dubai According to the plot, the player comes to Dubai, where he is arranged as a taxi driver. This work is well paid, but it is also rather complicated. It is necessary to have time to arrive on a call, to deliver the passenger to the right place. Control is done by arrows on the keyboard. There are many other cars in the city, so you need to be careful and follow the rules of the road. In the game of Taxi Dubai a lot of interesting levels, the passage of which will turn into a fun activity. 4. Princess Car Dashboard This game is an excellent choice for girls who want to create the car of their dreams. To begin with, you will need to answer a series of questions so that the computer will pick up a suitable machine. Further, it will already be perfected directly from the salon. 5. Jetpack Fighter A very dynamic game where you will need to control a combat fighter. The player will need to fly in the sky at high speeds, and destroy enemies. Just one wrong move will lead to disaster. The screen displays the statistics of the murders and the points scored. Control is performed with the mouse and arrows.

nicola1980

nicola1980

 

Cool things in the Marketplace 9/14/18

If you haven’t peeked into the Corona Marketplace recently, it now offers dozens of plugins and assets, from art packs to audio tracks to useful utility plugins. Periodically, we will highlight a few exciting products which can help you develop your dream app using Corona. Lama Chef This is a new “tap to play” exclusive arcade game template made with Corona. It is easy to re-skin and modify to your needs and has Appodeal ads integrated. Check it out! Old Movie Effects Combine the Old Movie Effects with Corona’s image effects to create an amazing retro feeling for your app. In the demo video, the old movie effects are used together with Corona’s duotone image effect. Cartoon & Comedy Sounds ‘Cartoon & Comedy Sounds‘ by Cinematic Sound Design features a collection of more than 250 hand-crafted , 100% royalty-free cartoon and comedy sound effects.  
View the full article

CoronaRob

CoronaRob

 

Terrain Texture Pack - Volume 1

While we work up to the final small project, we will be publishing assets that will be used in our Game.  We have finished uploading the texture pack to our server and made it available to Epic Games.  Unity has a version of our Texture pack as well.  Just waiting for the final approvals and they should be available for purchase.  Each texture is a complete specular PBR set and comes in resolutions of 2k, 1k, 512 and 256.  Created the materials to go along with our texture sets including a example of panning water and how to make the water any color.  The look is pretty cool, but will be adding Gershner wave and inputs for wind direction and speed in the near future.

I3DI

I3DI

The 3D book

After a break of several years the 3D book project is back on.   A few short words now on what this blog is about.  I have to deliver my wife to the bus station in a few minutes, then a week alone so may have the time then to explain things.  But the 3D book is something I started in 014 and put several years into, then the break, now on again.  A win32 app with a text window and an ogl window. I just remembered I had something written on this so here it is I write to see if anyone in this community of game developers, programmers, enthusiasts,  may be interested in a project I have been developing[off and on] for several years now. So follows a short description of this project, which I call the 3D-Book project.  The 3D-Format Reader: A new format of media. Imagine opening a book, the left page is conventional formatted text - on the right page a 3D animation of the subject of the text on the left hand page.  The text page with user input from mouse and keyboard, the 3D page with user intput from a game pad.     An anatomy text for a future surgeon, with the a beating heart in 3D animation.
    
    A childrens story adventure book with a 3D fantasy world to enter on the right page.   
    ...     Currently 3D-Format Reader consists of a C++ Windows program: Two "child" windows in a main window frame. Two windows: a text-2D rendering window and a 3D-rendering window.  The text-2D window, as its' name implies, displays text and 2D graphics; it is programmed using Microsoft's DirectWrite text formatting API and Microsoft's Direct2D API for 2D graphics.  The 3D-rendering window uses the OpenGL API.     A 3DE-Book page is formatted in one of two possible modes: DW_MODE or GL_MODE.  In GL_MODE both windows are shown; the text-2D rendering window is on the left and the 3D OpenGL window is on the right.  In DW_MODE, only the text-2D rendering window is shown, the OpenGL window is hidden (Logically it is still there, it has just been given zero width).     The 3D-Format Reader reads text files, which consists of the text of the book, control character for the formatting of text, (bold, underline, ...), display of tables,  loading of images(.jpg .png ...), and control of 2D and 3D routines.           3D-Reader programming is based on a Model-View-Controller (MVC) architecture.  The MVC design is modular: The Controller component handles user input from the operating system , the Model component processes the input, and the View component sends output back to the user on the display.  Typical Parent-Child windows programs have multiple "call back" window procedures(winProcs): One for the parent window and one for child window.  The MVC model, simplifies message routing by using a call-back window procedure which receives Windows messages for the main window, the text-2D window and the OGL window.   
    
    A sample MVC program by Song Ho Ahn was used as a template for the 3DE-Reader. Rushed for time now, so a hasty sign off and thanks for reading. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 8 - 21 -18 I spent the last few days working on procedural mesh generation.  First looking to find a bit of code to do what I had in mind.  Which begs the question: What 
did I have in mind?   I just wanted a cube mesh generator such that...   Requirements Input:    An integer  n = units from origin to cube face. Output:  The vertices for a unit cube centered on the origin.                                                                     8n² triangles per cube face. 3 times 8n² verts in clockwise winding order (from the outside of the cube) ready for the rendering pipeline. Screenshot of some cubes generated with the procedural cube mesh generator.                              That was about it for the output requirements.   I did not want to hand code even a single vertex and did not want to load a mesh file.   I was sure the 
code was out there somewhere, but was not finding it.  So, a bit reluctantly at first, I started coding the mesh generator. I started enjoying creating this thing and stopped searching for the "out-there-somewhere" code; although still curious how others did this. Analysis First question: How do we number the verts?  It would be great to conceive of some concise algorithm to put out the cube face verts all in clockwise
order for the outside faces of the cube directly.  That seemed beyond me so I plodded along step by step.  I decided to just use a simple nested loop to generate the cube face verts and number them in the order they were produced.  The hope(and the presumption) was: The loop code was in some order, running thru the x y and z coordinates in order, from -n to +n, therefore the output would be a recognizable pattern. The simple nested loop vert generator did not let us down: It gave us a recognizable pattern, at least for this face. It turned out (as expected now) that all six faces have similar recognizable patterns. Plotting the first row or two of verts you can easily see how to run the rest of the pattern.  Plot of the first(of six) cube faces verts output by the vert generator:  Input of n:  There are (2n+1)² verts per cube face, or 25 verts for n = 2.                                                          This is looking at the x = -n face from the outside of the cube.  To simplify the math it helps to define s = 2n.  Then there are                                                                                       (s + 1)²  verts,  or 25 for s = 4                                                                                       s²  cells on the face, or 16 for 4 = 2. We are going divide each cell into 2 triangles, so there are 2s² triangles per face, or 32 for s = 4. Second question: What pattern for the triangles?  How to number the 2s² = 32 triangles? What we want in the end is a bit of code such that... for triangles T[0] thru T[2s²-1]  or T[0] thru T[31]( for n = 4), we have T[N] = f0(N), f1(N), f2(N).  Where f0(N) gives the first vertex of T[N] as a function of N. and f1 and f2 give the second and third verts, all in CW winding order looking into the cube of course.  Here the choice is a bit arbitrary, but it would seem to make things easier if we can manage to have the order of triangles follow the order of verts to a degree.   Numbering the triangles.                                                   And now the problem becomes: Look at the triangle vert list,  T0 - T8...T31 in the image, and try to discern some pattern leading us to the sought after functions f0(N), f1(N), f2(N) where N is the number of the triangle, 0 thru 2s²-1. This really is the holy grail of this whole effort; then we have T[N] = f0(N), f1(N), f2(N) and that list of verts can be sent directly to the rendering pipeline.  Of course we want these functions to work for all six faces and all 12s² triangles to cover the cube.  But first let's see if we can just do this one face, 0 thru 2s²-1.. Thru a bit of trial and error the 32 triangles(T0 - T31) were ordered as shown.   Now we have an ordered list of the triangles and the
verts from our loop. T0 = 0 5 6
T1 = 6 1 0
T2 = 1 6 7
T3 = 7 2 1
T4 = 2 7 8
T5 = 8 3 2
T6 = 3 8 9
T7 = 9 4 3
T8 = 5 10 11 ... T30 T31. If we can find a pattern in the verts on the right side
of this list; we can implement it in an algorithm and
the rest is just coding. Pattern recognition: It appears T2 = T0 with 1 added to each component
T3 = T1 with 1 added to each component In general T[N+2] = T[N] with 1 added to each component, until we come to T8 at least.  Also it is hard to recognize a relation between the even and odd  triangles,To see what is happening here it helps to look at an image of the generalized case where n can take on any integer value n > 0. Looking for patterns in this generalized(for any n) vert plot we see... We have defined s = 2n. The 4 corner coordinates(+-n,+-n) of the x = - n cube face, one at each corner (+-n,+-n).  There are (s+1)² verts/face numbered (0 thru (s+1)² -1). There are 2s² triangles/face numbered (0 thru 2s² -1). They are indicated in red. It's not as bad as it looks iff you break it down.  Let's look at the even triangles only and just the 0th vert of these triangles.  For any row we see the number of that first vert of the even triangles just increases by one going down the row. We can even try a relation such as T[N].0 = N/2.  Here  T[N].0 denotes the 0th vert of th Nth triangle. Which works until we have to jump to the next row. Every time we jump a row we T[N+1].0  = T[N].0 + 2 for the first triangle in the higher row.  So we need a corrective term to the T[N].0 = N/2 relation that adds 1 every time we jump a row. We can use computer integer division to generate such a term and N/2s is such a term.  It only changes value when we jump rows and we get our first function ...                                                                                    f0(N) = N/2 + N/2s.  (even triangles) Remember the integer division will discard any remainder from the terms and check this works for the entire cube face, but only for the even triangles. What about the odd triangles?  Going back to the triangle vs vert list for the specific case n = 2, s = 4 for the first row; we see for the odd triangles T[N].0  = T[N-1].0 + s  + 2.  And adding this term, s + 2 to the formula for the even triangle 0th vert we get f0[N] for the odd triangles.                                                                                    f0(N) = N/2 + N/2s + s  + 2. (odd triangles) Continuing this somewhat tedious analysis for the remaining functions f1(N), f2(N) we eventually have these relations for the x = -n cube face triangles.                                                                                for N = 0  thru N = 2s² - 1.                                                                                defining   m = N/2 + N/2s.                                                                                T[N] = m,  m + s + 1,  m + s + 2       T[N]   =    f0(N), f1(N), f2(N).  (even N)                                                                                T[N] = m + s + 2,  m + 1,  m              T[N]   =   f0'(N), f1'(N), f2'(N) (odd N) So it turns out we have two sets of functions for the verts, fn(N) for the even triangles and fn'(N) for the odd. To recap here; we now have formulae for all the T[N] verts as functions of N and the input parameter n: Input:    An integer  n = units from origin to cube face. But this is only for the first face x = -n, we have five more faces to determine.  So the question is: Do these formulae work for the other faces? And the answer is no they do not, but going through a similar analysis for the remaining face gives similar T[N] = f0(N), f1(N), f2(N)  for them. There is still the choice of how to number the remaining triangles and verts on the remaining five faces, and the f0(N), f1(N), f2(N) will depend on the somewhat arbitrary choice of how we do the numbering.  For the particular choice of a numbering scheme I ended up making, it became clear how to determine the f0(N), f1(N), f2(N) for the remaining faces.  It required making generalized vert plots for the remaining five face similar to the previous image. Then these relation emerged... For face x = -n         T[N]   N(0 thru 2²-1)  we have the f0(N), f1(N), f2(N), even and odd For face x =  n         T[N]   N(2s² thru 4s²-1)       add (s+1)² to the x=-n face components and reverse the winding order For face y = -n         T[N]   N(4s² thru 6s²-1)       add 2(s+1)² to the x=-n face components and reverse the winding order For face y =  n         T[N]   N(6s² thru 8s²-1)       add 3(s+1)² to the x=-n face components  For face z = -n         T[N]   N(8s²0 thru 10s²-1)   add 4(s+1)² to the x=-n face components  For face z =  n         T[N]   N(10s²0 thru 12s²-1)  add 5(s+1)² to the x=-n face components and reverse the winding order And these are enough to allow us to write explicit expressions for all 12n² triangles for all 6 faces T[N] and what remains to be done is to implement these expression in code.  Which turned out to be a much simpler task than finding the f0(N), f1(N), f2(N) and resulted in a surprisingly short bit of code. Implementation I have attempted to make this C++ snippet of code as generic as possible and have removed any dev-platform specific #includes and the like.  GLM, a C++ mathematics library for graphics developed by Christophe Riccio is used.  It is a header only library. https://github.com/g-truc/glm/releases/download/0.9.9.0/glm-0.9.9.0.zip  That is the only outside dependency.   //  Procedural cube face verticies generator #include <vector> #include <glm/gtc/matrix_transform.hpp> struct Triangle {     glm::vec3 vert[3]; // the three verts of the triangle }; /* std::vector<Triangle> cube_Faces(int n) Input:        integer 'n'; the units from origin to cube face. Output:        vector<Triangle> glTriangle; container for the              12*(2*n)² triangles covering the 6 cube faces. */ std::vector<Triangle> cube_Faces(int n){     size_t number_of_triangles(12*(2*n )*(2*n));     size_t number_of_face_verts(6*(2*n +1 )*(2*n+1));     std::vector<glm::vec3> face_verts(number_of_face_verts);     std::vector<Triangle> glTriangle(number_of_triangles); //  Generate the 6*(2n +1 )² face verts -------------------------------     int l(0);     for(int i = 0; i < 6; i++){         for(int j = -n; j <= n; j++){             for(int k = -n; k <= n; k++){                 // Below "ifS" strip out all interior cube verts.                 if( i == 0){ // do yz faces                     face_verts[l].x = (float)(-n); //x                     face_verts[l].y = (float)j; //y                     face_verts[l].z = (float)k;}//z                 if( i == 1){ // do yz faces                     face_verts[l].x = (float)(n); //x                     face_verts[l].y = (float)j; //y                     face_verts[l].z = (float)k;}//z                             if( i == 2){ // do zx faces                     face_verts[l].x = (float)j; //x                     face_verts[l].y = (float)(-n); //y                     face_verts[l].z = (float)k;}//z                 if( i == 3){ // do zx faces                     face_verts[l].x = (float)j; //x                     face_verts[l].y = (float)(n); //y                     face_verts[l].z = (float)k;}//z                 if( i == 4){ // do xy faces                     face_verts[l].x = (float)j; //x                     face_verts[l].y = (float)k; //y                     face_verts[l].z = (float)(-n);}//z                 if( i == 5){ // do xy faces                     face_verts[l].x = (float)j; //x                     face_verts[l].y = (float)k; //y                     face_verts[l].z = (float)(n);}//z                 l++;             }         }     } //  Generate the 12*(2*n)² triangles from the face verts -------     int s = 2*n;    int q = 2*s*s;    int a = (s+1)*(s+1);     int f(0);        int r(0);        int h(0);     for( int N=0; N < number_of_triangles; ){          // triangles already in CW winding          if( N <  q || N <  5*q && N > 3*q - 1  ){              // do the even indicies             f= q*(N/q); r = a*(N/q); h = (N-f)/2 + (N-f)/(2*s) + r;             glTriangle[N].vert[0] = face_verts[h];             glTriangle[N].vert[1] = face_verts[s + 1 + h];             glTriangle[N].vert[2] = face_verts[s + 2 + h];             N++; f= q*(N/q); r = a*(N/q); h = (N-f)/2 + (N-f)/(2*s) + r;             // do the odd indicies             glTriangle[N].vert[0] = face_verts[s + 2 + h];             glTriangle[N].vert[1] = face_verts[ 1 + h];             glTriangle[N].vert[2] = face_verts[h];             N++; f= q*(N/q); r = a*(N/q); h = (N-f)/2 + (N-f)/(2*s) + r;         }         // triangles needing reverse order for CW winding         if( N >  5*q - 1 || N <  3*q && N > q - 1 ){              // do the even indicies             glTriangle[N].vert[0] = face_verts[s + 2 + h];             glTriangle[N].vert[1] = face_verts[s + 1 + h];             glTriangle[N].vert[2] =  face_verts[h];             N++; f= q*(N/q); r = a*(N/q); h = (N-f)/2 + (N-f)/(2*s) + r;             // do the odd indicies             glTriangle[N].vert[0] = face_verts[h];             glTriangle[N].vert[1] = face_verts[1 + h];             glTriangle[N].vert[2] = face_verts[s + 2 + h];             N++; f= q*(N/q); r = a*(N/q); h = (N-f)/2 + (N-f)/(2*s) + r;         }     } //  Normalize the cube to side = 1 ------------------------------     for(int i = 0; i < number_of_triangles; i++){         glTriangle[i].vert[0].x = glTriangle[i].vert[0].x/(2.0*(float)n);         glTriangle[i].vert[0].y = glTriangle[i].vert[0].y/(2.0*(float)n);         glTriangle[i].vert[0].z = glTriangle[i].vert[0].z/(2.0*(float)n);         glTriangle[i].vert[1].x = glTriangle[i].vert[1].x/(2.0*(float)n);         glTriangle[i].vert[1].y = glTriangle[i].vert[1].y/(2.0*(float)n);         glTriangle[i].vert[1].z = glTriangle[i].vert[1].z/(2.0*(float)n);         glTriangle[i].vert[2].x = glTriangle[i].vert[2].x/(2.0*(float)n);         glTriangle[i].vert[2].y = glTriangle[i].vert[2].y/(2.0*(float)n);         glTriangle[i].vert[2].z = glTriangle[i].vert[2].z/(2.0*(float)n);     };     return glTriangle; }   The rendering was done using OpenGl. // OGL render call to the cube mesh generator - PSUEDOCODE int n(2); int cube_triangle_Count = (12*(2*n)*(2*n)); std::vector<Triangle> cube_Triangles(cube_triangle_Count); cube_Triangles = cube_Faces(n); glBindBuffer(GL_ARRAY_BUFFER, uiVBO[0]); glBufferData(GL_ARRAY_BUFFER, cube_Triangles.size()*sizeof(Triangle), &cube_Triangles[0], GL_STATIC_DRAW); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3*sizeof(float), 0); glEnableVertexAttribArray(0); glDrawArray(GL_TRIANGLES,0,3*cube_triangle_Count);   This just gets the position attribute of the cube face triangle verts; for the color and other attributes there are a couple of options:  Use separate GL_ARRAY_BUFFERS for the color and other attributes.  Or add attributes to the Triangle struct... struct Triangle { glm::vec3 vert[3]; // the three verts of the triangle attribute1; attribute2; ... }; Screenshot of the spherified cube. What's next? Now that we have the cube mesh what we can do with with it practically unlimited.  The first thing I did was turn it into a sphere.  Playing with tesselating the cube or sphere or stellating it with different patterns;  might do.  Ended up trying a few matrix transformations on the cube mesh.  These are shown in the image below.   These shapes are result short bits of code like the code for the column shape below. //Column     for(int i = 0; i < number_of_triangles; i++){         for(int j = 0; j < 3; j++){             if( glTriangle[i].vert[j].y < 0.5f  && glTriangle[i].vert[j].y  > -0.5f  ){              float length_of_v = sqrt((glTriangle[i].vert[j].x * glTriangle[i].vert[j].x) + (glTriangle[i].vert[j].z * glTriangle[i].vert[j].z));             glTriangle[i].vert[j].x = 0.5f*glTriangle[i].vert[j].x/length_of_v;             glTriangle[i].vert[j].z = 0.5f*glTriangle[i].vert[j].z/length_of_v;             }         }     }   Doing this; the blacksmith at his forge analogy soon presents.  The mesh is the ingot, hammer matricies stretch, round and bend it against the fixed geometry of the anvil - coordinate system. I am the smith.   
       

3dBookman

3dBookman

 

Gameplay List of gaming pages of Xilvan Design for 2018!

Hi everybody, Me, Xylvan, announces Xilvan Design are building 3D games. Since 1993, our kindly official gaming related pages (please click on each links): Soul of Sphere Platinum v3.75. Age of Dreams:Abyss of Atlantis v1.5. Lights of Dreams IV: Far Above the Clouds v9.17. Candy World II: Another Golden Bones v9.37. Candy Racing Cup: The Lillians Rallies v2.97. Candy World Adventures IV: A Cloud of Starfield v6.57. Candy to the Rescue IV: The Scepter of Thunders v7,07. Candy in Space III: A dog to the Space v5.47. Candy's Space Adventures: The Messages from the Lillians v17.27. Candy's Space Mysteries II: New Mission on the Earthlike Planets v7.27.     Discover more than 10 games which are coded in Blitz3D by Xylvan(Alex) from Xilvan Design. Download them on my websites: Plenty of games wait you HERE: - Xilvan Design Website - Hope you will like them all!   To watch the videos of our games: - Xilvan Design Youtube Channel - You may need to Subscribe to our channel for more infos about our new releases. Now we have 991 Subs, I need more than 1000 to get fulfilled.   Friendly, Xylvan, Xilvan Design.  

Xylvan

Xylvan

Summer Baseball Challenge 2018 - Part 2 (Game Graphics)

I'm almost finished my "basic" simulation for this game. In my first entry I was talking about how August really wasn't a good month for such a side project due to my corporate tax year end and other meetings I had to attend to. So this game is going to be pretty basic with simulation in mind and player input during the batting phase. I wish I could do more with the game, and I even had some animations made, but the amount of time I have left until the due date (Saturday September 15 2018 11:59 PM IDL) isn't going to allow me to do much, but I'll push out what I can as the requirements said it can be text, 2d, or 3d and be a simulation as well. I wouldn't mind making a full 3D baseball game but that would take months! I have three screen shots to show below but first here is the bird alien creation I made that evening when I posted:   I've modeled, rigged, and textured all the below assets to at least give the game more a visual appeal.   The game will consist of two teams with 9 players per team and use random events to simulate possible outcomes. The player will be able to see their loaded bases, and decide the direction they want to hit to allow runners to make bases more easily. On the computer batting phase, the turn will be simulated right away. I was going to add in real time outfield play but I don't have the time at this point.  The first one to hit 21 points will win once both team have played an equal number of hands. My next blog post will be the final game to complete my entry.   Thanks for reading!

Rutin

Rutin

 

Mobile SOSCC v1.3 Changelog

Hey All, The update has been submitted to Apple! Here is the changelog of all the changes.  It turned out to be a pretty big update. Next update will focus on integrating GameCenter, Leaderboards for Endless Runs, Cloud backup, and Achievements!!   Game is Completely and Fully MFI Compatible! Play the entire game without ever having to touch the screen with an MFI controller connected. Now when you connect an MFI controller the onscreen buttons no longer show No more blocking the view with your thumbs and buttons if you disconnect the controller while playing the buttons will re-appear Precise controls Can now control Title Screen, Store (Pharmacy), Option Menu’s, and Pause/Inventory Screen with the controller! All interactive objects like diary pages, signs, and medical supplies are controller compatible! Updated the Controller+ How To screen with updated description for the new controls Improvements Made: Adjusted the IAP  it will now award 100 coins (from 50) every purchase Added new Shop (Pharmacy) Upgrade you can now unlock Endless mode using 100 coins Permanent unlock you can still unlock endless mode by completing the game, but now for those who wish to unlock it with coins can do so.  REQUESTED CHANGE: Made some balance/difficulty changes Now the game starts off easy and progressively gets harder Each Germ type will slowly be introduced so you can learn their attack behavior HP of each Germ is lowered in their easy variant The chance for coins to drop has increased greatly in the easy rooms!! this way you can quickly earn some coins to get some upgrades that will make the harder parts of the game easier Hearts and half hearts have a greater chance of dropping during the easy rooms remember if you don’t need the heart come back for it later!!   View the full article  

SOS-CC

SOS-CC

 

Mobile Update 1.3 MFI Controller, New Store Upgrade, Difficulty Balance

Hey All, This update was mostly focused on the MFI Controller.  The game was playable using the controller at launch but was limited to just controlling the main character.  Now the game is FULLY compatible with the controller. You can play the whole game, control menus, buy items, etc WITHOUT EVER touching the screen.  Very exciting! Also the IAP now gives you 100 coins instead of 50.  DOUBLE THE COINS!!! There is also now an option to unlock Endless Mode with 100 Coins! Or you can do it for free by beating the game. Last thing is difficulty balancing.  I was getting reports the game was too hard and people could not get past the first room.  So now the difficulty starts of easy and slowly gets harder.  This will allow people to learn the mechanics, enemies, and how to play while earning coins and they feel like they are progressing. This update will be submitted to Apple tomorrow so you should hopefully have it for the weekend. Thanks All, Here is a video:  
View the full article

SOS-CC

SOS-CC

  • Advertisement
×

Important Information

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

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!