Google Summer of Code: 2014

From ENIGMA

(Difference between revisions)
Jump to: navigation, search
(CLI for ENIGMA Compiling)
Line 27: Line 27:
== Implementation of an Asynchronous Networking System ==
== Implementation of an Asynchronous Networking System ==
-
For games with multiplayer support, asynchronous networking is useful. A current, limited, implementation of sockets is available that allows you to control blocking, but there is a lack of a GameMaker compatible version that can handle asynchronous networking easily.
+
For games with multiplayer support, asynchronous networking is useful. ENIGMA current provides a very basic, unpolished socket implementation. After a rewrite, the functions must be made to be non-blocking and must be connected with an event system. Lateral GM already supports editing the event type, it simply needs to be completed with functions.
Requires:
Requires:
* At least intermediate C++ knowledge.
* At least intermediate C++ knowledge.
 +
* Basic knowledge on how threads/thread safety works.
* Must be familiar with cross platform programming.
* Must be familiar with cross platform programming.
* Requires: Ability or willingness to learn networking using [https://en.wikipedia.org/wiki/Berkeley_sockets Berkeley Sockets]
* Requires: Ability or willingness to learn networking using [https://en.wikipedia.org/wiki/Berkeley_sockets Berkeley Sockets]
Line 55: Line 56:
* Java or C# experience
* Java or C# experience
* Swing or JavaFX experience, or the willingness to learn.
* Swing or JavaFX experience, or the willingness to learn.
 +
 +
Possible Mentors:
 +
* RobertBColton
 +
 +
== Customizable Basic Dialog System ==
 +
Many users need dialog functions to communicate with the user. A built in dialog system would be helpful, where dialogs are drawn by ENIGMA (rather than having platform dependent dialogs). Dialogs would consist of simple buttons and labels and would be customizable by the user through textures. Ideally, the dialog system would be batched and there would potentially be an asynchronous implementation.
 +
 +
Requires:
 +
* C++ and graphics API experience.
Possible Mentors:
Possible Mentors:
* RobertBColton
* RobertBColton

Revision as of 02:32, 14 February 2014

This article gives a general outline of several tasks that could be completed by Google Summer of Code 2014 volunteers. Most ideas were created by top ENIGMA contributors, but a few ideas were created by ENIGMA users.

Students may join the ENIGMA IRC channel, #enigma on Freenode, or post on the forums if they have any questions or concerns.

Contents

CLI for ENIGMA Compiling

ENIGMA can currently only compile through Lateral GM. A CLI would be a statically linked single executable that would be able to compile projects without the need for an IDE. The CLI would be required to read and parse images and sounds before passing them onto the ENIGMA compiler, which is implemented as a DLL (which is how Lateral GM uses it). It would also be required to parse project files, specifically, ENIGMA Project Files (YAML). The CLI should also implement compiling without the need for a project, eg. cli.exe -{show_message("Hello World")}.

Requires:

Possible Mentors:

Implementation of the ANGLE Library

ANGLE is a library that translates OpenGL calls to DirectX calls, giving Windows users a potential performance boost. Currently, ENIGMA has OpenGL 1, OpenGL 3 and DirectX 9 graphics systems. ANGLE would remove the requirement of the DirectX system in favor of a singular OpenGL 3 system.

Requires:

Possible Mentors:

Implementation of an Asynchronous Networking System

For games with multiplayer support, asynchronous networking is useful. ENIGMA current provides a very basic, unpolished socket implementation. After a rewrite, the functions must be made to be non-blocking and must be connected with an event system. Lateral GM already supports editing the event type, it simply needs to be completed with functions.

Requires:

Possible Mentors:

Implementation of a VR technology

With recent technologies such as Oculus Rift, the experience of players can become more immerse. We recommend implementing the Oculus SDK, since the Oculus Rift is currently the most popular and most supported form of Virtual Reality imaging.

Requires:

Possible Mentors:

Port LateralGM to use JavaFX

LateralGM is the IDE used by the ENIGMA game engine which relies on slow and outdated swing components. We basically want to start replacing these with those from the JavaFX library which is part of the core Java API since Java 7. This will allow customization of the IDE using cascading style sheets as well as hardware accelerated rendering and 3D graphics.

Requires:

Possible Mentors:

Customizable Basic Dialog System

Many users need dialog functions to communicate with the user. A built in dialog system would be helpful, where dialogs are drawn by ENIGMA (rather than having platform dependent dialogs). Dialogs would consist of simple buttons and labels and would be customizable by the user through textures. Ideally, the dialog system would be batched and there would potentially be an asynchronous implementation.

Requires:

Possible Mentors:

Personal tools
Namespaces
Variants
Actions
Navigation
ENIGMA
Other
Toolbox