Advertisement Jump to content
  • Advertisement

Search the Community

Showing results for tags 'Open Source'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Categories

  • Audio
    • Music and Sound FX
  • Business
    • Business and Law
    • Career Development
    • Production and Management
  • Game Design
    • Game Design and Theory
    • Writing for Games
    • UX for Games
  • Industry
    • Interviews
    • Event Coverage
  • Programming
    • Artificial Intelligence
    • General and Gameplay Programming
    • Graphics and GPU Programming
    • Engines and Middleware
    • Math and Physics
    • Networking and Multiplayer
  • Visual Arts
  • Archive

Categories

  • Audio
  • Visual Arts
  • Programming
  • Writing

Categories

  • Game Dev Loadout
  • Game Dev Unchained

Categories

  • Game Developers Conference
    • GDC 2017
    • GDC 2018
  • Power-Up Digital Games Conference
    • PDGC I: Words of Wisdom
    • PDGC II: The Devs Strike Back
    • PDGC III: Syntax Error

Forums

  • Audio
    • Music and Sound FX
  • Business
    • Games Career Development
    • Production and Management
    • Games Business and Law
  • Game Design
    • Game Design and Theory
    • Writing for Games
  • Programming
    • Artificial Intelligence
    • Engines and Middleware
    • General and Gameplay Programming
    • Graphics and GPU Programming
    • Math and Physics
    • Networking and Multiplayer
  • Visual Arts
    • 2D and 3D Art
    • Critique and Feedback
  • Community
    • GameDev Challenges
    • GDNet+ Member Forum
    • GDNet Lounge
    • GDNet Comments, Suggestions, and Ideas
    • Coding Horrors
    • Your Announcements
    • Hobby Project Classifieds
    • Indie Showcase
    • Article Writing
  • Affiliates
    • NeHe Productions
    • AngelCode
  • Topical
    • Virtual and Augmented Reality
    • News
  • Workshops
    • C# Workshop
    • CPP Workshop
    • Freehand Drawing Workshop
    • Hands-On Interactive Game Development
    • SICP Workshop
    • XNA 4.0 Workshop
  • Archive
    • Topical
    • Affiliates
    • Contests
    • Technical
  • GameDev Challenges's Topics
  • For Beginners's Forum
  • Unreal Engine Users's Unreal Engine Group Forum

Calendars

  • Community Calendar
  • Games Industry Events
  • Game Jams
  • GameDev Challenges's Schedule

Blogs

There are no results to display.

There are no results to display.

Product Groups

  • Advertisements
  • GameDev Gear

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me


Website


Role


Twitter


Github


Twitch


Steam

