Leaderboard


Popular Content

Showing most liked content since 12/21/2016 in all areas

  1. Hello all, next version will certainly be 2.6 but it could also be 3.0 depending on my progress regarding WebGL2.0 support I'll use this thread to track progress. Done so far: WebGL 2.0 context initialization Shaders migration Texture LOD: used by PBR shader Depth Frag: Used by logarithmic depth buffer Vertex Array objects: Used to speed up vertex buffer submission Standard derivatives: Used by bump
    10 likes
  2. The server ran out of electricity powder, and the administrator forgot to fill it up. The Pico 735 extension was also acting funny, and overall the nginx server started getting really emotional. I made a threat to replace it with apache, and it actually worked. You know those servers, they sometimes need to be dealt with a firm attitude.
    9 likes
  3. Hello, You will find a small demo made with Babylon here: http://www.studio-ramble3d.com/suunto/ and a car configurator: http://www.studio-ramble3d.com/WebGl/bmw/ And some other projects at this address: http://www.studio-ramble3d.com/temps_reel.html#works Thanks Babylon.js
    8 likes
  4. 7 likes
  5. So for the past two weeks I really started digging my teeth into a full scale game to launch on a private server here at some point with BJS and the engine. I have developed a series of tools to make this a possibility over the past year or two and am now applying them in production code. Already developed are a Asset handling system that will allow me to load thousands of entities with minimal draw calls and keeps things very non repetitive when placing entities. The level editor is almost wrapped up and has most of the basic features active already, there is quite a few things to add soon but that will be later down the development line when more core elements are introduced and wrapped up. There has been hours of cooperative talking with friends to help development of characters for the main story line and the setting of the overall worlds aesthetic feel. The final goal of the game however though featuring a story based single player will be intense online competition with a good plan for economic viability with more details being presented at a later time. Ok so lets get to the good stuff... I guess first a few concept sketch's. The Scans were horrible... but at least the idea comes through... There are tons more of these so I wont run out of inspiration. Next I guess are some pictures of the Level Editor I would post some of the 3d models from the scan-line but I would rather only post in game shots. Later at some point Ill post a tutorial of how I am setting up my vegetation rigs and making it so I can generate so many different types of foliage from the one obj import. And a more updated Screenshot: Soon Ill post more pictures of full levels, but I am waiting to release everything on this. Oh here is the model and mock up texture for the main character Roark. So far lots of progress has been made and soon I should be able to release a preview video of a cut scene render out in real time. Also sometime today or tomorrow I will post that vegetation modeling and texture tutorial I was talking about, Part 1's video is already recorded I just want to do the voice over. Let me know what you guys think, I should be posting on this periodically. Ohh yeah I almost forgot... in order to do my animations I am wrapping up the FBX converter I was writing and that will be publicly available as its necessity arises.
    6 likes
  6. Hey guys what's up. Been fiddling around with stuff, trying to get to know animations and make it a bit easier for me to do stuff and thought i'd post this here for you guys to see in case someone would happen to find it useful. Playground here: http://babylonjs-playground.azurewebsites.net/#IQ1MB#1 Not much else to say, it is what it is but i don't know what that is. But i would like to give a shoutout to @Wingnut who bombarded me with a ton of information about animation and examples etc, thanks!
    6 likes
  7. Hello people, Few announcements: We can now use BMFont to render text with Text2D PG here the documentation of the Text2D was update to explain the different techniques you can use to render text (normal, Super Sample, Signed Distance Field, BMFont) and which one you should use. (Thanks @MasterK for the idea and help) There's a new page about how the Rendering is working, it will help people to understand how to get transparent sprites, for instance. (this page is currently only accessible by the link I gave before, because I've messed up the link in the Canvas2D Homepage, yeah, that's my special ability, DK loves it) Some new Playgrounds are available at the bottom of the Home Page I was ill during the release of the 2.5, so I couldn't update the doc and the what's new, so I've updated the what's new of the documentation web site, go take a look if you want. As a separate module, Canvas2D has its own section in the What's New. So what now? Well, I try to recover from illness and not going back sick again, so I'm starting to code again, slowly... But I'll do the following things (in order, I guess) WorldSpaceCanvas with node tracking and billboard ability, for mister @royibernthal Primitives Intersection Manager for @ller the goal will be to provides at each render a list with for each entry two primitives that intersect. This manager will serve as the foundation for intersection, we will discuss/design/develop more handy stuff on the top of it. If you have idea/feedback/requirement, you can start a topic and mention me! I will try (but I should succeed) to develop a feature to clip the content of a Group2D, apparently it won't be harder to use a Shape as the Clipping geometry (if no shape then the whole rectangle surface will be used) to get more fancy stuff. But @MasterK and other, you will finally be able to develop scroll-view without relying on hacking! I was reluctant to develop this feature not because of its complexity (it's not a walk in the park anyway), but because if it's overused the performances may drop. But well, it has to be done and maybe the perf won't be that bad. For those who are familiar with the Canvas2D Architecture a Group2D that will Clip its content will be turned into a Renderable Group2D and basically I will draw the clipping geometry to the stencil buffer, then I'll draw the Group2D's content with a stencil check to clip away the pixels that are out of the geometry. So in theory: not hard to code...But there are so many cases, rendering types, that well...Future will tell! I will resume the work on the GUI Lib, I'm motivated as ever to make a good one! Cheers!
    6 likes
  8. On Christmas day I was chatting to a gaming friend and he reminded me that Quake, a game released by Id Software in 1996, was 20 years old in 2016. Like Babylon.JS, there was an active community around Quake that produced new game maps, better textures, weapons, monsters - and still does today. So on Boxing day, rather than fight the rampaging hordes in the shopping malls, I decided to spend a few hours seeing if I could bring the world of Quake to BJS I started here - Quaddicted - a site that features some downloadable game maps and reviews. As I was experimenting, I wanted a reasonably small file with a reasonable review, and came in a .bsp format (game maps also come in a .pak format but that involves a longer extraction process). So I chose a map named "REoL TOUGH: Demise!" by "George J. Fiffy II" . Ironically Mr Fiffy released the map on Boxing Day 1996 - another 20 year anniversary ! Extraction of the .bsp file For this I used this Blender add on - Blender Quake BSP Importer. It works in Blender 2.71 but not in Blender 2.76. The extraction went nicely and I saved the blend file and opened it in Blender2.76. Then I hit a snag. When I exported the scene to BJS there were no textures! . Looking at the list of textures used in the scene, I noticed none of them had a file type - just a name (eg: "sfloor1" instead of "sfloor1.png"). So I had to rename all the textures in my .blend file and then save them - not hard just a bit tedious. I can explain in another post if people want to know how. And here is the result: Quake1 The only things I have added are : CheckCollisions, on certain meshes (walls but not most doors). And of course there no monsters/weapons/traps/teleportation yet. Maybe when I feel like doing something different again - I can look at those features And just a couple of comments. In these days of MB textures, the largest texture file in this demo is 45 KB and there are only 3 textures over 10KB. It shows of course - but not nearly as badly as I thought it would. Looking at the file in Blender it has 32,915 verts but 23,000+ are duplicates but removing them all at once with Blender's "Remove Doubles" leads to some odd shading - so it looks like will have to be done with just specific parts (tedious again). If you want to see this Quake Map being played, here is a YouTube video : Demise!. Start at about 1 minute. Anyway Happy New Year to all cheers, gryff
    6 likes
  9. Hi People, Long time that I didn't develop new features but here we go: AtlasPicture is now supported, see the documentation about it. Scale9Sprite is a new feature of Sprite2D class.The Sprite2D documentation was also updated. You can play with the following PG: Scale9Sprite AtlasPicture Of course you can use Scale9Sprite for a Sprite generated from an AtlasPicture. So @grayger @BitOfGold @jpdev and @MasterK you should be interested about these. If anybody have question/feedback about these feature, please create dedicated forum topic and mention me, thanks.
    5 likes
  10. Hey! Hey! With @Sebavan we added the initial support for WebGL2. Now all shaders are automatically converted to WebGL2 and fallback are in place. This is completely transparent for developers. Please feel free to report any issue you can find! Feature wise there is no change for now but we are now ready to add support for any webgl2 feature
    5 likes
  11. http://www.babylonjs-playground.com/#UCFKM#12
    5 likes
  12. Hi everyone! Here is Prosecution, a 2-button Arcade Game that @Théo Sabattié and I (Chadi HUSSER) made with the help of a sound designer, Aristide HERSANT-PREVERT. Take control of an airplane and try to dodge as many missiles as you can! You can find it on http://babylonjs.com/ Direct link: http://cdn.babylonjs.com/wwwbabylonjs/Scenes/prosecution/index.html Thanks to Babylonjs team for this engine and publication on demo tab. Thanks to @Temechon for his course at Isart Digital. Aristide HERSANT-PREVERT LinkedIn, SoundCloud, Vimeo Theo SABATTIÉ LinkedIn, Twitter, Github Chadi HUSSER LinkedIn
    5 likes
  13. Just having a play around with sps, wanted to see if I could come up with a simple collision system from scratch. Only designed to work with spheres. http://www.babylonjs-playground.com/#1C2HFL http://www.babylonjs-playground.com/#1C2HFL#1 less segments http://www.babylonjs-playground.com/#1C2HFL#2 Have a play around with number of particles, size of particles and max speed. Max speed should be less than radius, too big and the particles escape.
    4 likes
  14. I haven’t visited the forum for a week or so and decided to catch up with the latest posts while enjoying a coffee and large bowl of Kelloggs for breakfast. Reading this thread is fascinating. It’s a bit like watching children in the school playground squabbling over how fast and round the ball is and who is contributing to making it even rounder and faster. Interestingly. there is no arguing about whose ball it is – clearly all the kids see it belonging to the community and each cares about making it better for the good of all. It made me smile and then somewhat perplexed. Allow me please, to put my 2 cents worth into it and to give a perspective as to where I am in my Babylon journey and why I am starting to question whether I should be travelling along this road at all. I am a 64 year old retiree looking to spend my time not festering into senior years but keep body mind and soul active and alert in an attempt to stave off the inevitable. I have run a successful business in my time and while having had almost no exposure to 3D, graphics or script writing am no numbty and quite capable of assimilating new skills and learning. I have a new small business interest that is in the early stage of development and I can see how the global move to all things 3D could be of enormous benefit to that business and hence diving headfirst into to Blender/Babylon will fulfil many of the aforementioned objectives I have set myself. So my take on Babylon so far ……………….. I am truly in awe of those who seem to pour all of their precious time and energy into it’s development. I am amazed at what is achieved by dedication and vision. I am inspired by the commitment others make to it’s development and those who diligently scan the forum offering help and guidance to those, like me, with questions and queries. There are of course, a range of competencies of the various users but I suspect this forum is initially used by newbies like me, primarily as a source of demystifying the fog of ignorance and to lay out bit by bit the path of their development. @Deltakosh and @davrous – keep developing away at whatever pace you deem necessary to keep the product at the forefront of the 3D world. I’m sure everyone admires the initial vision you had for Babylon but also your continued dedication and passion for it’s future. Even after all these years and undoubtedly the trials and tribulations, problems and setbacks you have endured along the way your passion is truly inspiring. To everyone else that so willingly contribute to both it’s development and to this forum - thank you. Each contributor to this thread obviously cares about Babylon and it’s future. So as a newbie BOTH to Babylon and Javascript and 3D modelling in general ………………………. @Wingnut – Babylon IS NOT scary but it is very very frustrating, and for me the Achilles Heal is Documentation / Tutorials that are so inadequate for the newbie. I also see that the innovative Playground could be better used as a teaching aid. I won’t attempt to create a long list of what I personally feel are it’s weaknesses here and now – perhaps something for another time. I have a little time on my hands, so would be very happy to play a part in any future project to improve and expand both documentation and tutorials, not of course from a technical angle - I simply don’t have the expertise - but more guiding the writers to simplify and expand on explanation from a newbies viewpoint. Richard C
    4 likes
  15. I'm accepting PR from people, specially the ones I've spent countless hours to dev/fix bugs for them
    4 likes
  16. PR just submitted in short : Brand new feature : Mesh Facet Data Examples : mesh.updateFacetData(); // enables and computes the facet data for this mesh // this can be called on demand, if the mesh is // morphed for instance, even in the render loop // get the index of the closest facet to (x, y, z) in the world var i = mesh.getClosestFacetAtCoordinates(x, y, z); var position = mesh.getFacetPosition(i); // returns the i-th facet world position var normal = mesh.getFacetNormal(i); // returns the i-th facet world normal // then do stuff with these values, i.e your own physics... // you can even get the closest point to (x, y,z) ! var proj = BABYLON.Vector3.Zero(); i = mesh.getClosestFacetAtCoordinates(x, y, z, proj); // proj is (x, y, z) projected on the closest facet Note : all the facet data computation are done by ComputeNormals() in the same loop, so it's really fast and doesn't impact the usual normal computation.
    4 likes
  17. I won't speak on davrous behalf, but if what he likes is doing some VR with BJS: it's his own right to do so. As long as he's not breaking the engine in the process, but we all now he won't because it's the number 1 rule. Saying what we should do, which trend to follow, which strategy to apply is...unreal to me. We are not accountable for the choice of what we decide to contribute on. Really, unless DK states otherwise, that's the way I think things are going. Now what is interesting to note is the true intent and maybe also the consequences of doing something new. Davrous wants to support VR, ok, he's got the right to do so, hell yes, he's the co-founder of the lib. But there's some kind of being accountable of your contribution to the rest of the community. This is not formally defined but the cursor can goes from doing a PG to demonstrate your feature, writing a blog post, a class documentation, an overview, some tutorials, answering to people using your feature in the forum, and so on. The thing is the contributors don't have the same level of this and I don't judge/blame anyone. Again, this is a free project, doing on free time, how people can blame someone who's contributing!? DK said it in a blog post few months ago: you don't like it, go away, don't use it I would say: please help us to fix the issue by contributing. But blame? It's cheap and convenient. @Wingnut I understand what you're saying, but the cause of what you say, for me, has nothing to do with "going to fast", making "too many features". Many people come here with no knowledge of 3D they did 2D Games and now are switching to 3D, whether it's BJS, Unity, Unreal Engine of whatever: you've got to learn some 3D skills! When you mention: quaternion, world spaces/matrix, material, shaders: these are not bjs stuffs, but 3D ones! They are universal and almost every 3D engine deal with them the same way, some convention may vary, that's all. Is it easy to learn 3D? No. Does bjs makes it easier to learn? I don't know, or rather I can't judge, but I would say it helps, yes. And what is the consequence of having the VR feature supported in the Engine when you work on a simple (or even complex) non VR Scene!? None! Ok, if you look at the Class List in the reference documentation it's getting a lot more and more crowdy, but come one, the impact is null otherwise and I think we can make this statement for 80% of the stuffs. I will agree with @Temechon when he says "sometimes it's easier to ask a question than look at the doc or dig yourself", yes it happens, it's human, everybody did it and the more the lib is popular the more you'll have to deal with such thing. And that's why I think that a Forum is not the best medium for users/contributors interactions, because with forum it's kind of the groundhog day, you've got the same questions coming over and over again. For me the best medium for users/contributors interaction is a Stack Exchange site. I know I shouldn't say it because it could lead to a whole new wave of topics/rants, but that's my own point of view and it's worth....not much, because I'm not in charge: and that's normal and I accept that. For me the real pain point, the sources of frustrations are more: 1) At first the tutorial section was enough for the size of the engine, but the lib getting bigger and bigger the list is too big, so it's getting difficult for a new comer to find what he wants (but if he's motivated: he still can). That is why I proposed the Overview section, by doing so I hope it will avoid recurrent "new comers questions" because a tutorial may not be as complete and also the overview is more built like a wiki. For Canvas2D there's one listed entry to learn of to use it, but this entry has links to 20 more pages: it's a wiki and through the years I found that it's the best way to help people to understand what they're getting themselves into. But like I said above this it not something everybody do, and I won't blame/judge. Maybe the solution to this would be to accept a pulling request of a new feature only if specific requirements in term of documentation are met. Honestly, as a contribution I would think it's a PITA, but I would accept it. 2) I've said it many time internally, but not here, but for me the reference documentation is not good enough. There're two issues: every public class/prop/method should be documented (and despite @jerome's efforts we're not there yet) and a class should list the props/methods of the whole class hierarchy tree: when you look at Mesh, we should also see the props/method of AbstractMesh and Node. I've requested it to @Temechon which he behind the doc system but it's too difficult to do right now. So again, for me it's not about new stuffs, it's about how we release them. But I'll say this again: considering how the project is ran, I think we do fine. I hope we will improve not only on new features but also how. Forum questions/answers don't last forever, it should be used only for specific things.
    4 likes
  18. So far on this thread, posts by a lot of very very good coders - people I respect, and admire their coding skills I, on the other hand look at BJS from a different perspective . I started out almost 3 years ago looking at 3JS, BJS, Blend4Web and x3dom - to see where I might go from VRML. And BJS was my choice as it looked like there was good help if needed. I look back at my first year - and BJS seemed to move at a steady speed. The last year, I agree with @Pryme8 - it seems to be moving very fast - but I don't think fast enough to put me off. And perhaps, most importantly, I can build with basically two tools - Blender and Notepad++ - which are both free I have never thought to myself that I must know everything - and I sure as heck don't. Currently, I'm experimenting with @jerome's SPS and the "Ray" feature of BJS. The latter, in particular, I'm having trouble getting my head around - but I persevere by looking at PGs ( but a nice tutorial would be useful). The way that BJS is developing, to me, seems to be very professional. Almost three years ago I published the "Blue Lady" - it used BJS 1.14(?) but today uses BJS 2.5 with no code changes. As DK and jerome put it: And that is important to me, and hopefully everyone. And I continue to be impressed with the development of the Blender Exporter - also important to me. Anyway, enough rambling from me for now ... but tell your fried Pryme that nothing worth doing involves no work cheers, gryff
    4 likes
  19. This is unfair We have a stable channel, which is moving every 6 months or so: https://github.com/BabylonJS/Babylon.js/tree/master/dist. Documentation is following this pace. This is for people who wants to be on a stable version. Every version comes with a kind of resume: https://github.com/BabylonJS/Babylon.js/releases/tag/v2.5.0. This is the only thing you have to track as a newcomer We have dev channel where we develop openly. Openly means that you see all the updates, changes, discussions and so on. If this is scary, it is like a movie: don't watch :). But honestly, we (collectively) put a lot of energy to keep things compatibles. The code your wrote with bjs 1.4 should still work with 2.6-alpha. That's not nothing. We add features, because, well, this is a vibrant ecosystem. So I'm not sure what we should do then? Develop on our own and keep the community updated once in a while? Not adding new features?
    4 likes
  20. I've just added a gallery to my website where I've put some of my scans. WARNING: Not safe for work! If you click on one of the scans you will see the babylon.js viewer that I created to allow you to interact with the model. I have panning working for mobile devices (use 2 fingers and drag) but its not perfect and sometimes conflicts with the pinching for zooming. I still haven't figured out how to show quads in the wireframe which is a shame because triangles make the topology really confusing. I wanted to use it as a selling point to show people how lean my topology is. www.punkoffice.com/gallery
    4 likes
  21. I got the same idea than you in the beginning (it is my point of view as a "newbie", so please correct me if I'm wrong). First problem: I don't know a lot about the market of html5 games, and to make a living out of it, I have to know it. So that's one thing to learn obviously since selling a product without knowing the market would be the same than shooting yourself in the foot. Second problem: I didn't knew how to properly use my engine (and I tried a few also), to make the ideas I had come to life. For me, making a living off html5 games also means knowing the tools you'll be using for your craft. What I decided to do: I decided to learn all of that, making small games, learning the market, getting in touch with people who have been around for muuuuuuuuuch longer than me (not a difficult thing), and my goal for 2017 is to try to make some revenue out of it. So I'm keeping my day job, I'm also doing what I like to do, while making some trials and errors to learn how everything is working behind the scenes. Looked like the best option to myself.
    4 likes
  22. `Phaser.Game` is a function, which accepts arguments, when invoked with `new` it creates a new instance of an object, this is sometimes called a class even in JS (its not, but it gets tricky, lets just assume for now that its close enough to C or Java classes). This type of function is called a constructor function, as it is similar to a constructor in classical languages. var game = new Phaser.Game( 800, 600, Phaser.AUTO, '', { preload: preload, create: create, update: update } ) The code above creates a new variable and assigns to it the output of calling the constructor function with a set of arguments (I've arranged the code for readability here, you wouldn't necessarily want to do it like this in your code base). In plain English, you invoke (call, execute) the Phaser.Game function with a list of arguments and you get back an instance of a Phaser Game which you can then use to do lots of cool stuff with. By checking the Phaser documentation we get some details on the arguments the function (constructor) expects. The ones we have specified here are, in order, width, height, renderer, parent, state: var game = new Phaser.Game( 800, // width 600, // height Phaser.AUTO, // renderer '', // parent { // state preload: preload, create: create, update: update } ) Again, by checking the docs we can find out what each of these arguments actually means, as well as some defaults that will be applied and some expectations as to the type of variable to use. The height and width set the game dimensions, the renderer sets the type of renderer to use (AUTO will let Phaser choose, it'll prefer webGL rendering when available) and the parent specifies an element to stuff the canvas element into (Phaser will create this), an empty string should default to the window (I'm guessing here, it might create its own parent, in any case, you've specified things correctly to get something up and running). This brings us to your point 2. // state { preload: preload, create: create, update: update } As you should know, this is an object, and you have passed this object to the constructor function as an argument, by checking the docs this ties up with the State object that the constructor expects. Again, by reading through the docs and getting to the Phaser.State docs we get a good idea that this object defines a set of functions which get run at specific points during the life cycle of a Phaser game, hence, these sort of functions are often known as lifecycle methods. An object in JS is just a key-value mapping, in this case named keys (which is requisite for a JS object) and some functions. These tie up some functions to callbacks that Phaser invokes at set times. Something like the following functions would do stuff: var preload = function () { console.log('preloading...') } var create = function () { console.log('Preload finished, creating state...') } var update = function () { console.log('Game is running') } These functions just log stuff out but I'm pretty sure they would work inside Phaser and that Phaser is not expecting them to return anything. They'll get run in the order in the code snippet, purely because that is the order that a Phaser Game executes them in. I'm not clear on all the internals of how a Phaser Game bootstraps but it'll invoke the preload function you have supplied, by convention this is used to load assets (as loading assets is generally asynchronous I don't know how Phaser knows to wait before calling another function, but, check the docs and examples, I think you need to use the Phaser load functions and then Phaser knows when its preloader is complete and will invoke the next lifecycle method). The create function sets up the state, this could be creating variables or other structures needed during this state (note that in our example we have created a single-state Phaser Game), this create function will be called after the preload has completed and moves us towards update. The update function gets called every game tick to update the game, this is usually solely for updating game logic and structures i.e. if a bullet is moving then you update its position here. There are two other lifecycle methods you would expect for any basic game, that is render and destroy. Render is handled by Phaser for you, although you can supply this function if you prefer. Destroy is implied to be when the window is destroyed, although I think you can define this yourself too, but you don't always need to as the browser is handling memory etc for you. Hopefully this helps, Phaser is a state machine and your point 2 regarding the state object simply sets that up, Phaser then invokes those functions for you at set times and you have a flow of execution through your game, namely setup -> update -> render, which is a time-honoured flow for gaming. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects https://phaser.io/docs/2.6.2/Phaser.Game.html https://phaser.io/docs/2.6.2/Phaser.State.html
    4 likes
  23. Oh my God! Check this out... https://github.com/BabylonJS/Babylon.js/pull/1628 My FIRST-EVER commit to core! Holy crap, Batman! I'm SO proud! (But still SO scared!) Be warned. I edited Math.ts. You all should realize that... a child just touched an Airbus A300 airliner with over 400 people aboard! Expect delays from in-flight explosions! Maybe they won't ever re-compile to JS, and it will all be okay, and I can quit chewing my nails incessantly... soon.
    4 likes
  24. 'Twas the frame beforeRender, and all through the scene, Not a vertex was indexed, the canvas was clean. Observers were hung on event loops with care, In hopes that St. Deltakosh... soon would grow hair. The cameras were nestled on Y-offset peds, The lights well-positioned in greens blues and reds. A box and a sphere and a tube with a cap, A torus, a plane, and a fresh-baked light map. When out of the engine arose such a clatter, It woke-up young Davrous to check on the matter. Away to the Windows... he flew in a flash, To resize the viewport and refresh the cache. The specular shined on a heightMap of snow, The includedMeshes were starting to show. When what to his wondering eyes did appear, A Wingy-made bobsled and 12-pack of beer. The BJS framework so lively and quick, Was rendering elves each with onPointer pick. They all went to work wearing new Christmas formals, Connecting the verts and adjusting the normals. A beautiful pano on isBackground Layer, And cool twinkle lights... it just couldn't be gayer. This holiday playground was now well-awake, So Davrous relaxed with a nice Christmas cake. More rapid than beagles the elves made their fame, They yelled at observers, and called them by name: "OnPointer, onReady, onActivate true." "onAfterUnbind, onBeforeRender, too!" The scene came to life at a fine framerate speed, The particle snows had a great random seed. The post-process pipe added gorgeous effects, The boys at Three JS were all nervous wrecks. Ol' Davrous and DK and all of the puppies, Were dancing and singing like freshly-fed Guppies. And Davrous, he smiled and he started to sing... “Merry Christmas to all, and to all a good ping!” It's party day! Nov 1 - The Wingnut Chronicles reaches 50,000 views, Dec 9 - Wingnut reaches 3 yrs on-forum, Dec 13 - The Wingnut Chronicles - 3 years on-forum, Dec 15 - Wingnut - 59 years of continuous air-usage (piss-poor resources management, eh?)
    4 likes
  25. Time for the weekly update I have been working further towards the goal of having different skills in the game. So now there is casting complete with a cast time, cast bar and an effect on the target of the cast: You can also cancel your casts by moving or pressing esc. Pressing the button again won't cancel it to allow for "button mashing" to recast as fast as possible. When creating the cast bar I noticed that parts of my ui were not behaving correctly when the browser window is resized. Upon investigation and debugging I found the reason: When using canvas2D and placing something on a fullscreen canvas with marginAlignment, never set x or y on that object, as this will disable correct realignment on window size change. For anyone curious here is a playground for the heal effect on the target: http://babylonjs-playground.com/#1SKP0W#0 All that's needed to get the final effect is setting a circle texture on the planes. Yesterday I was in the mood to try a bit of modelling in blender, here is the new enemy I have created: It's some kind of scopiony monster that will roam the world and sting anyone who comes too close. I decided to name them "Scry".
    3 likes
  26. Eh, my mistake here Sorry dude, I'll post a new screenshot in few minutes Here we are :
    3 likes
  27. Are people expecting to learn a powerful framework in a day? I know every powerful framework I've used required days of tutorials, sifting through forum posts and GIT issues. If BJS is scary try using openCV :/
    3 likes
  28. http://learningbabylonjs.com/ https://www.packtpub.com/game-development/babylonjs-essentials
    3 likes
  29. Hi BabylonJS community, here is another update for my challange project: Let's start with a bit of deployment - the game can't be run locally forever, or no one will ever see it: So I want my game to run on a vserver using apache & node. NodeJS will only handle the websocket request. All pages, scripts and resources will be served by the apache. Just as a challange (and maybe to allow it to work with some firewalls) websockets and websever should both run on port 80. I finally found the magic apache 2.4 configuration: RewriteEngine On RewriteCond %{HTTP:Upgrade} =websocket [NC] RewriteRule /(.*) ws://localhost:3001/$1 [P,L] This allows the apache to server pages normally on port 80 but if an Upgrade to websocket-mode is received everything gets routed internally to port 3001. So my gameserver in node is running internally on port 3001. To work this requires apache 2.4 and mod_proxy and mod_proxy_wstunnel. (For debian users this means you need "jessie", wheezy's apache is not up to date enough.) In the last update I had a hand coded 20 x 10 array holding indexes for map data - this works, but I want to be able to edit the map in a nice way. So now the map can be edited in free map editor "tiled". Natively tiled stores the created maps in ".tmx" files. The content is actually a pretty nice xml, so you I can access it this way in my nodeJS server: Step 1: Get the correct module to read xml files: import xml2js = require('xml2js'); Step 2: Use the module to read the tiled map and get to the map info & map data: let parser = new xml2js.Parser(); fs.readFile(__dirname + '/data/world.tmx', function(err, data) { parser.parseString((<any>data), function (err, result) { let width = result.map.$.width; let height = result.map.$.height; let data =result.map.layer[0].data[0]._; … } That was painless (worst part finding the typescript definitions for the xml2js. I can’t seem to find anything on the DefinitelyTyped github repo, I blame github user interface...). The data is a csv representation of the map tiles. You can choose csv in tiled when creating the new map, parsing this into an number array in JS was no problem. As a bonus I now use tiled not only to define the map but also place enemies and the player spawn point. I do this using an object layer in the tiled map and when loading the map the name of the object defines what's happening, the coordinates of the object define where. For example the big "slime" boxes mean, that in the center of the box a slime is spawned and the box area is the area the slime it roams. Here is what this looks like in tiled: The upper left part of this map as it looks in game: I also tested if the game runs in all browsers that are currently installed on my system, so I had a big in game meeting with myself: The result is amazing, the performance seems to differ a bit, but it runs in all four! - big thanks to the babylonJS team And the latest addition to the game is finally the skill bar, you can already see it in the browser screenshots above. It's implemented using canvas2D, the icons are 50x50 pixels and drawn in inkscape - I was surprised how hard it is to come up with icons, let alone make them not ugly. The skills are clickable and you can also use them by pressing the corresponding button, clicking and keypresses highlight the used skill. All done with canvas2D. The features are: The buttons are clickable by mouse and also by keybind. The keybind is indicated on the button. Cooldowns are visualized by graying out part of the button. Activating a button highlights it as feedback to the user. The skills can have a cooldowns, but they don’t have to. Which skills are available and which cooldown they have (if any) is all decided by the server. In this gif you see the test-skill "wave" with a cooldown, and then the attack ability without a cooldown: Okay, that is it for this update. I am still having fun with the project and at this point I am sure that by the end of the challenge there will be a playable result for everyone to try out. How "deep" the game play will be is a question of available time and motivation until the end of February. Also: any feedback is very welcome!
    3 likes
  30. A non-technical mistake is to design a multiplayer game that needs multiple players. Really the extra players should add to the fun of the single player experience, rather than be fundamental to it. Else there is nothing to retain initial players sufficiently long enough for others to join so the game never achieves "fun-velocity". I made that mistake before, with an arena style game that was hectic fun with 6+ players, but absolutely pointless with 1, monotonous with 2, formulaic with 3, etc ...
    3 likes
  31. Hi, I want to draw triangle wireframe on shaded mesh and ensure it works with rendering groups. (Previous thread: http://www.html5gamedevs.com/topic/27539-how-to-draw-triangle-wireframe-on-shaded-mesh/) I insert some code to BABYLON.Mesh.prototype.render to achieve the effect. Playground: http://www.babylonjs-playground.com/#A1H3J What do you think about this approach?
    3 likes
  32. It looks like 2017 is going to be a huge year for HTML5. Flash is officially being dropped from Chrome and Firefox, touch payments will become prominent with the launch of Apple Pay and Google Pay on the mobile web, and Facebook is launching Instant Games in a renewed show of faith in HTML5. Are you going to capitalize on any of these shifts in the market? What are your plans for 2017 and beyond?
    3 likes
  33. http://dev.end3r.com/2017/01/enclave-games-in-2016-and-plans-for-2017/ Expanding and diversifying my portfolio of services even futher, while making some games in the meantime. For example running gamedev meetups and workshops locally, or launching Open HTML5 Games portal (games/news/jobs). You don't have to focus on making games alone if you want to have a stable income.
    3 likes
  34. 3 likes
  35. @JCPalmer and @Wingnut I think there're things to considers about your feedback on more visibility/forecast and more documentation. On one side you've got theory: what you know you should do to make things right and perfect, on the other side there's reality: for most people (if not everybody) it's a spare time project and we (sometime) don't want to do the painful stuffs because your pro job is also being a programmer and you have to do them (I hope ) so we may get a bit loose on some things... So you can't judge/compare an OSS project like babylon.js to other big/more pro supported OSS ones. IHMO, considering the facts: that it's only free contribution from people on their spare time, I think we did a pretty good job. We can always do better for sure, but still... I've tried to bring more "planning"/forecasting internally in the team because I thought it would be a good thing, a first step and the second would have been to share it. It was my instinct because it's why I'd do in my daily job, but truth is it can't be run like that, because there are too many factors that will ruin your forecast and make things unpredictable. For instance, because we spend time to support people in the forum, it's less time spent on coding. And I think we (the community) can be very proud about what we're doing on this matter: we help everybody, try to solve their issues and realize some wishes when it's possible, but it takes an unpredictable amount of time if you want to help everybody's request. For instance I didn't plan to code Scale9Sprite, AtlasPicture support in Canvas2D, but when few people mentioned it I figure it would be good to do it. I couldn't I've planned this because I even didn't think/know about it in the first place. I also didn't know about Signed Distance Field for text rendering but when @davrous mentioned it I immediately thought it would be too cool to support that and I'm glad that we have a fast pace on this! But it took me one week to get it fully done... Truth is many (not to say most) features came to life from little unpredictable sparks: you can say we are very agile! When you add the fact that's many of us can't allocate a fix amount of time on this project, it's makes forecasting very difficult. I really understand the wish for everybody to have a better visibility of where things are going, but truth is we are almost all on the same level. I guess nobody have clear forecast of what they want to do on a monthly (even weekly) basis... We could do better on the ref and overview doc, more PG, integrating unit tests and integration tests to avoid regression, but these things takes times, courage, discipline. I'm not judging, I'm just saying it's hard to be on the top for all these things when it's already not easy to do the vital stuffs (forum, fix bugs, dev new things). But again, I think we're improving on this, when I started one year ago, Wingnut was mostly talking on the forum and now he contributes, help us making the link from newcomers and us, detecting regression/dead stuffs, it's really helpful and more people are doing that (@Nabroski for instance). I know you'd like more improvements on the user on boarding and the overall doc, but it's not easy and collective effort is needed I think. So I'm a bit off topic about the initial post message, but I wanted to speak about these two topics, hoping it will clarify things (and not generate the opposite ).
    3 likes
  36. I agree with above responses. Be careful about wishing for stability. CPM-86 is really, really, stable. (break out the 9" floppies!) . We only need stable snapshots. Being open, you do not know what someone might contribute (ignore fixes). I do get a little lost as to what the specific objectives are being targeted for a particular release though. It might be a good idea to having a topic at the beginning of work like "Known Contribution Plans for 2.6". The core team as you call yourself could put out the first post. Doesn't other stuff will not also get added. A little torn about locking the topic. It might be good to also have others post what they plan to add for a release. I knew I was going to add multi platform compressed texture capabilities for a while. Problem is it might turn into a confusing place for everyone to add their own wish list stuff. Nothing wrong with that, but kind of defeats the purpose / clarity desired. Maybe locking this topic, but make it part of an entire Development sub-forum. If stray topics that no one is going to work on get added, or its just someone's problem, could get moved to Questions & Answers.
    3 likes
  37. +1 Things evolve AND keep stable : you get new features, improvements or optimizations at each release, but you can rely on a pretty stable existing API along the time. The breaking changes on the public API are really rare and you will ever find them quickly or some help about these in this forum. As an experiment and comparison, please have a look at how many releases provide ThreeJS per year (month ?) and just check if you can run the same code with the version N and the version N-3 for instance. You'll probably get (bad) surprises ...
    3 likes
  38. Happy new year to all developers out there. I also have very good feelings about 2017. My personal goals is to release my first game on Steam. And by the end of 2017 I want to go public and release a game project of mine I'm working on now for many, many years (nothing announced yet). Besides that, I had quite a good start to get my foot into the HTML5 Games Business during the last few months. Until now I've only ported my older projects to HTML5 to get a feeling how this market works and now I'm feeling ready to develop new original content. I'm very excited already And I want to play more games. Because I became father and I had a quite high workload I didn't play many games last year, and I definitely want to take some time to play more this year. Hooray
    3 likes
  39. Hi Matthew! This year I will focus on actually releasing games into the wild to make a secondary income to complement my day job. I do not care if it's a frugal one this year since it would be more like a "let's learn by doing" kind of thing to me. Meanwhile I'll teach myself about the market itself and how to do business (I've been an employee my whole life so that's not something really obvious to me). We can resume my 2017 by: "Do. Make mistakes. Learn."
    3 likes
  40. this might be helpful, http://www.babylonjs-playground.com/#VX8YM#4
    3 likes
  41. Clones share geometry. Call makeGeometryUnique() on the cloned mesh before converting to flat shaded. http://www.babylonjs-playground.com/#1WVZLV#6
    3 likes
  42. It depends on what you'd like to achieve, but as mentioned already they are quite similar. You can see a comparison of a very basic 3D scene created in PlayCanvas engine and the same built in Babylon.js and see for yourself which style suits you better. Bonus points for PlayCanvas having an online editor in which you can build the exact same demo, but without coding.
    3 likes
  43. Hello people, it's been a while. I was unable to contribute the latest couple of months, I'm trying to get back on things slowly. First thing I'd like to address is the Sprite2D class, its design issues and some new features. @MasterK @grayger @Wingnut @Dad72 and @BitOfGold you should be interested by this post One thing in particular which is actual badly designed is the spriteSize/spriteScaleFactor/size/scale(x|y) properties. I made some mistakes and the price to pay to fix them will be breaking changes. I know it sucks, but it won't be hard to refactor for you guys whenever you use spriteSize and the change is necessary. Before developing/committing the code, I'd like to explain how these properties are working right now and how they will in the future : spriteSize: currently it's the size of the sprite displayed in the Canvas: that's a mistake (more on this below) spriteScaleFactor: a property created to balance the mistake of spriteSize (in a way), if you want your sprite to be displayed in the canvas with a size of (400,200) but the sprite's bitmap is (200,100) then you have to set a spriteSize of (400,200) and a spriteScaleFactor of (0.5,0.5). This is lame because if you don't know the real size of the sprite's bitmap, it's difficult to get what you want. size: right now size is initialized from spriteSize during construction, hence the behavior of spriteScaleFactor and this is also a mistake scale: it's something different from spriteScaleFactor right now but can be used to alter the size of the sprite on the canvas. To have both scale and spriteScaleFactor is currently a necessity, but it's due to bad design only. Well, this is messy, and it's been a while I know it but couldn't find the time to address this. Now that I'm working on the Scale9Sprite feature and next the TextureAtlas, I'm willing to make things right for the sake of everybody as well as mine. Here is how things are meant to be as of today : spriteSize: will be the size of the sprite as it it in the texture's bitmap. if you don't specify spriteSize, then the whole texture will be used. It makes sense to use it this way, it's more coherent with spriteLocation which is also a setting express for the sprite's texture bitmap. spriteScaleFactor: well, this should be at least deprecated and certainly removed for the 2.6 RTM. Because you will rely on the following two properties to get the job done. size: it will be the size of the sprite as it is displayed in the canvas. If you don't specify it, it will be the same as spriteSize. If you do, then stretching/resizing will take place to achieve the size you want. If you don't know spriteSize but wish to strech/resize, then you will have to rely on the following property. Note that size if a property of Prim2DBase and all primitive actually use size with this behavior, so it's coherent with the other prims. scale: let you display in the Canvas a sprite bigger/smaller as it is in the texture using a scale factor. Same as above, scale is a property of Prim2DBase and all prims use it this way. So for me there are three main scenarios You don't know the size of the sprite's bitmap, then you deal with scale if you want to display it bigger/smaller You know the size of the sprite's bitmap, then you specify spriteSize and you can also specify Size to override how it must be rendered in the Canvas. You rely on Texture Atlas, then you know the spriteSize and spriteLocation of your sprite and there are many Sprite2D instances sharing the same babylon Texture, it's simple and there are no big changes between the Texture Atlas mode and the regular one. I don't want things to be overkill but I'm wondering if I should introduce lockRatioW and lockRatioH properties to let you guys the possibility to keep the ratio between spriteSize and size by recomputing either the height or width whenever spriteSize and size doesn't share the same ratio. Tell me if it's useful or not, I need feedback on this. Well, I also need feedback on all of this, so please, take a little time to think about it and tell me what you think, anybody's feedback is welcomed of course. If I make such change, then SpriteScale9 and TextureAtlas will be easier to code and especially easier for you guys to use and that's the most important thing right now. I was thinking about developing a new Sprite primitive, but there's no use, it's the current one that is not designed correctly enough.
    3 likes
  44. Here my first update on the progress: Let's start with a gameplay gif that shows what is new and followed by some explanations and things I learned. Explanation/description: The green bar is the beginning of a UI, it's the player healthbar. It's rendered with canvas2D, see below for a playground. The red bar is also part of the ui, it's the target healthbar & name. Also canvas2D and it's only rendered when a target is selected. Target selection: The current targert can be selected by left or right clicking on it, rightclick also initiates combat (for now). The target is marked with a "targetMarker". (A plane with a circle on it, scaled to the targets size and placed slightly above its origin) Lower left corner: The chatbox, so communitcation is possible. It's a div for the text and a html-textinput. You can set the focus to the textbox by pressing "return" while playing. Sending your message with "return" also returns the focus to the game. The "action" you see: jp & someone engage the three slimes in hand to hand combat. (Nothing is in any way tuned for gameplay, I am just creating & testing the mechanics. Monsters can now die and respawn (and so can players). A few things that are implemented but not really visible: The enemies collide with each other. This was important because 2 or more enemies following a player around tended to end up in the exact same position overlapping each other completly. That didn't look and feel god. For the players I decided against collision with other players or enemies for now, just because it feels bad to get stuck. So you can run through enemies but of course they will attack you while you do that. Some technical and information on things I learned: I played around creating the healthbar in a playground, if you want to have a look at how it's done (spoiler: pretty simple): http://babylonjs-playground.com/#2AVSFH#124 I had a "bad" experience with blender - I lost an animation/action, because I forgot to "sticky" it by pressing the "F" (force?) button after creating it. So a tip for everyone doing multiple animations (actions) not just one timeline in blender: Always remember to press the "F" right after creating the animation. (I think the problem is, if you switch to another animation on your model and then save and reload the "unbound" animation is removed because blender deems it no longer in use.) I also ran into a synchronization problem. My server and client both move objects around, for example: The player wants to move to a new position. The server moves the player and the client does too. The server then tells the client perdiodically where the player "really" is and the client adjust (the sever is always right). But the problem was client calculated speed was at least 33% higher than the server speed. Despite client and server calculating the speed taking into account the time between calculations (60 times a second on the client side, every 20ms on the server side). I added a debug-sphere to indicate the player position every time a paket from the server arived, this clearly showed the problem, the player on the client was outrunning the server by alot: It took me a while to understand why, in the end it was easy: While the frame rate on the client is perfect 60 frames per second (unless the perfomance drops) on the server side things are different. On the server I use "setInterval(callback, 20) and then caculated everything thinking that 20ms will pass between the calls. Turns out it's about 29 to 32 ms between calls to the function. (And the functions takes less than one ms to run, so it's not because of too much todo on the server side.) The fix was then easy: Just messure the time between calls and adjust all calculations according to the time that has actually passed. I guess I will have to do this on the client side too, to support clients with less than perfect framerate, for now I just use the constant 1/60 (and if the framerate drops the position is adjusted by what the server says.) Outlook/things planned for this week/weekend: On the open meadow it's not possible to design an encounter other than single enemies or groups of them, so I want to look into world layout/objects with collision, to be able to implement a dungoen with different rooms so there is something to progress through. And then just auto-attacking things is boring, so the plan is to implement skills with certain cooldowns or cast times. The plan for now is to add a skill bar that shows the skills and their cooldown. As a startingpoint I plan to add a instant single target damage attack and a area of effect damage attack.
    3 likes
  45. Hi, welcome to BJS community, Supporting this tools file format is on my todo list for Canvas2D https://www.codeandweb.com/texturepacker is that what you're looking for? If you need it I may put it on the top of my TODO and start coding the feature first week of january, I won't be a big feature to code because @MasterK already provided me pieces of JS code related to this, but I would have to convert it to TypeScript and maybe change the architecture. Bottom line: if you badly need it, I can work on it.
    3 likes
  46. @Dad72 in this project i make full solar system make that lights and shadow with mathematical . http://www.babylonjs-playground.com/#1E1KPV#15 this is sample of atmosphere but if you have flat scene i can help you to make that with special parameter just need some detail like scale of scene and clouds and time zone parameter you want ... message me what you need thanks
    3 likes
  47. I would say you could fight it with Pull Request instead.
    3 likes
  48. Hello my beloved community! It has been a really cool year for our little babylon.js! We (as a community) did so many improvements to the engine, the doc, the website that I can't count them I wanted to wish a WONDERFUL CHRISTMAS to you and your families. I won't be too much available until early January as this is the first Christmas for my daughter (the first where she can understand what is happening). But I'm not worried as I know that we have a team of extraordinary people dedicating time to help each others. Please take some time to spend time with your friends and family. I'll try to swing by sometimes but not like right now (my current pace is once or twice a day :)).+ PS: If you really need my help, just wait for early January and ping me on your topic!
    3 likes
  49. I had hoped to create a brand new Babylon Christmas Card - but real life gets in the way of virtual Reality So I decided to bring back my first Christmas effort with a few changes - I know @dbawel likes it. Basically some added geometry - a cottage, a sign and chimneys. The chimneys gave me the opportunity to experiment with particles - in addition to the particle effect I stole from @Wingnut; a long time ago. I had to create 5 textures, and I also tweaked the terrain. Anyway here it is: A Babylon Christmas Card You can also change the volume of the music Up or Down with the "u" and "d" keys, and if you, for what ever reason, would rather have no music, it can be toggled On/Off by hitting the "o" key. The camera speed can be made slower or faster with the "s" or "f" keys. Have fun. Ohh and the sign - do whatever you can do Nadolig Llawen, Merry Christmas, Joyeux Noel, Feliz Navidad, Frohe Weihnachten, to one and all. Next year, hopefully a new Village cheers, gryff
    3 likes
  50. Hi Adem! http://doc.babylonjs.com/playground?q=octree Try that, yet? http://doc.babylonjs.com/search?q=octree Possibly something there, too.
    3 likes