ID:1881213
 
Since the Webclient has been released publicly months ago, I thought I would make a thread that involves discussing ideas that have been or not used before that would work great with the Webclient.

Here are some ideas I have for different uses of the Webclient:

Raycasting: The one concept several have attempted and few have actually succeeded in some form. What I have in mind is to create a custom canvas tag (a brand new control) that replaces the default map class for custom rendering. Due to JavaScript able to handle raycasting relatively fast, this would be a great place to start. Real-time raycasting with multiplayer support is even feasible.

C/C++ to JavaScript through Emscripten: This one I have not really tested yet over BYOND, but this could really come in handy in terms of replacing the need for any DLL/SO usage. Heck, one could possibly create a library that merges C/C++ with JavaScript and DM at the same time. Anything compiled through Emscripten runs pretty dang fast. Anything that's done graphically should either be done with OpenGL or SDL.

Speech Recognition: This one is actually not entirely feasible yet due to only a few browsers actually supporting it. A great asset for Chrome users at the moment I have discovered. Built-in support for any web browser eliminates the need to rely on any DLL/SO file. Client-side DLL/SO files are basically obsolete in that regard.


Feel free to post any ideas you want to share. If you like to protect your ideas to surprise the public, feel free too.
Pointer lock works. I copy/pasted the default map control and added some parameters to winget() the mouse's movement. I'm not sure about the browser compatibility. I haven't looked into it further since my first test, which implemented a standard first person shooter camera (winget the camera angles), but it could be pretty cool.
In response to Kaiochao
Kaiochao wrote:
Pointer lock works. I copy/pasted the default map control and added some parameters to winget() the mouse's movement. I'm not sure about the browser compatibility. I haven't looked into it further since my first test, which implemented a standard first person shooter camera (winget the camera angles), but it could be pretty cool.

Very nice. That could really come in handy for FPS-type games. :D
I haven't touched the web client yet but from what I have read, it is compatible with mobile devices.

I make Android games with Unity3D and a tool that I have always used is "Control Freak". It allows the implementation of mobile controls almost instantly.

Once I am done with my game, I would like to do something similar to Control Freak for BYOND.



More specifically, I would love to make the touch screen D-Pad shown above.
In response to Mr. RJT
Mr. RJT wrote:
I haven't touched the web client yet but from what I have read, it is compatible with mobile devices.

I make Android games with Unity3D and a tool that I have always used is "Control Freak". It allows the implementation of mobile controls almost instantly.

Once I am done with my game, I would like to do something similar to Control Freak for BYOND.



More specifically, I would love to make the touch screen D-Pad shown above.

That would be great. Allowing BYOND games to be touchscreen compatible. :D
In response to Kaiochao
Kaiochao wrote:
Pointer lock works. I copy/pasted the default map control and added some parameters to winget() the mouse's movement. I'm not sure about the browser compatibility. I haven't looked into it further since my first test, which implemented a standard first person shooter camera (winget the camera angles), but it could be pretty cool.

Only on webkit. No IE support. The only games that could really use this won't be good for the webclient.
Bandock wrote:
Raycasting: The one concept several have attempted and few have actually succeeded in some form. What I have in mind is to create a custom canvas tag (a brand new control) that replaces the default map class for custom rendering. Due to JavaScript able to handle raycasting relatively fast, this would be a great place to start. Real-time raycasting with multiplayer support is even feasible.

When the webclient is open-source and fully DSified it should be easier to interface with said control, using the tile map as a basis for deciding which objects go where. Anyone who creates something like this will effectively open BYOND up to full 3D--on the webclient only of course.

Speech Recognition: This one is actually not entirely feasible yet due to only a few browsers actually supporting it. A great asset for Chrome users at the moment I have discovered. Built-in support for any web browser eliminates the need to rely on any DLL/SO file. Client-side DLL/SO files are basically obsolete in that regard.

That'd be freakin' sweet.
In response to Mr. RJT
Mr. RJT wrote:
More specifically, I would love to make the touch screen D-Pad shown above.

The webclient has a D-pad control, but it's very simple. If you want to play around with it and improve it, I'm very open to that. Maybe you could create a mode that would show the controls over the main skin.

Any control that users find generally helpful, I'm open to including in our default library. And by all means, anyone is free to explore changes to the existing controls--and if they can make improvements (anything that'd be useful to multiple games, nothing overly tailored to a specific game), I'm happy to incorporate those changes.
Can't wait to see the fully DSified webclient. :D

Anyway, after doing some research, I have a few more ideas to contribute:

Audio Capture/Recording for Voice Input: This one is likely to be feasible in the near future. Right now, support is extremely limited for pretty much all browsers.

Fast Real-time Particle System: Particles should be more feasible now considering WebGL support exists. Of course, one might have to go a few steps to achieve it. Only the webclient can benefit here.

Audio Generation: It is possible to create an audio generator as a control for webclient-based projects. Before, you would need Audacity do all the work.

Gamepad/Joystick Support: This one should be possible to do. This eliminates the need to depend on any DLL/SO file to do this task (considering it was only server-side to begin with).
Can we list some things that the web client can't do? We're only limited by HTML5 at this point, right?
In response to Kaiochao
Kaiochao wrote:
Can we list some things that the web client can't do? We're only limited by HTML5 at this point, right?

I say go for it. I nearly listed binary file support, but it seems to be that the FileWriter API was scrapped from the W3 standard.
I would like to get into the webclient but I have no idea where I can find any documentation for it. In other words, how the feck do you use it? How the feck do you change it?
The documentation is still here for the time being: http://files.byondhome.com/LummoxJR/webclient_doc.html

I'll move it over to a proper location sometime soon.
In response to Lummox JR
Thank you! I shall read intently :) Yes please do put a big link to it on the main page. It's really important everyone can see it.
So far my grossly incomplete webclient tutorials are the only starting point if you don't want to dive into the reference and tinker with things on your own.

http://www.byond.com/forum/?post=1779979

I plan on resuming with the series but I always find it difficult to set aside time :P It's a mixture of procrastination excuses and real excuses.
In response to Doohl
Doohl wrote:
It's a mixture of procrastination excuses and real excuses.

Those are my favorite two kinds.
As for ideas, I've got one to toss into the hat:



At the bottom-right of the screen, we've got a minimap that displays points of interest relative to the player. It works simply by outputting a raw list to the "minimap" element, where each index holds a string that tells the minimap element where in relation to the player a point of interest is.

All rendering is done via a pretty barebones HTML5 canvas.

However, I've also been toying with the possibility of drawing map geography around the player in the minimap as well. Because the minimap's radius is 22 tiles, we'd have to do a range(22) check per step / per tick if we wanted to draw turfs and other map objects. This is obviously... impractical on BYOND. But there's another way to do it.

Instead of doing all that, we could just generate a 1:1 image of the world and virtually "scroll" it as the player moves, underlaying the image underneath all other minimap blips. This would serve the same purpose, but would have no further CPU drain.
To clarify, the image would not be generated at run-time; rather, downloaded along with all the other resources.
Nice Doohl. Yeah, I have been contemplating of ways to use the canvas tag for different things.
Thats how I made my mini map system :) had 200+ npcs updating no problem with 4 players
Page: 1 2