Found 75 results

  1. Hello. I am developing a 2D engine, and I would just like to share it. It is called A2D. I'm trying to make it as simple and easy-to-use as possible and you can help me with it with your contributions. Currently it can be built for Desktop (Linux, Windows and macOS tested) and Mobile (Android and IOS tested). Features: C++11 (Higher versions may require some changes in settings) Entity-Component-System (Implementation is similar to Unity ECS with simplifications) Textures (with lodepng, only .png for now) Audio (with soloud audio engine) (in progress) Text rendering (with freetype) GLSL shaders cross-compilation (with glslcc) for supporting OpenGL ES Physics (with box2d) (in progress) Cross-platform (Windows, Linux and macOS support with glfw + glew, Android - NDK (OpenGL ES), IOS - GLKit (OpenGL ES)) There is no screenshots yet, but they will appear soon. Anyway, thank you for reading and sorry for my english 😃 You can contact with me - selya.main@gmail.com or just star github repository (https://github.com/ayles/A2D).
  2. Brain

    Postal 1 Open Source

    The complete buildable source tree of Postal 1, open sourced by Running With Scissors in 2016.
  3. Hodgman

    Building custom input hardware

    Inspiration The game Objects in Space has been demoing their game at shows such as PAX with a giant space-ship cockpit controller, complete with light-up buttons, analog gauges, LED status indicators, switches, etc... It adds a lot to the immersion when playing the game: They have an Arduino tutorial over on their site, and a description of a communication protocol for these kinds of controllers. I want to do the same thing for my game 😁 For this example, I'm going to spend ~$40 to add some nice, big, heavy switches to my sim-racing cockpit. The main cost involved is actually these switches themselves -- using simple switches/buttons could halve the price! They're real hardware designed to withstand 240W of power, and I'll only be putting 0.03W or so through them. Also, as a word of warning, I am a cheapskate, so I'm linking to the cheap Chinese website where I buy lots of components / tools. One of the downsides of buying components on the cheap is that they often don't come with any documentation, so I'll deal with that issue below, too Main components Arduino Mega2560 - $9 Racing ignition switch panel - $26 A pile of jump wire (male to male, male to female, etc...) - $2 + + Recommended Tools A soldering iron (a good one is worth it, but a cheap one from your hardware store will do) Solder (60/40 lead rosin core is easy to work with, though bad for the environment...) Heat shrink (and a hot air gun, hair dryer, or cigarette lighter) or electrical tape A hot glue gun (and glue sticks), or some epoxy resin A multimeter Wire cutters / stripper, or a pair of scissors if you're cheap. Software Arduino IDE for programming the main Arduino CPU For making a controller that appears as a real hardware USB gamepad/joystick: FLIP for flashing new firmware onto the Arduino's USB controller The arduino-usb library on github For making a controller that your game talks to directly (or appears as a virtual USB gamepad/joystick😞 My ois_protocol library on github The vJoy driver, if you want to use it as a virtual USB gamepad/joystick. Disclaimer I took electronics in high school and learned how to use a soldering iron, and that you should connected red wires to red wires, and black wires to black wires... Volts, amps and resistance have an equation that relates them? That's about the extent of my formal electronics education This has been a learning project for me, so there may be bad advice or mistakes in here! Please post in the comments. Part 1, making the thing! Dealing with undocumented switches... As mentioned above, I'm buying cheap parts from a low-margin retailer, so my first job is figuring out how these switches/buttons work. A simple two-connector button/switch The button is easy, as it doesn't have any LEDs in it and just has two connectors. Switch the multimeter to continuity mode ( ) and touch one probe to each of the connectors -- the screen will display OL (open loop), meaning there is no connection between the two probes. Then push the button down while the probes are still touching the connectors -- the screen will display something like 0.1Ω and the multimeter will start beeping (indicating there is now a very low resistance connection between the probes -- a closed circuit). Now we know that when the button is pressed, it's a closed circuit, and otherwise it's an open circuit. Or diagrammatically, just a simple switch: Connecting a switch to the Arduino Find two pins on the Arduino board, one labelled GND, and one labelled "2" (or any other arbitrary number -- these are general purpose IO pins that we can control from software). If we connect our switch like this and then tell the Arduino to configure pin "2" to be an INPUT pin, we get the circuit on the left (below). When the button is pressed, pin 2 will be directly connected to ground / 0V, and when not pressed, pin 2 will not be connected to anything. This state (not connected to anything) is called "floating", and unfortunately it's not a very good state for our purposes. When we read from the pin in our software (with digitalRead(2)) we will get LOW if the pin is grounded, and an unpredictable result of either LOW or HIGH if the pin is in the floating state! To fix this, we can configure the pin to be in the INPUT_PULLUP mode, which connects a resistor inside the processor and produces the circuit on the right. In this circuit, when the switch is open, our pin 2 has a path to +5V, so will reliably read HIGH when tested. When the switch is closed, the pin still has that high-resistance path to +5V, but also has a no-resistance path to ground / 0V, which "wins", causing the pin to read LOW. This might feel a little backwards to software developers -- pushing a button causes it to read false / LOW, and when not pressed it reads true / HIGH We could do the opposite, but the processor only has in-built pull-up resistors and no in-built pull-down resistors, so we'll stick with this model. The simplest Arduino program that reads this switch and tells your PC what state it's in looks something like below. You can click the upload button in the Arduino IDE and then open the Serial Monitor (in the Tools menu) to see the results. void setup() { Serial.begin(9600); pinMode(2, INPUT_PULLUP); } void loop() { int state = digitalRead(pin); Serial.println( state == HIGH ? "Released" : "Pressed" ); delay(100);//artifically reduce the loop rate so the output is at a human readable rate... } More semi-documented switches... An LED switch with three connectors The main switches on my panel thankfully have some markings on the side labeling the three connectors: I'm still not 100% certain how it works though, so again, we get out the multimeter in continuity mode and touch all the pairs of connectors with the switch both on and off... however, this time, the multimeter doesn't beep at all when we put the probes on [GND] and [+] with the switch "on"! The only configuration where the multimeter beeps (detects continuity) is when the switch is "on" and the probes are on [+] and [lamp]. The LED within the switch will block the continuity measurement, so from the above test, we can guess that the LED is connected directly to the [GND] connector, and not the [+] or [lamp] connectors. Next, we can put the multimeter onto diode testing mode ( symbol) and test the pairs of connectors again - but this time polarity matters (red vs black probe). Now, when we put the red probe on [lamp] and the black probe on [GND], the LED lights up and the multimeter reads 2.25V. This is the forward voltage of the diode, or the minimum voltage required to make it light up. Regardless of switch position, 2.25V from [lamp] to [GND] causes the LED to come on. When we put the red probe on [+] and the black probe on [GND] the LED only comes on if the switch is also on. From these readings, we can guess that the internals of this switch looks something like below, reproducing our observations: [+] and [lamp] short circuit when the switch is on / closed. A positive voltage from [lamp] to [GND] always illuminates the LED. A positive voltage from [+] to [GND] illuminates the LED only when the switch is on / closed. Honestly the presence of the resistor in there is a bit of a guess. LED's need to be paired with an appropriate resistor to limit the current fed into them, or they'll burn out. Mine haven't burned out, seem to be working correctly, and I found a forum post on the seller's website saying there was an appropriate resistor installed for 12V usage, so this saves me the hassle of trying to guess/calculate the appropriate resistor to use here Connecting this switch to the Arduino The simplest way to use this on the Arduino is to ignore the [lamp] connector, connect [GND] to GND on the Arduino, and connect [+] to one of the Arduino's numbered pins, e.g. pin 3. If we set pin 3 up as INPUT_PULLUP (as with the previous button) then we'll end up with the result below. The top left shows the value that we will recieve with "digitalRead(3)" in our Arduino code. When the switch is on/closed, we read LOW and the LED will illuminate! To use this kind of switch in this configuration you can use the same Arduino code as in the button example. Problems with this solution Connected to the Arduino, the full circuit looks like: Here, we can see though, that when the switch is closed, instead of there being quite a small current-limiting resistor in front of the LED (I'm guessing 100Ω here), there is also the 20kΩ pullup resistor which will further reduce the amount of current that can flow through the LED. This means that while this circuit works, the LED will not be very bright. Another downside with this circuit is we don't have programmatic control over the LED - it's on when the switch is on, and off when the switch is off. We can see what happens if we connect the [lamp] connector to either 0V or +5V below. When [lamp] is connected to 0V, the LED is permanently off (regardless of switch position), and the Arduino position sensing still behaves. This gives us a nice way of programatically disabling the LED if we want to! When [lamp] is connected to +5V, the LED is permanently on (regardless of switch position), however, the Arduino position sensing is broken - our pin will always read HIGH Connecting this switch to the Arduino properly We can overcome the limitations described about (low current / LED intensity, and no LED programmatic control) by writing a bit more software! To resolve the conflict between being able to control the LED and our position sensing getting broken by LED control, we can time-slice the two -- i.e. temporarily turn off the LED when reading the sensor pin (#3). First, connect the [lamp] pin to another general purpose Arduino pin, e.g. 4, so we can control the lamp. To make a program that reads the switch position reliably and also controls the LED (we'll make it blink here) we just have to be sure to turn the LED off before reading the switch state. Hopefully the LED will only be disabled for a fraction of a millisecond, so it shouldn't be a noticeable flicker: int pinSwitch = 3; int pinLed = 4; void setup() { //connect to the PC Serial.begin(9600); //connect our switch's [+] connector to a digital sensor, and to +5V through a large resistor pinMode(pinSwitch, INPUT_PULLUP); //connect our switch's [lamp] connector to 0V or +5V directly pinMode(pinLed, OUTPUT); } void loop() { int lampOn = (millis()>>8)&1;//make a variable that alternates between 0 and 1 over time digitalWrite(pinLed, LOW);//connect our [lamp] to +0V so the read is clean int state = digitalRead(pinSwitch); if( lampOn ) digitalWrite(pinLed, HIGH);//connect our [lamp] to +5V Serial.println(state);//report the switch state to the PC } On the Arduino Mega, pins 2-13 and 44-46 can use the analogWrite function, which doesn't actually produce voltages between 0V and +5V, but approximates them with a square wave. You can use this to control the brightness of your LED if you like! This code will make the light pulse from off to on instead of just blinking: void loop() { int lampState = (millis()>>1)&0xFF;//make a variable that alternates between 0 and 255 over time digitalWrite(pinLed, LOW);//connect our [lamp] to +0V so the read is clean int state = digitalRead(pinSwitch); if( lampState > 0 ) analogWrite(pinLed, lampState); } Assembly tips This post is already big enough so I won't add a soldering tutorial on top, I'll leave that to google! However, some basic tips: When joining wires to large metal connectors, do make sure that your iron is hot first, and take a moment to also heat up the metal connector too. The point of soldering is to form a permanent bond by creating an alloy, but if only one part of the connection is hot, you can easily end up with a "cold joint", which superficially looks like a connection, but hasn't actually bonded. When joining two wires together, make sure to slip a bit of heat-shrink onto one of them first - you can't slip the heat-shrink on after the joint is made. This sounds obvious, but I'm always forgetting to do so and having to fall back to using electrical tape instead of heat-shrink... Also, slip the heat-shrink far away from the joint so it doesn't heat up prematurely. After testing your soldered connection, slide the heat-shrink over the joint and heat it up. The thin little dupont / jump wire that I listed at the start are great for solderless connections (e.g. plugging into the Arduino!) but are quite fragile. After soldering these, use hot glue to hold them in place and move any strains away from the joint itself. e.g. the red wires below might get pulled on while I'm working on this, so after soldering them to the switches, I've fixed them in place with a dab of hot glue: Part 2, make it act as a game controller! To make it appear as a USB game controller in your OS, the code is quite simple, but unfortunately we also have to replace the firmware on the Arduino's USB chip with a custom one that you can grab from here: https://github.com/harlequin-tech/arduino-usb Unfortunately, once you put this custom firmware on your Arduino, it is now a USB-joystick, not an Arduino any more So in order to reprogram it, you have to again re-flash it with the original Arduino firmware. Iterating is a bit of a pain -- upload arduino code, flash joystick firmware, test, flash arduino firmware, repeat... An example of an Arduino program for use with this firmware is below -- it sets up three buttons as inputs, reads their values, copies it into the data structure expected by this custom firmware, and send the data. Rinse and repeat. // define DEBUG if you want to inspect the output in the Serial Monitor // don't define DEBUG if you're ready to use the custom firmware #define DEBUG //Say we've got three buttons, connected to GND and pins 2/3/4 int pinButton1 = 2; int pinButton2 = 3; int pinButton3 = 4; void setup() { //configure our button's pins properly pinMode(pinButton1, INPUT_PULLUP); pinMode(pinButton2, INPUT_PULLUP); pinMode(pinButton3, INPUT_PULLUP); #if defined DEBUG Serial.begin(9600); #else Serial.begin(115200);//The data rate expected by the custom USB firmware delay(200); #endif } //The structure expected by the custom USB firmware #define NUM_BUTTONS 40 #define NUM_AXES 8 // 8 axes, X, Y, Z, etc typedef struct joyReport_t { int16_t axis[NUM_AXES]; uint8_t button[(NUM_BUTTONS+7)/8]; // 8 buttons per byte } joyReport_t; void sendJoyReport(struct joyReport_t *report) { #ifndef DEBUG Serial.write((uint8_t *)report, sizeof(joyReport_t));//send our data to the custom USB firmware #else // dump human readable output for debugging for (uint8_t ind=0; ind<NUM_AXES; ind++) { Serial.print("axis["); Serial.print(ind); Serial.print("]= "); Serial.print(report->axis[ind]); Serial.print(" "); } Serial.println(); for (uint8_t ind=0; ind<NUM_BUTTONS/8; ind++) { Serial.print("button["); Serial.print(ind); Serial.print("]= "); Serial.print(report->button[ind], HEX); Serial.print(" "); } Serial.println(); #endif } joyReport_t joyReport = {}; void loop() { //check if our buttons are pressed: bool button1 = LOW == digitalRead( pinButton1 ); bool button2 = LOW == digitalRead( pinButton2 ); bool button3 = LOW == digitalRead( pinButton3 ); //write the data into the structure joyReport.button[0] = (button1?0x01:0) | (button2?0x02:0) | (button3?0x03:0); //send it to the firmware sendJoyReport(joyReport) } Part 3, integrate it with YOUR game! As an alternative the the above firmware hacking, if you're in control of the game that you want your device to communicate with, then you can just talk to your controller directly -- no need to make it appear as a Joystick to the OS! At the start of this post I mentioned Objects In Space; this is exactly the approach that they used. They developed a simple ASCII communication protocol that can be used to allow your controller and your game to talk to each other. All you have to do is enumerate the serial ports on your system (A.K.A. COM ports on Windows, and btw look how awful this is in C), find the one with a device named "Arduino" connected to it, open that port and start reading/writing ASCII to that handle. On the Arduino side, you just keep using the Serial.print functions that I've used in the examples so far. At the start of this post, I also mentioned my library for solving this problem: https://github.com/hodgman/ois_protocol This contains C++ code that you can integrate into your game to act as the "server", and Arduino code that you can run on your controller to act as the "client". Setting up your Arduino In example_hardware.h I've made classes to abstract the individual buttons / switches that I'm using. e.g. `Switch` is a simple button as in the first example, and `LedSwitch2Pin` is the controllable LED switch from my second example. The actual example code for my button panel is in example.ino. As a smaller example, let's say we have a single button to be sent to the game, and a single LED controlled by the game. The required Arduino code looks like: #include "ois_protocol.h" //instantiate the library OisState ois; //inputs are values that the game will send to the controller struct { OisNumericInput myLedInput{"Lamp", Number}; } inputs; //outputs are values the controller will send to the game struct { OisNumericOutput myButtonOutput{"Button", Boolean}; } outputs; //commands are named events that the controller will send to the game struct { OisCommand quitCommand{"Quit"}; } commands; int pinButton = 2; int pinLed = 3; void setup() { ois_setup_structs(ois, "My Controller", 1337, 42, commands, inputs, outputs); pinMode(pinButton, INPUT_PULLUP); pinMode(pinLed, OUTPUT); } void loop() { //read our button, send it to the game: bool buttonPressed = LOW == digitalRead(pin); ois_set(ois, outputs.myButtonOutput, buttonPressed); //read the LED value from the game, write it to the LED pin: analogWrite(pinLed, inputs.myLedInput.value); //example command / event: if( millis() > 60 * 1000 )//if 60 seconds has passed, tell the game to quit ois_execute(ois, commands.quitCommand); //run the library code (communicates with the game) ois_loop(ois); } Setting up your Game The game code is written in the "single header" style. Include oisdevice.h into your game to import the library. In a single CPP file, before #including the header, #define OIS_DEVICE_IMPL and #define OIS_SERIALPORT_IMPL -- this will add the source code for the classes into your CPP file. If you have your own assertions, logging, strings or vectors, there are several other OIS_* macros that can be defined before importing the header, in order to get it to use your engine's facilities. To enumerate the COM ports and create a connection for a particular device, you can use some code such as this: OIS_PORT_LIST portList; OIS_STRING_BUILDER sb; SerialPort::EnumerateSerialPorts(portList, sb, -1); for( auto it = portList.begin(); it != portList.end(); ++it ) { std::string label = it->name + '(' + it->path + ')'; if( /*device selection choice*/ ) { int gameVersion = 1; OisDevice* device = new OisDevice(it->id, it->path, it->name, gameVersion, "Game Title"); ... } } Once you have an OisDevice instance, you should call its Poll member function regularly (e.g. every frame), you can retrieve the current state of the controller's output with DeviceOutputs(), can consume events from the device with PopEvents() and can send values to the device with SetInput(). An example application that does all of this is available at example_ois2vjoy/main.cpp Part 4, what if you wanted part 2 and 3 at the same time!? To make your controller work in other games (part 2) we had to install custom firmware and one Arduino program, but to make the controller fully programmable by your game, we used standard Arduino firmware and a different Arduino program. What if we want both at once? Well, the example application that is linked to above, ois2vjoy, solves this problem This application talks to your OIS device (the program from Part 3) and then, on your PC, converts that data into regular gamepad/joystick data, which is then sent to a virtual gamepad/joystick device. This means you can leave your custom controller using the OIS library all the time (no custom firmware required), and when you want to use it as a regular gamepad/joystick, you just run the ois2vjoy application on your PC, which does the translation for you. Part 5, wrap up I hope this was useful or interesting to some of you. Thanks for making it to the end! If this does tickle you fancy, please consider collaborating / contributing to the ois_protocol library! I think it would be great to make a single protocol to support all kinds of custom controllers in games, and encourage more games to directly support custom controllers!
  4. I've begun work on an open source project called Last Ditch. It is similar in scope to Dwarf Fortress, but set in a futuristic environment. I'm looking for feedback on the general approach before I establish the foundations too thoroughly to adjust course. I also welcome interested contributors and collaborators. The repo for the project is available here: https://github.com/ecssiah/last-ditch The Notes.md file in the repo contains an outline for the project. I've begun writing it using SDL2. The goal is to keep the graphics as minimalist as possible in order to allow the most room for logic and depth. At this point, I have the tile map and some early menu systems and ui features working. This felt like a good time to take a breather and seek out some feedback. I also want to keep the libraries and design of the game as simple as possible to encourage contributions and engagement with the project. I originally set out to write the application using OpenGL, but found some friction due to the library being deprecated on mac. I want a cross-platform application, so I went to SDL. The main goal of the application is to watch a community grow and survive in a hostile environment by indirect control. The user controls one particular person in the application who has the ability to lead and manage the activities of others but does not have the ability to directly control them. The approach is going to share similarities with other management simulations. Another primary goal is to make sure the application is easily extensible and moddable, so this will entail choosing some kind of scripting system. Advice on any aspect of the application is greatly appreciated.
  5. Hi, We are working on a sequel to my all time favorite application: "Garry Kitchen's GameMaker" for the Commodore 64. (it's a very simple game creation IDE) Application builds and runs on Windows(R) and Linux. (the only dependency is SDL2 and there is a makefile included to build on any Linux) NOTE: This is a just started work-in-progress...don't expect too much We will be updating this thread posting as production progresses. Please post complaints and suggestions to this forum thread. This is our most ambitious project to date so don't expect a beta for at least 6-12 months... Thanks! JeZxLee www.FallenAngelSoftware.com If you are unfamiliar with this superb game creation IDE then please check out the wiki below: en.wikipedia.org Garry Kitchen's GameMaker Garry Kitchen's GameMaker is an IDE for the Commodore 64, Apple II, and IBM PCs, created by Garry Kitchen and released by Activision in 1985. The software is notable as one of the earliest all-in-one game design products aimed at the general consumer, preceded by Broderbund’s The Arcade Machine in 1982. Two add-on disks are available for the Commodore 64 version: Sports, and Science Fiction. These include sprites, music, and background elements for loading into GameMaker. To demonstrate the vers... You can download the current entire project below on GitHub: GitHub FallenAngelSoftware/SDL2-C64GKGM2 100% FREE Cross-Platform Open-Source SDL2 Video Game Engine! - FallenAngelSoftware/SDL2-C64GKGM2 Here is a screenshot:
  6. Hello! For more that two years I'm making my 2D sandbox adventure RPG with generated and almost fully destructible world. Recently the project become open-source and detailed description can be found here - https://github.com/mrDIMAS/TheDwarfAdventure Here is gameplay video (very short) with core mechanics: Latest stable build can be found here - https://github.com/mrDIMAS/TheDwarfAdventure/releases I need some feedback and if you found a bug - create an issue - this will help me a lot.
  7. Hi, I am looking for some software that can serve as a starting point for a game editor. What I mean by that is that I want something that provides some of the essential/common functions you would find in an editor, but that is intended to be customized and used to create a domain specific editor. Does anyone know of something like that? -Josh
  8. Hi, Can some people here look over our Indie game website? We want to have a great website, so be as mean as possible! Website address is below: www.FallenAngelSoftware.com Everything on the above site is 100% FREE. Some games are even open-source. Any complaints or suggestions for improvement would be appreciated! Thanks in advance! Jesse
  9. Sol_HSA

    SoLoud Audio Engine 20181119 Release

    SoLoud audio engine 2018119 has been released, and available at http://soloud-audio.com SoLoud is an easy to use, free, portable c/c++ audio engine for games. First release after 2 year burnout hiatus Hilights: FLAC, MP3 and various wav file formats through dr_flac, dr_mp3 and dr_wav Split SDL and SDL2 dll backends due to SDL2 doing stupid things unless told not to Removed modplug, added libmodplug dll interface Loop point support for all audio sources Wav files can now load from raw data Multi-speaker support Queues Many new small examples Piano demo now has padsynth Sanity test: over 200 tests to check if changes break playback Asserts playBackground helper interface to play audio without panning countAudioSource call to see how many instances of an audio source are playing PS Vita homebrew platform support Wave shaper, robotize filters Added more options to speech synth playback Removed many dynamic allocations Switched FFT implementations (again) Countless bug fixes and tweaks View full story
  10. Sol_HSA

    SoLoud Audio Engine 20181119 Release

    SoLoud audio engine 2018119 has been released, and available at http://soloud-audio.com SoLoud is an easy to use, free, portable c/c++ audio engine for games. First release after 2 year burnout hiatus Hilights: FLAC, MP3 and various wav file formats through dr_flac, dr_mp3 and dr_wav Split SDL and SDL2 dll backends due to SDL2 doing stupid things unless told not to Removed modplug, added libmodplug dll interface Loop point support for all audio sources Wav files can now load from raw data Multi-speaker support Queues Many new small examples Piano demo now has padsynth Sanity test: over 200 tests to check if changes break playback Asserts playBackground helper interface to play audio without panning countAudioSource call to see how many instances of an audio source are playing PS Vita homebrew platform support Wave shaper, robotize filters Added more options to speech synth playback Removed many dynamic allocations Switched FFT implementations (again) Countless bug fixes and tweaks
  11. I've been looking into server hosting for the game server, and since Windows Server does cost a bit to lease and also fires up a bunch of services that I don't need at all I've been looking into Linux. The server is written in C# and previously Mono was the only realistic alternative for Linux - but it had a reputation for very bad performance in many cases. .Net Core 1.x was way too restricted feature-wise, but with .Net core 2.x the tables have turned. So last day I embarked on a mission to port my entire codebase - except for some Windows Forms test projects - into .Net Standard, and created a .Net Core console project to start the service. This turned out to be totally painless. I wasn't using any functionality that wasn't part of .Net Standard 2.x so it simply just worked. The next step was to run this on Linux. I have very little experience with Linux but Google works well for most things so I set up a Centos 7 VM in Hyper-V and went to work. The installation did take a few tries and I had to battle a few permission problems when following a guide on installing .Net Core on Centos but they weren't a big hurdle. Of course when I managed to start the program it crashes immediately, and I found some issues with path names - backslashes and case-sensitivity - when loading game data. These were also fixed pretty easily and soon the server was running. I couldn't connect to it though from the host system, but this was a simple matter of opening a port in the firewall. So far I'm already becoming a Linux fan at least when it comes to servers. Running a box without any graphical user interface is in some ways easier. Everything is a file and everything you can do can be done with a command. On Windows most things you do when managing a server consist of a complex series of clicking this and that button or file icon, filling out textfields etc. etc. and is hard to document (I'm sure you can also do most things with CMD and Powershell of course) On Linux it might take some time to research how to do even the simplest thing for a newbie such as myself, but every command needed can simply be stored in a text-file, so that I can easily set up a new server from scratch. And this file can easily be updated - and reviewed by a Linux expert for troubleshooting.
  12. There had to be a way to manage cool screen transitions as easy as possible in C++ without too much difficulty. There wasn't until now Swoosh, the mini library that immediately adds 100x polish to your game. Fork the project at https://github.com/TheMaverickProgrammer/Swoosh. LICENSED under zlib/libpng License . Swoosh is easy to integrate and makes your game look pro. Just checkout the super simple game example that ships with it. The library is header only and open source. See the full video https://streamable.com/qb023. The example project comes with 4 header-only custom segue effects you can copy and paste directly into your project and it'll just work. That simple. That powerful. Using segues is as easy as calling push or pop and providing the intent. The intent is a specialized nested class designed to be human readable. Just see for yourself: ActivityController controller; controller.push<MainMenuScene>(); ... // User selects settings using intent::segue; controller.push<segue<SlideInLeft>::to<AppSettingsScene>>(); Popping is the same way. controller.queuePop(); controller.queuePop<segue<SlideIn>>(); And if you're making a legend of zelda clone and the player teleports out of a series of deep dungeons back to overworld... there's a function for that too bool found = controller.queueRewind<segue<SlideIn>::to<LOZOverworld>>(); if(!found) { // Perhaps we're already in overworld. Certain teleport items cannot be used! } Take a peak at the full source code for the demo project: https://github.com/TheMaverickProgrammer/Swoosh/tree/master/ExampleDemo/Swoosh Swoosh comes with other useful utilities specifically but not limited to games. function bool doesCollide(a, b) function double angleTo(subject, target) function vector2 direction(target, dest) And more... See the rest here: https://github.com/TheMaverickProgrammer/Swoosh/wiki/Namespaces
  13. I am planning to use some third party libraries, more specifically FreeImage, and in the Download page there is a Disclaimer: http://freeimage.sourceforge.net/download.html Basically it displays the licenses and the copyright owners of the libraries included within FreeImage. I know I have to display FreeImage's license at some point in my game, but do I have to display all of those licenses from the libraries contained within FreeImage itself?
  14. I have prepared a video tutorial that explains how you can make a game in 5 minutes with LGCK builder. This small video is a quick introduction to use this amazing tool that can be used to make any kind of 2D games. https://www.youtube.com/watch?v=lN3gkZWr-PM&t=2s Okay, You have watched the video and still have questions. Maybe you want to create a top down 2D map. There is an option to disable gravity on each given level. You simply right-click your level in the Toolbox and select Edit Level. On the Advanced tab, there is a no gravity checkbox. There are two main requirements for a given level to work. First, you must include a Player Sprite. This is easily solved by creating it with the Sprite Wizard and drag & dropping your player into your newly created level. Second, you need at least one goal. The easiest way to solve that problem is use the Sprite Wizard and select Object as the sprite type. There is a checkbox called Automatic goal that you can check and this will mark any instance of this sprite as an objective going toward the completion of the level. Objects die when they are touched by the player and you can set several options including points, health rewards and sound to play by right clicking your object and selecting Edit Sprite. If you didn't check automatic goal, you can always right click on any of those Sprites on your level and select Customize in the context menu. Once you are in the property box just check the attribute Goal. If you don't have sprites of your own, LGCK builder comes with some sprites in the tutorial folder. It also comes with a sample demo game that highlight some of the engine capabilities and how to use the event model to do some neat tricks (like breakable bridges, animated lava, or squares that change colors when you step on them etc.). You can find more sprites and sounds here: https://sourceforge.net/projects/lgck/files/Resources/ Please note that many of the sprites you can find on the web come in the form of sprite sheets. LGCK builder can import most of them with minimal intervention. Go to File, Import, Import Images. Click the + button to add a new png file. Once the sprite sheet is in the box, right click on it and select Split image from the context menu. You'll be given the choice of picking the right tile size (16x16, 24x24, 32x32 etc.). If you need to edit this image set further, LGCK builder IDE comes with it's own Sprite Editor. You can download LGCK builder from freewarefiles: https://www.freewarefiles.com/Lgck-Builder-Game-Construction-Kit-_program_112323.html You can find more information at the official site: https://cfrankb.com/lgck
  15. I have prepared a video tutorial that explains how you can make a game in 5 minutes with LGCK builder. This small video is a quick introduction to use this amazing tool that can be used to make any kind of 2D games. https://www.youtube.com/watch?v=lN3gkZWr-PM&t=2s Okay, You have watched the video and still have questions. Maybe you want to create a top down 2D map. There is an option to disable gravity on each given level. You simply right-click your level in the Toolbox and select Edit Level. On the Advanced tab, there is a no gravity checkbox. There are two main requirements for a given level to work. First, you must include a Player Sprite. This is easily solved by creating it with the Sprite Wizard and drag & dropping your player into your newly created level. Second, you need at least one goal. The easiest way to solve that problem is use the Sprite Wizard and select Object as the sprite type. There is a checkbox called Automatic goal that you can check and this will mark any instance of this sprite as an objective going toward the completion of the level. Objects die when they are touched by the player and you can set several options including points, health rewards and sound to play by right clicking your object and selecting Edit Sprite. If you didn't check automatic goal, you can always right click on any of those Sprites on your level and select Customize in the context menu. Once you are in the property box just check the attribute Goal. If you don't have sprites of your own, LGCK builder comes with some sprites in the tutorial folder. It also comes with a sample demo game that highlight some of the engine capabilities and how to use the event model to do some neat tricks (like breakable bridges, animated lava, or squares that change colors when you step on them etc.). You can find more sprites and sounds here: https://sourceforge.net/projects/lgck/files/Resources/ Please note that many of the sprites you can find on the web come in the form of sprite sheets. LGCK builder can import most of them with minimal intervention. Go to File, Import, Import Images. Click the + button to add a new png file. Once the sprite sheet is in the box, right click on it and select Split image from the context menu. You'll be given the choice of picking the right tile size (16x16, 24x24, 32x32 etc.). If you need to edit this image set further, LGCK builder IDE comes with it's own Sprite Editor. You can download LGCK builder from freewarefiles: https://www.freewarefiles.com/Lgck-Builder-Game-Construction-Kit-_program_112323.html You can find more information at the official site: https://cfrankb.com/lgck View full story
  16. Mobile phones are now a collective entity and have made life very easy. Even a decade back you could not imagine doing all the things that your mobile phone can do today. The amazing thing is that it does not just stop there. There is so much more that is still in process, and there is no stopping this innovation. The Role Of Mobile Applications in The Mobile Industry A significant reason for all of this innovation is the competition in the market. The rivalry among competitors makes them go to great lengths to bring out better and better ideas and one of the ways that they do. This is through Mobile applications, which may be already installed/built into your phone or you may have to install them. Every year billions of mobile apps are downloaded from play stores, and statistics suggest that this trend will continue to get stronger and stronger. This means that the demand for people who can handle the app development process is, and will continue to be, on the rise. We call these people Mobile Application Developers. Tricks for Mobile Application Developers If you are one of these mobile application developers, you would know that no matter how daunting the app development process looks, the necessary steps stay the same. Still, to help you get more out of your Mobile App Development, here are some tricks: 1. Market Research: Although the idea of research might seem intimidating to most developers, it is the most critical part of your process. Without market research, even if you do develop an app, its success will not be guaranteed. Moreover, the reason for market research is not just to identify the needs of the market, but also the trends in it. So, the entire purpose of market research is not to sell the product, but also to identify how to go about making it. 2. Programming Languages: The most basic, yet pivotal decision that you will take when developing a Mobile Application is the choice of programming language. Now, every language has its specific syntax and commands, so you have to make sure that you are well versed in the language you pick. Some of the most common languages used for mobile app development are Swift, C++, C#, Java and HTML 5. 3. Testing Frequently: This one trick might seem very unnecessary, but there are a lot of benefits that you can gain from testing your app frequently. You can catch bugs early in the development process, so later you do not have to alter the entire code. Moreover, testing often leads to new ideas, and if the notion strikes you before the app is entirely developed, it will be much more comfortable to implement it. 4. Do not Forget the Target Audience: Keeping the app as relevant as possible to the target audience is a sure ingredient for success. You must always have the target audience at the back of your mind while developing the app. 5. Marketing: You will also need to invest time in devising a marketing a strategy to sell your app once it is made. It is necessary that you acquaint yourself with marketing strategies if you want to get the most out of your mobile development.
  17. BenchmarkNet is a console application for testing the reliable UDP networking solutions. Features: Asynchronous simulation of a large number of clients Stable under high loads Simple and flexible simulation setup Detailed session information Multi-process instances Supported networking libraries: ENet UNet LiteNetLib Lidgren MiniUDP Hazel Photon Neutrino DarkRift More information and source code on GitHub. You can find the latest benchmark results on the wiki page.
  18. Hello all, I was not sure where to place this so I decided to place this in the general forum. Please note, that I have not developed anything at this time. I am currently doing some research and scouting. I have been considering to develop a game controller. I was thinking that it would be nice if the controller registered as a Xbox 360 controller when connected to a windows PC. I could go out and get an actual 360 controller but I am redesigning the case and the electronics. So, I was thinking about utilizing the XUSB protocol. After doing some research, it appears that I am not able to find information regarding this protocol. I am starting to have concerns that the XUSB is proprietary to Microsoft. Is this the case? Are approved Microsoft accessories only allowed to use the XUSB? If so, then how do I become "approved" so that I can develop XUSB controllers? If this is not the case, then where would I be able to find documentation on XUSB communications?Or would i be able to use a USB Sniffer and basically reverse engineer the communications protocol between the controller and the PC? Note: Yes, I am aware that windows supports the DirectInput method. This is my fall back in the event that I can't get the XUSB protocol to move forward. Thank you
  19. Effekseer Project develops "Effekseer," which is visual software for creating open source games; on September 13, I released "Effekseer 1.4," which is the latest major version release. Effekseer is a tool to create various visual effects used in games and others. With Effekseer, you can easily create various visual effects such as explosion, light emission, and particle simply by specifying different parameters. Effekseer's effect creation tool works on Windows and macOS. The created visual effects can be viewed on Windows, macOS, Linux, iOS, Android and other environments with DirectX, OpenGL and so on. In addition, there are plugins / libraries for game engines such as Unity and UnrealEngine4 to view visual effects. Effekseer 1.4 is an updated version of Effekseer 1.3 released in November 2017. This update contains the following changes: The renewal of UI. Support the tool for macOS. Addition of a function to read FBX with animation. Addition of parameters to protect collied effects and objects. Addition of parameters for easier control of the effects. In addtion I improve plugins/libraries for Unity, UnrealEngine4 and Cocos2d-x. Besides that, more than 40 new sample effects have been added and many bugs have been fixed. Effekseer 1.4 is available on the project website. The license for the software is the MIT license. Effekseer http://effekseer.github.io/ Github https://github.com/effekseer/Effekseer  Sample Effects. Tool Demo
  20. Effekseer Project develops "Effekseer," which is visual software for creating open source games; on September 13, I released "Effekseer 1.4," which is the latest major version release. Effekseer is a tool to create various visual effects used in games and others. With Effekseer, you can easily create various visual effects such as explosion, light emission, and particle simply by specifying different parameters. Effekseer's effect creation tool works on Windows and macOS. The created visual effects can be viewed on Windows, macOS, Linux, iOS, Android and other environments with DirectX, OpenGL and so on. In addition, there are plugins / libraries for game engines such as Unity and UnrealEngine4 to view visual effects. Effekseer 1.4 is an updated version of Effekseer 1.3 released in November 2017. This update contains the following changes: The renewal of UI. Support the tool for macOS. Addition of a function to read FBX with animation. Addition of parameters to protect collied effects and objects. Addition of parameters for easier control of the effects. In addtion I improve plugins/libraries for Unity, UnrealEngine4 and Cocos2d-x. Besides that, more than 40 new sample effects have been added and many bugs have been fixed. Effekseer 1.4 is available on the project website. The license for the software is the MIT license. Effekseer http://effekseer.github.io/ Github https://github.com/effekseer/Effekseer  Sample Effects. Tool Demo View full story
  21. I am just looking to play around, and I would like to work on an android game in the same spirit as the old school Bard's Tale... the 8 bit 3d first person game from the 80's, not the recent top down 3d iso view remake. What I am looking for is a starting point so I am not trying to reinvent the wheel. Ideally, the map would be X by Y with each space being a wall, door, etc, and the player moves through the "dungeon" or "town" step by step (not free moving, like Doom or Wolfenstein). The "wall" or whatever would be a flat image that gets painted onto that area, I would need different "wall" tiles for things like a true wall, door, or shop fronts for city elements. I have seen a few which are free moving, that I could probably adjust to "step by step" movement. The thing that seems to be missing is different floor tiles, and (optionally) ceiling tiles, which could also be "open sky" if you are in city mode... I am more interested in the actual gameplay, the combat and such, so I was hoping to find a project that started off along these lines where I can adapt the code to what i am looking for without having to make a complete 3d type engine, and I don't want to use one of the current 3d packages because they are a little overkill for what I am trying to do... any pointers on this would be nice, as far as open source projects that are out there, or (as a last case) a good book I can look at talking about the development of such with some examples. I am pretty well versed in code (over 30 years) just never done THIS type. I know some of the theory, just not enough to do it on my own... so... any help? Buhler?
  22. So, I developed an engine a while back following ThinMatrix's tutorials and it worked perfectly. However, upon trying to create my own simple lightweight game engine from scratch, I hit a snag. I created an engine that only wants to render my specified background color, and nothing else. I first tried to render just one cube, and when that failed I figured that i probably just had the incorrect coordinates set, so I went and generated a hundred random cubes... Nothing. Not even a framerate drop. So I figure that they aren't being passed through the shaders, however the shaders are functioning as I'm getting no errors (to my knowledge, I can't be sure). The engine itself is going to be open source and free anyways, so I don't mind posting the source here. Coded in Java, using OpenGL (from LWJGL), and in Eclipse (Neon) format. Warning: When first running the engine, it will spit out an error saying it couldn't find a config file, this will then generate a new folder in your %appdata% directory labeled 'Fusion Engine' with a Core.cfg file. This file can be opened in any old text editor, so if you aren't comfortable with that just change it in the source at: "src/utility/ConfigManager.java" before running. Just ask if you need more info, please I've been trying to fix this for a month now. Fusion Engine V2.zip
  23. JSCF is an open source, lightweight 2D canvas library based on vanilla JS and CanvasInput. Its approach is to allow extendibility while adhering to concepts from popular engines like Unity. It's still in prototype and is looking to get help and feedback from programmers. Check it out at https://github.com/g--o/JSCF. Update: now added API docs! (working with jsdoc)
  24. Hi, I'm currently working on a lightweight 2D canvas library called JSCF. It's got a lot of cool features but is still in prototype and I'd be glad to have more hands on this project + getting some feedback from programmers like you. This is an open-source project so no rev involved at all, but I think anyone knowledgable or interested in getting involved with a cool native JS 2D engine is welcome. For full feature list, contribution, prototype build and more please visit the github repo here: https://github.com/g--o/JSCF Thanks for reading 😃
  25. JSCF is an open source, lightweight 2D canvas library based on vanilla JS and CanvasInput. Its approach is to allow extendibility while adhering to concepts from popular engines like Unity. It's still in prototype and is looking to get help and feedback from programmers. Check it out at https://github.com/g--o/JSCF. Update: now added API docs! (working with jsdoc) View full story
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!