Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Chief

Members
  • Posts

    3464
  • Joined

  • Last visited

    Never

Posts posted by Chief

  1. Been working hard on the engine. Below you can find a code snippet that shows off the "common" plugin. This plugin does a lot of the setup and boilerplate to make your job a lot easier. It's an update from my previous code paste.

    ```javascript
    const Plugin = require('../../core/Plugin');

    const Gamepad = require('./devices/Gamepad');
    const Keyboard = require('./devices/Keyboard');
    const Mouse = require('./devices/Mouse');

    const fragment = require('./shaders/default/fragment');
    const vertex = require('./shaders/default/vertex');

    const amend = require('./tasks/amend');
    const authorize = require('./tasks/authorize');
    const handshake = require('./tasks/handshake');
    const pong = require('./tasks/pong');
    const spawn = require('./tasks/spawn');

    const utilities = require('./utilities');

    module.exports = new Plugin('common', game => {
    const std = game.libraries.use('std');

    game.devices.install(new Gamepad('gamepad'));
    game.devices.install(new Keyboard('keyboard'));
    game.devices.install(new Mouse('mouse'));

    game.tasks.subscribe('handshake').forEach(method => handshake.apply(game, method.arguments));
    game.tasks.subscribe('pong').forEach(method => pong.apply(game, method.arguments));
    game.tasks.subscribe('authorize').forEach(method => authorize.apply(game, method.arguments));
    game.tasks.subscribe('spawn').forEach(method => spawn.apply(game, method.arguments));
    game.tasks.subscribe('amend').forEach(method => amend.apply(game, method.arguments));

    game.viewport.subscribe('mount').forEach(() => {
    game.renderer.bind('default', [ fragment, vertex ]);
    });

    game.loop.subscribe('update').forEach(() => {
    std.systems.move.run(game.initializer.heap.entities.get(game.world.player), game);

    for (const id of game.world.entities) {
    std.systems.move.run(game.initializer.heap.entities.get(id), game);
    }
    });

    game.loop.subscribe('draw').forEach(() => {
    game.renderer.clear();

    utilities.fill(game.renderer.webgl);

    for (const id of game.world.entities) {
    std.systems.render2d.run(game.initializer.heap.entities.get(id), game);
    }

    std.systems.render2d.run(game.initializer.heap.entities.get(game.world.player), game);
    });
    });
    ```

    Below now you can find a really stupid looking screenshot, but it helps to show off that the WebSocket networking and the WebGL renderer are both working nicely together when there are multiple players.

    ![](https://i.imgur.com/PmVh47S.png)

    The FPS meter in chrome (top right) bugs out, but the engine gets ~60FPS (max in-browser)
  2. Just updating some of the readme with planned features: [Does it come with editors?](https://github.com/cyclonic-games/vorge/blob/master/readme.md#does-it-come-with-editors)

    ---

    #### **Does it come with editors?**
    Yes, it will! I want to bake the engine and server out, work on the git-based package management, then jump right into developing the editors/creation suite. It will also be JavaScript and probably run on Electron.

    ##### **Future Planned Features**
    - Extensions (Make your own tools!)
    - Tile Map Editor
    - Quest Editor
    - Entity Editor
    - Script Editor
    - UI Designer
    - Deployment Manager (CI/CD)
    - TBD
  3. I just want to show off some code here. The following is an example of a plugin. It's called "common" and ships with the engine to help you get up and running without the included boilerplate.

    ```javascript
    const Plugin = require('../../core/Plugin');

    const Gamepad = require('./devices/Gamepad');
    const Keyboard = require('./devices/Keyboard');
    const Mouse = require('./devices/Mouse');

    const fragment = require('./shaders/default/fragment');
    const vertex = require('./shaders/default/vertex');

    const authorize = require('./tasks/authorize');
    const handshake = require('./tasks/handshake');
    const spawn = require('./tasks/spawn');

    module.exports = new Plugin('common', game => {
    game.devices.install(new Gamepad('gamepad'));
    game.devices.install(new Keyboard('keyboard'));
    game.devices.install(new Mouse('mouse'));

    game.tasks.subscribe('handshake').forEach(method => handshake.apply(game, method.arguments));
    game.tasks.subscribe('authorize').forEach(method => authorize.apply(game, method.arguments));
    game.tasks.subscribe('spawn').forEach(method => spawn.apply(game, method.arguments));

    game.viewport.subscribe('mount').forEach(() => {
    game.renderer.bind('default', [ fragment, vertex ]);
    });
    });
    ```

    It should be pretty simple to follow; it registers input devices, subscribes to tasks from the server, and then binds the webgl context to a "default" program (pair of shaders).

    I'll be posting other snippets of code here and there to show off the API.
  4. ```markdown

    __ _ ____ ____ ____ ____
    || // // \\ // \\ // \\ // \\
    || // // // // // // //___//
    ||// // // // // // //
    |// \\__// // \\__// \\__//
    //
    \\__//

    ```
    **Extensible/Modular, Event-Driven, Multiplayer, Entity/Component/System-Powered JavaScript Game Engine**
    https://github.com/cyclonic-games/vorge

    ---

    #### **What is it exactly?**
    The tagline says it all, if not too much. Vorge is built to be focused around ECS and event-driven programming. With WebSockets for networking, and WebGL for rendering, Vorge is fast and powerful enough for most projects (especially for 4:3 2D online RPGs).

    ---

    #### **What are the features?**
    Before I list them out, it's important to understand how Vorge works. The basic idea is to create a high-throughput application scaffolding that allows for several ways of customization. Vorge ships with some basic, common functionality in the shape of **Modules**, **Libraries**, and **Plugins**, but Vorge itself is just designed to handle data flow and communication between moving parts (including client <-> server).

    ##### **Modules**
    Vorge modules are essentially core blocks of logic that make up the majority of the internal logic of the engine. Modules allow you to replace existing modules or create entirely new ones that add unique functionality.

    ##### **Libraries**
    With an Entity/Component/System architecture, managing all of these objects can become difficult. Libraries in Vorge consist of prebuilt entities, components, and systems that you can reference in your modules, other libraries, or plugins.

    ##### **Plugins**
    These are simple; want to run some code when the game is instantiated. This allows you to subscribe to events, swap modules, communicate with the server, among many other things.

    ---

    #### **But seriously, what are the features?**
    High-ish throughput networking via WebSockets
    High-ish performance graphics via WebGL
    100% Web compatible, meaning completely cross-platform
    Event Driven; hook into the engine's event system and react to engine internals
    Entity/Component/System -- look it up, it's all the rage
    Flexible customization toolkit
    Git-based package management
    Open Source & 100% Free
    TBD

    ---

    #### **But does it have pets system?**
    The basic functionality that vorge ships with is enough to get a simple online RPG up and running. I will be working on my own game while I polish up the engine, and all of the modules, libraries, and plugins that I develop for my game I will release as open source for you to use in your games. This means that yes, if someone writes you the plugin, Vorge can support a pets system, and so much more.

    ##### **Future Planned Features**
    - Particles (render beautiful particles)
    - Electron (run your game as a desktop app)
    - Offline (make a single player game)
    - Discord (integrate with discord and its api)
    - Web-based administration panel for the server
    - TBD

    ---

    #### **Does it come with editors?**
    Yes, it will! I want to bake the engine and server out, work on the git-based package management, then jump right into developing the editors/creation suite. It will also be JavaScript and probably run on Electron.

    ##### **Future Planned Features**
    - TBD

    ---

    #### **Screenshots**
    None yet. I know.

    Vorge is actually decently far along in production, but the focus has been lower level internals. There's not a whole lot to show, visually, but you should check out the github: https://github.com/cyclonic-games
  5. I should say as full disclosure from my perspective, I work as a Senior Engineer for one of the largest retailers in the world.

    I've worked with a lot of different engineers from all backgrounds and skill levels, and the very best ones that I've either mentored or have been mentored from have been the ones that care and have passion for their work. Everything falls by the wayside if you simply don't care.

    Could I also code an entire 2D game from scratch? Yeah, probably, but could I build an entire website (server+ client) from the ground up without consulting google and MDN? Absolutely not.
  6. In my experience, what makes a good programmer is passion. If you need to look things up every now and then, fine, but as long as you actually care about code quality, and about architecting good solutions to bad problems, then you're a good programmer.

    That being said, if you don't have passion for it, find a different career path, and save your potential future coworkers a headache.
  7. You would probably have more success if you listed out the features that you need. This would give people a better idea if they can help you or not.
  8. As a scuba diver, I'd say that it's important to note that the deeper you go, you start to lose colours. If you google it, you can get a better idea of how to maybe tweak some shaders to accommodate a more realistic feel based off of this information.

    Realism aside, though, it looks very interesting. I'd be interested in seeing more later.
  9. While I generally view Quoara as a pile of shit, this came across my feed today: https://www.quora.com/What-are-the-programming-language-trends-for-2017 – A lot of devs saying very similar things to me.

    Go and Rust are definitely languages to learn this year.

    .NET (C#) doing very well; definitely good to learn this as well.

    Ruby + PHP on a strong decline in usage.

    Python a strong choice in the data science realm.
×
×
  • Create New...