Popular Content

Showing most liked content since 02/24/2017 in all areas

  1. 11 likes
    Hello my friends!! I'm happy to announce that the Playground can now let you pick the version you want to use (latest or 2.5 so far). We did it because of the upcoming breaking changes introduced by 3.0 (I'm removing all functions or features marked as deprecated in previous versions)
  2. 11 likes
    I'm going to answer that as I'm the one who forced @Deltakosh to switch to TypeScript. First, TypeScript is "just" a superset of JavaScript, adding types and supporting future features of ECMAScript by transpiling down to ES5 or ES6. This means that we don't break anything with regular users that will just use the compiled JS version in ES5 or ES6 and will never see it comes from TypeScript. Thanks to the switch we've made 3 years ago, we've managed to find bugs that were just under our eyes and difficult to find in plain JavaScript and we've also managed to boost our productivity on the engine, which is good for us and our community/customers. @Deltakosh has done a great article on that: https://www.eternalcoding.com/?p=103 On my side, 3 years ago, I was also concerned on the fact we were spending a lot of time answering basic questions of our users, trying to understand if there was a bug in their code or in our code. All this time was our spare time and wasn't used to improve the engine. I've then started to discuss with @Deltakosh on ways to solve that and again TypeScript was a good candidate. Why? Again, thanks to the types exposed, I’ve discovered great possibilities such as the TypeScript playground: http://www.typescriptlang.org/play/index.html I’ve then told to @Deltakosh we could do something similar, having autocompletion in the browser, building some basic sample codes to help our users, learning by live discovering the API. Deltakosh ended up building a much better playground with great features such as saving your code to share it with your colleagues or on the forum for review, downloading the ZIP, etc. Something which would have been much more difficult without TypeScript. TypeScript also offers us to use future features of ES now to add clarity to our code: module, class, arrow functions, generators, async/await, etc. Those are not TypeScript specifics. You will have to learn them to be able to write ES2016/ES2017 code anyway. Regarding the fact it comes from Microsoft, this is really not what influenced us (everybody knows deltakosh and I are MSFTees). Deltakosh was even against at the beginning but quickly changed his mind when he discovered the potential behind without affecting our users. Even if it comes from Microsoft, the web community enjoys TypeScript and other big companies such as Google is using it for Angular 2. TypeScript also offers another great benefit for us: we managed to attract talented developers such as @Nockawa writing the awesome Canvas2D extension who was mainly a C# developer. C#, C++ and Java developers tends to have difficulties understanding some paradigms of JS at the beginning such as the prototype oriented programming, the classical issue with capturing this for closure, writing module/class like with self-executed anonymous functions, etc. TypeScript is hiding that by still generating perfectly written JavaScript under the hood. I tend to find TypeScript also better to work as a team. At last, as said before, we managed to attract some customers using Babylon.js because it is written in TypeScript and you can them fully develop with the .ts version of our engine instead of the .js to have a full typed experience during your development process. Another great benefit: I can compile an ES6 (ES2015) or ES7 (ES2016) version today without changing a single line of code of Babylon. If we would be in plain JavaScript, we would have been forced to rewrite everything to switch from ES3/ES5 to ES6 for instance. The only caveat is that it’s a bit more complex for contributors to the code to do PR to fix bugs or add features. But to be honest, as said, it’s just the JavaScript we will all use in 1 to 2 years. Except this small part, TS doesn’t affect our users because it’s transparent for them, we’re improving the quality of the code, we’re going faster, we’re attracting more diverse talented developers, we’re ready for the future. I really don’t see where the problem is then.
  3. 10 likes
    Hi guys, First of all, thanks to everyone who played my game! Congrats to pepa, BlueManCZ and Athelios! Why congrats? Well they killed the Megaslime together! This is so very cool! I love that you guys organized to play all three classes together, level up and then coodinated to kill the boss. They did that on March 7th and I didn't even notice until now. I am very happy about this - I was really hoping some group of players would do exactly that. Some stats: There were 75 characters created, 7 reached the maximum level of 5. 50 of the characters stayed at level 1, so they just had a quick look at the game/class. Thanks to @RaananW for coming up with the challenge and managing it. Thanks to @Nockawa for implementing Canvas2d. Thanks to all contributers to babylonJS. And a very special thank you to @Deltakosh for creating and maintaining babylonJS!
  4. 9 likes
    Hi beloved community, The implementation of WebVR 1.1 is in pretty good shape, @RaananW has done an impressive work. We're still in the process of polishing and finding ways to make it simple & powerful, the spirit behind Babylon.js since the beginning. You can read the documentation here: http://doc.babylonjs.com/overviews/webvr_camera and you'll discover that you can map your controllers (HTC Vive Wand or Oculus Rift Touch) to a mesh to the final sample shared at the end: http://www.babylonjs-playground.com/#5MV04 (you need a recent version of Chromium or Firefox with gamepad extension enabled you may find on http://webvr.info) I'm in the process of integrating the 3D models of both controllers. For instance: - HTC Vive Wand model: http://www.babylonjs-playground.com/#NCLFI - Left Touch: http://www.babylonjs-playground.com/#NCLFI#1 - Right Touch: http://www.babylonjs-playground.com/#NCLFI#2 I'd like to animate them by default when you'll press the trigger & the button to enhance immersion and provide you a default behavior that'll match most use cases. We still need to work on that with Raanan. I'm also experimenting turning Sponza in VR mode: http://aka.ms/sponzaVR . You can play with it if you've got a WebVR 1.1 device but beware, I'm still breaking it frequently. It also works on smartphone using Cardboard as we're falling back to VRDeviceOrientation camera in case of non WebVR support. VR for all!!! Regarding WebVR, it currently works in: - Edge Windows 10 Insider fast version that ships WebVR on by default. You can try it using the Mixed Reality Portal simulator: https://mixed.reality.news/news/try-windows-10s-mixed-reality-portal-your-pc-with-insider-build-15048-no-headset-required-0176419/ - Chromium with HTC Vive & Oculus Touch Stay tuned, we're continuing building great stuff you'd like. Cheers, David
  5. 9 likes
    Hi there, I thought I'd share what we've been working on. JigSpace is a platform for creating and sharing 3D, step by step instruction for anything. Kind of a 3D powerpoint! To create these instructions we have a very simple web editor based on Unity, and for viewing them we use Babylon. It works on computers and phones but also in VR and AR (we have dedicated apps for android/ios/oculus/hololens) Here's a link to our library: https://jig.space/explore.html We decided to use Babylon for speed and portability and it has been fantastic. It's a young engine so of course we ran into hurdles along the way but always received great help from the community. Let me know what you think!
  6. 7 likes
  7. 6 likes
    Hey all, we just launched a project for NZ Fire Service that I've been working on for the last few months. http://www.escapemyhouse.co.nz/ The experience works in-browser across Desktop, Tablet, Mobile, and VR. iOS has been especially challenging as it has some pretty heavy restrictions when in comes to inline video. Babylon has proven to be an incredibly powerful tool and I'm already working on another project that utilizes it. cheers,
  8. 6 likes
    Me again, after a long silence, I have a lot of things to say! With the help of @RaananW I just did a refactoring I planned for quite some time now: dropping the Matrix class for a new Matrix2D one! Performances are critical to me in Canvas2D and the use of the Matrix class were not the best fit for a 2D Engine. This class stores a 4x4 matrix, 16 floats, and use them all for the various operations. A 2D Engine has no care of Rotation around X or Y and doesn't know about Z values and don't use projection matrices. And this is a big deal because we can switch from 4x4 to 2x3. In theory it's a 3x3 matrix, but the last column is always equal to [0,0,1] so there's no point to store these values and the computations are greatly reduces when we assume these values. The result is quite impressive, I wouldn't think it would be that much, I guess it's a testament to the high performance of the rest of the code of Canvas2D (heavily relying on caches), one of my local test which is like this PG which is rotation 50 prim inside a rotating group was about 9ms of rendering time in Internet Explorer (yeah, the crappiest JS browser, ideal for perf optmizations) to 5.5. So Matrix operations were a big deal of the whole rendering process (when you move/rotate the prim of course). On Chrome I switched from 1.5ms to 1.2... Well, I'll take it! The consequences for you my friends: there's a price to pay! Breaaaaaking changes, I no longer expose Matrix related properties, but Matrix2D. I don't know if you all use the few properties that are concerned, I think it's unlikely, but well, you'll tell me. But I think it's a good move for the 3.0 of Babylon.js. That's all!
  9. 5 likes
    Hi Everyone, Pie.Ai (alpha) is my new HTML5 multiplayer game. Jump straight into the action and eat as much as you can of everything (even other players) but don't stand in the JAM! With simple one touch control to jump, eat, fly, open locks, break blocks or attack the game is designed to offer seamless experience across all devices (phones, tablets, PC). This alpha version was developed in one month (originally part of another project, more details below). Note that I have currently limited the number of players to 12 for the alpha so you may get the "Tables full" message if it gets busy at time (you can always spectate to get an idea). Click here to play Here is what to expect in the next few days: Lootable Armor (or temp invulnerability). Improved bot AI. More skins Multi-language support Gold shop to unlock starter packs and skins (gold farming allowed). Game Design: Propeller vs Jetpack for flying (currently both items behave the same, I am thinking of differentiating them) Smash items mechanism (jumping on some items to trigger some effects) Game modes (have a few ideas that need to be tried out). Initially that game was to be part of another upcoming project (mini game for Idle Brainz) but somehow I got stuck with the top-down graphics and changed to adopt an isometric view. Since the style ended up so different from Idle Brainz, I decided that a separate standalone release would probably be better. Feedback are welcome.
  10. 5 likes
    with some changes in standardMaterial we can replace custom shader in that and used all light and shadow ,... in that. mix shaderBuilder and standardmaterial http://editor.eash.space/mixedmaterial/ [ in progress ]
  11. 5 likes
    Update; 23.03.17 - Early Preview of new gamemode; ---------------------- Hi all, This is a project i have been working on for quite a while now, I've spent a lot of time on testing and trying different ideas and set-ups, and after several month's of set-backs and delays due to both changes aswell as some personal matters, I believe it's finally moving in the right direction. As the title indicates, it's called Bloodshed Online. I've set-up a very simple demo at; Bloodshed.online Demo notes; Update 14-03-2017; Enabled the third unit, a spearman. New game mode; FFA (Free For All) FFA; -Queue; Attempts to find an existing game which isn't full, if unable, it will create a new game and instantly join the player, effectively removing queue time. (Future updates will include AI mobs & actual map content) -Up to 25 players per game. -Guests can now only play FFA, Original Post; Tested & working in; Chrome, IE 11, IE Edge, Opera & Firefox Currently no mobile support. The UI & UI design is in-complete. The in-game chat is not active. (Doesn't emit to server/other player(s)) Click "Play as guest" Wait for opponent or open another browser tab to play against yourself in a splitscreen. Click on one of the unit icons in the "game lobby" to spawn said unit. Kill the other guy(s). If you die, the game lobby window opens again and you can choose another unit. >That's what the demo has to offer for now It's currently hosted on a cheap server, so it might be a bit slow sometimes. If you think you've found a bug, please do let me know. Also if someone have a Mac, i'd appreciate some Safari feedback Cheers. List of known issues in addition to the listed notes above; Archer arrows sometimes stop mid-air. [Test-Fix live in demo] Rare UI bug causing stats to disapear. In-game mouse-clicks not working in Firefox. [Fixed]
  12. 5 likes
    On 28.2. I uploaded my project - I am now just waiting for the challenge to come to it's presentation time. While the game is pretty much in exactly the state I wanted it to be at the end of the challenge, I am still thinking about expanding it and continue playing around with it - simply because it's fun to do, and I think (yes, I am biased) also fun to play with friends. For example I am playing around in blender for more content - but I am not sure about the latest creation: Disclaimer: This will not be part of the challenge version - so don't go looking for him or it or whatever Yes, I noticed the tail looks a bit weird - I found "limited desolve" in blender (great tool) but I think i might have overdone it. @csganja I am not convinced the sources will really be something to learn from - I can only say it again: I was (and still am) just messily experimenting away (not following any best practice or anything, simply because I just went ahead and implemented things how I think they might work ) - still they might be of some value just to see how it can be done (but not how it should be done ).
  13. 5 likes
    I'm closing this post as I think everyone said what they have to say and it is no more constructive at all
  14. 5 likes
    Well, I definitely think you're wrong. And you obviously don't know me when you're suggesting I'm living in my world ignoring your point of view supposed to represent our community. I'm reading your point of view but I think it's wrong. It's not facts based and not convincing at all. I'm very concerned about the usability of Babylon.js since the very beginning and we've spent of lot of energy & creativity to make it attractive to various types of developers thanks to the choices we've made. Today, I can clearly see it's working great. It’s not always perfect, we’re committed to make progressed but globally, we’re really happy of the directions we took. Contributing to the core engine is another story. I'm seeing a lot of people complaining whereas I can't see any major contribution to the engine from them. When I'm looking to this graph: https://github.com/BabylonJS/Babylon.js/graphs/contributors, I can see that the activity is stronger than ever talking about the contributions. And I don't see any of the major contributors complaining about our choices, speed of development or usage of TypeScript. You then have to think about various classes of people among our community: - Major contributors to the engine. We're less than 20 guys - Developers using Babylon.js - Designer/Artist converting their work in Babylon.js I'm often talking with developers using Babylon.js and they're quite happy about it. TypeScript? It's transparent for them, most of them didn't see we're using it for 3 years. Going too fast? We're paying so much attention to backward compatibility that they don't care. We've got so many good features since 2.0, it's often more than enough for them. Optimization is there for a long time and Babylon.js is so stable that big companies are pushing big important sites/app based on that. Going back to contribution, core engine maintenance, we have a duty of keeping a professional grade framework. This means discipline, rules and good development skills. We can’t accept quick PR, low quality code because “you know, people are afraid of doing something better”. We're not there to code for free any idea that might look interesting as a first see. Sorry to remind that to everybody but Babylon.js is a FREE OPEN SOURCE project. We’re not making money out of it. We're passionate about it, we love to see people building things on top of it, making some money, driving their business, or simply sharing their passion of 3D with it. This makes us very proud. In the same way, we’re very happy & proud of our community sharing the bugs they’ve found, helping us on the documentation, suggesting interesting enhancements. But like anybody, our time is precious, we've got kids, family, some of us have very complex situations to manage you can’t even imagine. So, I'm fed up of people complaining it's "too complex" for them where it's obviously not. Most of them are hiding behind that because they want us (and to be honest most of the time @Deltakosh) to code that for them. @Deltakosh has always been very kind on that but I won’t be anymore on those specific topics. David
  15. 5 likes
    For me Typescript was also one of the main reasons to use BabylonJs instead of ThreeJs. I use BJS for commercial projects. That means i need to deliver robust and reliable code. I would not use plain JavaScript for big projects. Especially if different people working at the same code. The type checking, the language features and the IDE support you get with TypeScript (i use VsCode) makes development much easier and faster. One example would be refactoring. Lets say you rename a function or you change the data type of a variable. With plain JavaScript its very easy that you miss to adjust some code and later you get a problem in the released project. With typescript you will get a compile error right away.
  16. 4 likes
    Hello! As my profile states I am new here and rather new with Babylon.js as well. I found its ease of use and performance (over Three.js) good reasons to work on it. Currently, I have been working on a voxel game (i.e. minecraft-ish) and I have been using Three.js, as there are so many libraries already out there for voxels. On the other hand, pretty much nothing for Babylon. For this reason, I would like to fill the void and, perhaps, find someone who is interested in helping out on the quest. I started with creating a small library for creating snow (called `voxel-snow`) and called it `babylon-voxel-snow` (https://github.com/Nesh108/babylon-voxel-snow/). The idea is to make the transition from Three.js to Babylon.js as easy and as painless as possible for people (like me) who have been using it for their voxel projects. Adding the prefix `babylon-`, would make it extremely easy to find the counter part for Babylon. Here are some other voxel libraries which are currently only in Three.js: ☑ Voxel Snow (https://github.com/shama/voxel-snow) --> Babylon Voxel Snow (https://github.com/Nesh108/babylon-voxel-snow/) ☐ Minecraft skin (https://github.com/maxogden/minecraft-skin) ☑ Voxel walk (https://github.com/flyswatter/voxel-walk) --> Babylon Voxel Player (https://github.com/Nesh108/babylon-voxel-player) ☐ Voxel creature (https://github.com/substack/voxel-creature) ☐ Voxel critter (https://github.com/shama/voxel-critter) ☐ Voxel builder (https://github.com/maxogden/voxel-builder) ☐ Voxel use (https://github.com/voxel/voxel-use) ☐ Voxel mine (https://github.com/voxel/voxel-mine) ☐ Voxel carry (https://github.com/voxel/voxel-carry) ☐ Voxel chest (https://github.com/voxel/voxel-chest) ☐ Voxel inventory creative (https://github.com/voxel/voxel-inventory-creative) ☐ Voxel items (https://github.com/jeromeetienne/voxel-items) ☑ Voxel clouds (https://github.com/shama/voxel-clouds) --> Babylon Voxel Clouds (https://github.com/Nesh108/babylon-voxel-clouds) ☑ Voxel skybox --> Babylon Voxel Skybox (https://github.com/Nesh108/babylon-voxel-skybox/) As I go, I will try to slowly implement them for Babylon, so hit me up if anyone would like to help out
  17. 4 likes
    Hi Folks, We have already spoken in this forum about infinite dynamically generated terrains. Nasimi completed a fantastic terrain generator with GeometryBuilder here : and Dal started a great project here (maybe uncompleted) : So, my turn to bring my two cents. Well, it's just an experiment for now. My idea is this one : Imagine you have either a huge set of geographic data (3D coordinates), something too big to display at once or even toobig to build a working mesh with because of the amount of data. Or imagine that you can get infinitely new data, either computed on demand, either downloaded by chunks to depict the new parts of the current terrain in what your camera is currently moving. In both cases, we have too many data to build and display a visible mesh. So my idea is to decouple the rendering from the logical data. The data could be a very big or dynamically renewed array, whatever... it contains always more info than what is displayable. The terrain is then just an updatable mesh, updated from the camera local position and the current related data. So there is a logical map containing the 3D data (computed, downloaded, or simply very big) and a terrain mesh "sliding" over the map data. The mesh could be built by taken in account the LOD necessity, it is to say by having many tiny facets close to the camera location and bigger ones far from the camera. In order to understand, I intentionally computed a random (simplex) map of data that can be displayed here : it's the red wireframed map, it's 1 million vertices. Normally, it could be far more bigger and wouldn't be displayed. The camera would be moving in the center of the green disc. Actually, the green disc is the displayable terrain and it should move with the camera movements instead of moving independently. The camera should also be submerged in it at a lower altitude. I put the camera far higher and didn't attached the green terrain to it for the sake of understanding : http://www.babylonjs-playground.com/#1SZASV#1
  18. 4 likes
    Hello community, The inspector has been updated recently. The documentation is up to date here : http://doc.babylonjs.com/overviews/using_the_debuglayer http://doc.babylonjs.com/overviews/debug_layer_features http://doc.babylonjs.com/overviews/customize_debug_layer
  19. 4 likes
    Whoever wants to give it a try: http://raananweber.com/WebVRBall/
  20. 4 likes
    @Rolento hi what condition you have for set Texture ? http://www.babylonjs-playground.com/#1IAR36#2
  21. 4 likes
    Hello! I am very excited to present you my recent game. I am sure you've already played this type of game, but I just wanted to build it myself. Basically, you have to pick two cards. If they are identical, both of them are removed from the board. The goal is to clear the board as quick as possible. Please, give it a try and leave a feedback! Play it here . Check out the source code . Have fun!
  22. 4 likes
    Demo | Github | NPM pause, frame step restart camera effects, position, and lerp scaleMode fullScreen sound mute/volume slow motion …
  23. 4 likes
    Hello guys ! Learning Babylon.js has been updated for Babylon.js v2.5 (the book and all source code). And it's now available on Amazon ! And there is a print version ! Kindle version: https://www.amazon.com/Learning-Babylon-js-basics-framework-creating-ebook/dp/B06XCMSZHK/ref=sr_1_2 Print version: https://www.amazon.com/Learning-Babylon-js-basics-framework-creating/dp/1520730446/ref=sr_1_3 As I wanted to create the most beautiful book possible, all 200 pages are in full color (that explains the higher price, which include all print costs)... but I think it's worth it! Of course, it's always available on my website: http://learningbabylonjs.com/ To match Amazon prices, the official price is now 10$ for the book version, and 20$ for the book and all source code. Finally, an email will be sent to everyone who purchased the book with the new updated version for free. Feel free to spread the word Thank you very very much !
  24. 4 likes
    @davrous please see this discussion not too negative. In my case, I've switched to typescript a few month ago because my JS knowledge ist't so good as I come from the C#,C++,java and python world and typescript helped me a lot to neutralize some - in my opinion- odd specificas. To see all arguments here is for me a big confirmation that my decision was right. In this sense, even though this discussion is a bit needless, it can have a positive impact Again, thank you, @Deltakosh and many, many others for the good work, this will for sure not overseen by the users.
  25. 3 likes
    Hi! My name is Andrey! I'm an experienced 2d Game Artist and Animator. I make any types of game art: characters, animations, gui, sfx, illustrations, assets and backgrounds. This reel will tell you about my abilities better than any words: My site and old portfolio. Sometimes I load assets to my gumroad. Now I'm looking for freelance and outsource work My email: to.murlyka@gmail.com My skype: murlyka.
  26. 3 likes
    You are dead right @V!nc3r . I have warned @hunts about this issue before: http://www.html5gamedevs.com/topic/29161-export-cancelled/?do=findComment&comment=167812 cheers, gryff
  27. 3 likes
    Hi and welcome from me. If you are just working with your own custom shapes then you could build the caps manually from the data you are using. When you google 'triangulation of polygons' the algorithms for concave polygons are complex and not easily read. For your data label the vertices of the shape to be extruded and split into triangles, as for example in the diagram below. You can then place the triangles 0, 1, 4 1, 3, 4, etc into the indices array NOTE order of indices consistently clockwise for all triangles and the create your own custom meshes for the caps. Example http://www.babylonjs-playground.com/#1KQZAF#1 Should you then want to you could merge the extrusion and the two caps.
  28. 3 likes
    My first attempt at a Phaser game. Works in Chrome, Opera and Firefox (although some font problem in Firefox when fullscreen). Works on iPhone and iPad, but maybe not suited for iPhone's smaller screen. Gamepad inputs not working in IE under Windows 7, but ok in Edge on Windows 10. Game website at: http://www.dirtyrottenbounders.co.uk - there's a play button at the bottom of each page to start the game (best played on a desktop/laptop in Chrome or Firefox, with a gamepad). If you want to have best times/scores saved on server, then create a username. Still very much learning about Phaser, but managed to produce something with knowledge acquired so far. Regards, Paul.
  29. 3 likes
    Hey All! Thought you guys might like too check out mini-runner a simple alternative to events and signals with an emphasis on performance. It currently forms the backbone of the messaging system in our game engine. Its working out great for things like update events, collision events etc. Great to use if you are say looping through and array and calling the same function on each object. The resulting code is cleaner than a loop whilst still keeping the performance as fast as possible. So yeah, if you are dispatching signals/events to a lot of listeners often (like everyframe often), then I would considor using this alternative. For most cases, this performace boost is not really important enough to switch from your current fave. Think of this as a nice alternative for when speed really counts! https://github.com/GoodBoyDigital/mini-runner/ Cheers!
  30. 3 likes
    I don't know if this can be useful to someone, but I put it here : https://www.nothing-is-3d.com/dl/babylonJS/KTXtextures/ This is just a test scene to see what type of texture is loaded on the hardware. [edit] weird, when I load my scene locally (with easyphp) on windows 10, I have a dxt texture ; but on my ftp it's only png which is load Where I'm wrong ? [/edit] [edit2] added a download link for sources[/edit2] [edit3] upgrade to bjs 3.0 alpha to make it works [/edit3]
  31. 3 likes
  32. 3 likes
    1. Yes, at the last minute, a file name like "myfile.jpg" will get switched to say "myfile-pvrtc.ktx" for iOS. This is happening just to the string of the file name to get. Windows would probably be "myfile-dxt.ktx". 2. Basically, this generates an upside down texture. The reason it is needed is image textures are flipped in the process of being uploaded to GPU by Engine. Compressed images cannot be modified by the cpu, so this has to be done at the conversion or baking from image file to ktx file. There is a checkbox in the PVRTexTool when encoding. I did not include pictures of it in doc to be both tool independent-ish, & they said this might be changing. Why this is done Engine, I have no clue. 3. I might have left it off the doc, but given a machine has astc & etc1, engine will decide to assign astc automatically. I did not want people to have to know all the formats & which was better, so I have engine do the deciding.
  33. 3 likes
    Hi Everyone! This is my third iteration on a browser based rogue-like. Its getting pretty close to completion and I'm looking for some feedback from fellow developers. https://justin-wang123.itch.io/rogue-fable-ii The main objective for this project was to create a game that is playable in a single hour while containing enough content and variety to make repeated playthroughs novel and enjoyable. I'm pretty heavily inspired by Dungeon Crawl Stone Soup and I consider this an attempt to capture the spirit of that game for times when I don't have 8+ hours to do a full DCSS run. Features, design decisions and some rambling: Themed Zones: The game contains a total of 7 different themed zones each with its own unique monsters, traps, environmental hazards and level generators. For each playthrough the first few dungeon levels are always the same basic zone but then in later levels 3 of these themed zones are chosen randomly. The idea here is to give the player different combinations of themed zones with each playthrough. I think that just random placement of rooms, corridors and monsters is not enough to really make each run feel different so this is my attempted solution to that problem. Character Classes: There are 6 classes which I've tried to differentiate as much as possible. With rogue-likes, classes are kind of a tricky problem in my opinion. With random loot, its possible that many of the items that you find may be useless if your abilities are really solidly defined by your class. So to try to overcome this I've borrowed some ideas from DCSS and given each class a starting book from which they learn their class specific abilities. Later in the dungeon you will find the books of other classes allowing you to multiclass to some extent if you choose. There are some inherent statistical differences between the classes but most of it is defined by their starting equipment and their starting book. In this way I'm trying to have the classes be most differentiated at the start of the game but then the way in which you develop your character is dependent on what you find later in the dungeon. Damage Model: I've continued with a fairly deterministic damage model though with the addition of random critical hits and misses thrown in a very small percent of the time. I find that random damage is just sort of noise when I play games and just makes it difficult to judge tactics while not really adding that much unpredictability. I cant really call the difference between 5,6 and 7 damage 'random'. So my solution to this was some small percent of the time there's a critical hit (x2 damage) and some small percent of the time there's a miss (0 damage). My thinking here is that this reduces noise, increases the players ability to play tactically and when the dice do fall a certain way a big effect is produced. I've thought a lot during this project about this sort of 'meaningful randomness'. The themed zones could be seen as a form of tackling this issue. I've also generally moved away from say generating 3-6 gold per level and instead just made it a constant 4 but with a 10% chance to spawn a treasure room on a level full of piles of gold. I feel like players are unlikely to notice these small fluctuations in gold per level but a room full of treasure is sure to get their attention. This sort of design is carried through a lot of the project and is something I'll likely continue thinking about in the future. Feedback: All feedback is greatly appreciated. The game is pretty close to what I'd consider 'complete' there's just some graphics missing in a few places and maybe a few balance issues here and there. I haven't really gotten to adding a lot of help text yet so one thing I'm particularly interested in is any confusion that crops up during play, anything that doesn't make sense. Obviously balance and challenge is a pretty big deal as well. I'd like at least with the easier classes for players not to just get slaughtered in the first few minutes, so I'd appreciated your experience in this. Last but not least, crashes, bugs, weird behavior, all that stuff that I'm sure keeps us all up at night. A copy paste of the browser console after a crash would be extremely helpful.
  34. 3 likes
    And now official from me Wow! You guys are ALL awesome! Thank you all for participating! That was so much fun. @jpdev, you did an amazing job. Such a great game! And as promised, this is on the way (to me first, and then to you ):
  35. 3 likes
    Hello! here is the official list of breaking changes: https://github.com/BabylonJS/Babylon.js/blob/master/dist/preview%20release/what's%20new.md#breaking-changes This is EXTREMELY exceptional. I agreed to do it only because we are heading to a major release (3.0)
  36. 3 likes
    http://www.babylonjs-playground.com/#1B4NJV#4 Line 28 is the fix
  37. 3 likes
    Stay tuned guys...We are working on adding support for GearVR (actually webvr 1.0)
  38. 3 likes
    It's Christmas time! Well, almost! I have few presents, I worked hard to deliver them, before speaking about everything that was made in the latest preview (available here) I would like to speak about text rendering! So this post is only about that! @jschwuch and other should be happy about it. What was wrong until now To construct the FontTexture texture, I use a HTMLCanvas to render each character into it, then copy the result back in the texture. The JS API would tell you about the width of a character (which is not always accurate by the way, the number it returned it sometimes smaller than what is really rendered, wtf...), but it's not giving you neither the height or the baseline. And these are two values very important when you do text rendering. I finally have the piece of code that find them. I discovered that the center of a pixel for a HTMLCanvas 2D Context was 0.5,0.5 and not 0,0, so far I was rendering everything aligned to half a pixel....not the best way to have a great quality, specially for the small font! During rendering I was using bilinear filtering and the ALPHA_COMBINE blending mode (except for Signed Distance Field which doesn't require blending). Turned out that things were a bit complicate than this, that's why @jschwuch had the bug about white font over white text Here's a screenshot of "before and after" Clearly, things improved! So what is the deal now? During the writing of a char into the FontTexture, I do a pass to compute the pixels in Premultiplied Alpha, the RGB pixels are computed with their alpha and I store everything. Then I use the (debugged, thanks @Sebavan) ALPHA_PREMULTIPLIED blend mode of Babylon.js to render the text, the quality is improving because the antialised pixels (you see, the grey pixels on the left pictures) are now correctly blended with the background color. Another thing, during the development of Text Rendering I switched many time between bilinear and nearest texture filtering, now I know why: there's not a right choice of filtering, it depends on the situation If your text is rendered in a Screen Space Canvas2D, then nearest filtering has to be chose if your text is rendered with a scale of 1. Using bilinear filtering would lead to a blurry text for small fonts, like the picture below. To compensate this issue you can choose to render the text using the fontSupersample setting, the size being double internally, the bilinear filtering produce a more accurate result. Note that bilinear filtering should be also chose if the text is rendered with a bigger scale If your text is rendered in a World Space Canvas2D, then the bilinear filtering should be always used, if you're dealing with a small sized font, use the superSample settings. Below are two WSC with bilinear filtering on top and nearest on bottom for the "World Space Canvas" text What should you do? Well, nothing special in pretty much all the cases, because even if there's a useBilinearFiltering setting for Text2D if you don't set it I will take nearest filtering for SSC and bilinear for WSC. You can choose to override this behavior by setting the value to true or false. Remember than this conversation is about non SDF mode, if you're using Signed Distance Field you won't have to worry about texture filtering (because it has to be bi/trilinear). Are we there, finally? Well, almost! There's one more thing left to be done to have a pretty decent text rendering and that would be considering the font's baseline while centering/positioning the Text2D primitive. Today it's not the case and you can see on the green buttons above there's more space below than above, it's because I center the Text2D with the font's height and it's not what should be done, a small offset should be applied to consider the baseline. Don't remember, Signed Distance Field is your friend! No blending, no transparency, very fast rendering and good rendering quality in WSC.
  39. This post cannot be displayed because it is in a forum which requires at least 5 posts to view.
  40. 3 likes
    Update: https://youtu.be/hCZG4uujP6A Skills (fireball to destination, hellfire on player position, aura permanent) Added Chat, first dungeon + some things recoded on client and server side, preloader for each map, logs
  41. 3 likes
    This is such a sad phrase to hear spoken from someone calling themselves a developer, with that attitude you certainly won't be a developer for long. Plus, your assumption about where the issue lies is plain wrong anyway. It doesn't, this is blatantly ridiculous. Hacking something together in 48 hrs is wildly different from creating a fully functioning generic networking layer. I have no idea of the scope of whatever networking engine you guys are discussing, but creating a properly functioning and resilient networking layer is hard yacka, I'd say a few months of several full-time devs would be required to get something off the ground, although there would still be plenty of hard work to put in after this. You're either being flippant or you simply don't understand how software gets built (or, more likely, never taken much into production readiness) if you think you can just crank out a networking layer in 48 hrs and call it done. This is plain wrong in so many respects. There seems little point further explaining why, just try googling about how web sockets work (hint: transport is identical to regular web traffic, probably because only regular web traffic can occur across the public network!). Also, as nice as it would be to assume a website would have only one roundtrip, it simply does not happen any more. --- You've put yourself out here publicly and asked for a discussion, don't be so afraid of criticism, roll with it, learn from it, disagree if you like, but bear in mind that someone critiquing you here has taken time to take an interest in you and feedback is golden.
  42. 3 likes
    Hi guys! I believe the relationship is in the (likely-) fact that JS... is MANY people's first or only programming language. It is the web programming language of-choice, by far. So TypeScript "contaminated" the easiest and most accepted programming/scripting language ever (JS). In doing that, BJS lost a very large group of hobby-level programmers, and potential future contributors. There's your relationship. You/We took the general public's #1 most popular, easiest, notepad-programmable language that LOTS of people learned SOME-OF (in order to tweak their web pages)... and separated that from BJS. TypeScript made BJS source "alien" to those people, including me. Yes, it is probably an unwarranted fear and feeling of extreme inconvenience, but it is certainly not a joke. The phenomena IS happening, whether you choose to recognize it or not. This is one of the reasons that folks (including me) ASK-for features instead of coding them ourselves. Many types of people don't want to work with shells, NPM, grunt, gulp, and other "compiling" and "generating". There's plenty of them in the BJS forum. Now, nobody is bashing BJS, nobody is bashing core programmer work accomplishments, and nobody is saying that core programmers shouldn't use what works best for them. But I KNOW we lost some contributors when we went to pure TS. We went from "submit a JS function"... to "Get an IDE that does TypeScript, learn TypeScript, learn to compile things". These are things that DIDN'T need to be learned... when working with pure JS. They were already learned when folks learned primitive JS to tweak their websites. JS = widely accepted/used. TS = far less accepted/used. We lost the advantage of JS familiarity that was already established by the web. This all might be irrelevant. The move to TS is likely a good idea and inevitable. But if you think there was no newbie impact with that move, you are mistaken (imho). We gained some ease and popularity in one area, and lost some ease and popularity in another area. But, when Deltakosh said "just submit in JS and I will convert it to TS for you"... that took some of the "scared" away. That helped. He should say it more often. Newbies rarely know if a mod is a "good idea" or not, because they can't see the far-reaching impact on the entire framework. Between this situation, and TypeScript's dev environment from hell (when looked-at from noob perspective), new feature requests will continue to outnumber new feature git submits. People who dream-up features... are often not pro-coders. They are scene assemblers. If we keep telling users to setup a TypeScript dev environment, code their feature request, and submit a PR... for every time they ask about the plausibility-of, or otherwise request a feature, you are going to lose a whole lot of good ideas. You're also going to lose a whole lot of "warm fuzzies" that COULD have been given to that idea-thinking-up user... for submitting that "feature query". We could have said "Hey, there's an interesting idea." and then discuss, talk about far-reaching impacts, talk about what errors could happen with this new feature, talk about alternatives, talk about the BJS big picture. Instead, we say "Can you submit a PR?" Sheeeeit. Why not just blast the idea and user inclusion/participation excitement... with ice water from a firetruck hose. Freeze that idea-spirit dead in its tracks. Yay us! SO much love for the puppies, eh? Are you/we trying to make BJS popular among coders only, or are you after EVERYONE, like me? Sometimes I think there should be a USERS forum and a CODERS forum. Artists and storytellers and scene assemblers hang out in user forum. Core-change ideas that come from the user-forum... would be nurtured, with on-going discussion, and a GENTLE introduction to "If you would like to add the feature to core YOURSELF, here's the first few steps of the hundred steps needed to build and learn your TypeScript dev environment"). When people say "Could you submit a PR?"... and that PR requires learning git and setting up a TS dev environment, you might as well have blasted them in the face with a shotgun. (Not every situation is like that, but SOME situations are so. Do we care?) Currently, in our coder's forum... discussion is discouraged, because big dogs dislike long English comments. Not much nurturing is allowed, or else big dogs won't help later, because the thread got too long. So instead... "Can you submit a PR?". ("Hey kid, here's a bucket of TypeScript ice water... that should cool you down for a few months!") What is "our job"? sigh. It's not quite that bad, of course. Big dogs DO weigh plausibility of the idea. Generally speaking, an idea-proposer doesn't get the "can you submit a pr" line until after the idea has been deemed possible/plausible. We idea-proposers DO appreciate that feasibility quick-weighing, and alternatives-to-modding advice. At least I do. I like talking. Others... not so much. heh. I REALLY like listening to big dogs talk. That's how we learn the big picture... but it's not an easy story to tell. Possibly later, .ts dev environments will be load'n'go. For now... they present a road bump. That road bump is BIG to some people, and no problem for others. But if you think the road bump is not there, or not big, you're fooling yourself. The road bump IS big... to some. Do we care about them?
  43. 3 likes
    Personally, BJS being Typescript is one of the core reasons that I was drawn to it, and I've been using JS for 20 years. After all that time I still dislike javascript's idiosyncrasies. TS is cleaner and lets me use the latest bleeding edge features of ES6 right now, with type checking to boot. I value the direction the BJS project is headed. I don't really see what the issue is. This is the direction JS is headed anyway. Like Babel, TS is just a great way to utilise the latest and greatest ES6 syntax now without sacrificing broad compatibility. Complaining about it just seems like you don't want JS to change at all, ever. But that's a different discussion.
  44. 3 likes
    @dbawel Thanks for the feedback! I totally agree that WebGL, linear algebra, normals, etc. are right out for teaching kids. Kids should start with the simple stuff and work their way up. I do think that there are simple concepts that kids can learn in 3D programming -- and pick up a little JavaScript along the way. Again, I didn't have kids translate local to world coordinate systems, but they did learns the basics of what a mesh is, using shadows, animation, simple physics, even frame of reference. I kinda bet heavily that this approach worked in the first edition of the book (https://pragprog.com/book/csjava/3d-game-programming-for-kids). It's not going to suit everybody, but it seemed to appeal to a lot of kids. Hence the second edition If you're interested, an excerpt from the first chapter is available here: https://media.pragprog.com/titles/csjava/shapes.pdf. That should give you an idea of the overall approach that I took (and that I'd like to extend in the second edition). Bottom line: I think we're violently agreed . But if you have any thoughts as a former teacher, I'm very much interested in your perspective! -Chris
  45. 3 likes
    So, I was asked to delay the deadline in one week. As I don't have that many entries, I decided to delay the deadline to march the 5th. Patience!
  46. 3 likes
    Only two more days, looking forward to every entry! Hype!
  47. 3 likes
    Three days until the challenge is over.. I am now sure, that I will have something for you guys to play - today at work on the lunch break I had four people (including myself) playing and everything worked! Yes okay, there was a small complete server crash that ended the session (fixed now) and I got some pointers on what to improve - but overall there was some fun to be head for a few minutes. For the play test today I had finally implemented character levels - it really helps to have something to achieve. The animation for it is a little rushed, but I guess it works for now: Levelups heal you to full health and give you more damage, more heals more skills and more everything As I mentioned I had "improved" my todo list by adding two more skills (when removing the meele attack for both caster classes). Here is the most boring gameplay gif so far: That shows a warrior doing nothing (and getting hit) while he is healed by a "high level" heal over time - which is the new healer skill. And yes, if you login hundreds of times into your own game, you end up with "asdf" as your name. No way around it. While play testing both mages complained about the missing last skill, but I got that done tonight too, it's the skill "firestorm" and here it is in action: While adding the firestorm, I nearly exploded myself, when it took me 15 minutes to rotate my fireballs correctly... I guess the deadline is getting to me. And lastly I managed to wrestle the IE into compliance regarding a cursor issue - IE doesn't like png files as the cursor. So you have to create a "cur" file and add a style for ie: This is the page I used to create my "cur" file: http://www.cursor.cc/ And this is the css to include it that seems to work on ie/firefox/chrome/edge: cursor: url("data/icons/cursor.cur"), auto; /* IE */ cursor: url("data/icons/cursor.png") 0 0, auto; /* Chrome, Firefox*/ That's it for this update - I really hope it will be fun to play together. In reply to Deltakosh: I understood that you just though it was funny, not making fun of me - my response wasn't worded correctly. I am still mind boggled by the todo babylonJS is surely generating
  48. This post cannot be displayed because it is in a forum which requires at least 5 posts to view.
  49. 3 likes
    Hello all, next version will certainly 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 Multisample Rendertarget: Used to apply antialiasing to render targets (mirrors for instance) I also started a documentation page to better explain every feature: http://doc.babylonjs.com/overviews/webgl2
  50. 2 likes