Programming tasks

From FreeGameDevWiki
Jump to: navigation, search

Content tool tasks

The goal of this section is to collect bugs and gaps in the Linux game development tool chain and describe possible workarounds or describe them detailed enough that people can start fixing them. The hope is to provide a bite-size tasks that people can be working on when they have nothing else to do. The list is not meant to replace the bug tracker of specific applications, but instead to provide a "best of" list of bugs that cause issues in game development. At the moment its a bit of a disorganized mess, more reorganisation will follow.

  • Make a proper Free 8bit COLORMAP lookuptable creation tool - leilei

Write/find some generic 2D map editors

There are some freeware generic 2d tilemap editors floating aronud out there, maybe good idea to have some Free Software one out there. There is Flexlay, but its a bit ugly and could need a rewrite with proper Gtk/Qt.

Following links are taken from [1] and [2]:

  • Dungeon Mapper is yet another tile map editor using Qt.
  • Mokoi Gaming 0.4 was released. It now supports OSX and contains a Tetris variant [changelog].
  • Development on Opensource Game Studio has started. Features: 3D, Qt, Lua. It contains a small glxgears-like demo video. Nothing to see here yet.
  • Tiled is "a generic 2D tilemap editor" which has been ported from Java to Qt. There are frequent updates at the moment, but it is already a powerful tool.

Write tools for OpenGL performance analysis and debugging

  • gDEBugger performance analysis/debugging; Linux, MacOS, Windows; closed source
  • glintercept debugging; Windows; GPL
  • GLSL Devil debugging, Linux, Windows; ???
  • BuGLe debugger; Linux, Windows; GPL

Write a tool/script to analyse images

One problem that pops often up with 2D games are transparent areas that have a few stray pixels left in areas that should be transparent, another problem is that sometimes a black area isn't really all black, but parts of it are a little grey without the developer noticing, on monitors with different gamma setting on the other side these issues might be very visible.

A tool for reviewing images that could catch those common issues might be useful.

Write a diff-like tool for images

Write a phoneme extraction tool for lipsyncing

Narrow and Sparse clone support for Git

Git is currently well suited for source code, but fails for large media project, such as games, since the lack of narrow and sparse cloning forces you to download the whole repository, instead of just the parts you are interested in, meaning the size of a download can easily increase by an order of magnitude:

Write a TTF Font to Bitmap converter

Maybe add GUI with preview around this one or improve that one:

Write Tool for Texture Atlas generation

Write a tool that takes a set of .png files and packs them into power-of-two textures.

GtkRadiant

As far as I can tell GtkRadiant isn't available in Ubuntu/Debian, might be a good idea to fix that. Also it seems to be a little complicated to get it up and running with other games:

Overall it would be good to promote/fix those 3D level editing tools that are around in Linux, which are not many after all.

Gimp

Toolbar - Bug #133030 - Done, but rejected by Gimp developers

The Gimp image window really needs a (optional) classic toolbar, like you find them in pretty much every other application. The current work-in-progress looks like this.

The toolbar should be configurable and allow you to access all functions that are available via the normal menu. Something looking like the KDE toolbar configuration diaog should be used for configuration. Another possibility would be Epiphany, which is gtk and has a configurable toolbar, very similar to Firefox, the flat list would need to be replaced, the rest might be usable. Another alternative is to only provide multiple predefined toolbars, but with no configurability for now, similar to what Anjuta or Monodevelop do.

Palette Editor - Bug #163044

  • gimp/app/widgets/gimppaletteeditor.c
  • gimp/app/widgets/gimppaletteeditor.h

Gimps palette editor is currently rather limited, since it only allows you to copy colors to a palette, but not move them or any other more advanced features. So the following features could be added:

  • support for selecting multiple colors
  • support for moving a color(s)
  • a function to interpolate between two selected colors
  • support for sorting the selected colors (by brightness, hue, saturation, etc.)
  • a toggle to hide the palettename, colorname and columns field (there already is one for the button bar)
  • maybe a way to add padding/seperators between colors for better organisation
  • maybe an alternative list view, that displays colors next to their names instead of as a 2D array
  • maybe support for Photoshop/Corel/etc palette import
  • maybe other stuff, I am not to familar with what more advanced palette editors can do

XCF Templates - Bug #168541

Templates are currently limited to simple image size and image type while they should support everything that a .xcf file can handle (multiple layers, guides, etc.). Workaround is to simply use real .xcf files instead of the templates, but better template support would be prefered.

GtkComboBox Bug

The bug looks like this, i.e. only one item is visible and all the rest are outside of the window and you have to scroll to reach them. Strictly speaking it is not a bug, since the reason the opened GtkComboBox looks like this is because Gtk tries to center the window on the current item and when the window happens to be placed at the bottom of the screen scrolling is the unavoidable result. However in a lot of cases having the window centered over the current item is not a desirable feature and it is much more important to have quick access to all the items, after all one clicks the box to change the item, not to let it stay the same. I consider this issue incredible annoying and it not only happens in Gimp, but in pretty much every other Gtk app too. The issue is made worse because the default item is often the very first one in the list, meaning it will be the only one visible.

Blender

XCF Support

Native XCF support in Blender would allow direct use of Gimp's XCF files without a annoying intermediate conversion step.

Headless Batch Evaluation of scripts

  • would be useful to automatically convert a .blend file into something game specific. Workaround: Do the batch inside the blender script.

Separate Animation from Models

Following scenario:

  • a .blend file is giving containing a model and a armature
  • multiple developers now want to animate the armature at the same time without running into conflicts

This might be solvable via linking in library files, not sure, a proper documentation on how to collaborate on character animation for a game could be useful.

A tool that lists information about a .blend file

  • number of meshes in the file
  • number of vertices of a mesh
  • list of mesh names
  • etc.

A diff-like tool to compare two .blend files

Offline Particle Effect generation

Standard audio & 3D model formats

A format to share audio between programs, like the .aaf format

A standard 3D model format that works well for games, without being tied to an specific modeller

Thats what Collada does and Blender supports it (not used it in practice, so no idea how complete/buggy/whatever the support is) -- Grumbel 05:48, 2 May 2009 (CEST)

Game tasks

This section shall function a similar purpose Happypenguin GotM, meaning it shall provide a list of bite-sized coding or graphics tasks that are needed in a game to make substantial progress. It is meant to bring attention to games that could benefit from it and provide people looking for some coding work with some projects where there talent could be needed. At the moment there are no tight rules, so feel free to get creative at least for now, sorting and filtering might be applied later when the list has grown larger.

Transplant-IT

  • This project aims at producing a realistic medical simulation game. I am looking for someone who could mentor me while setting up the game and do the programming. My current idea is to use Java. More info on the project is at the Transplant-IT website. --Ericsp 09:38, 24 April 2009 (CEST)

IVAN

  • This game has long been abondoned by the original authors and as such no longer compiles without errors on a modern Linux system. It shouldn't be a large task to make it cleanly compile and should hopefully only take a few days to complete at the most. http://happypenguin.org/show?Iter%20Vehemens%20Ad%20Necem is the Happy penguin Entry and www.attnam.com is the new home (unofficial) home of IVAN.

--Danmal 12:57, 24 April 2009 (CEST)

Scourge

  • Scourge is a 3D RPG in the style of Diablo/Ultima. Development has been steady for several years, but they lack the expertise to implement a new character model format. A 3D graphics programmer familiar with model formats and animations would be able to fill this large whole in the project. See http://www.scourgeweb.org or http://scourge.wikia.com for contact details.

Pingus - Contact: Grumbel

Pingus contains some ~100 "unofficial" levels that are, by design, not reachable via GUI, as they haven't been playtested. The levels can be found in data/levels/{playable,wip,incoming}. There also exist an unofficial pack of these levels with some fixes, but again, it hasn't been playtested and thus not merged into the official tree. The job is now to:

  • playtest all unofficial levels
  • merge the unofficial pack into the main tree
  • fix the levels when needed
  • group the levels and build levelsets (data/levelsets/) out of them
  • (optional) record gameplay demos of the solutions (requires 32bit Linux, won't work with 64bit Linux, as demos are incompatible between the two)

No special knowledge is required for the testing, just some familiarity with the game, going through all levels should be doable in a few days. Fixing the levels requires some knowledge of the editor, but its build into the game and not hard to use, so that shouldn't pose much of a problem.

Wine

Wine gives you the ability to play counterless games on Linux, both free and non-free, however getting Wine properly configured and the games properly patched can be a real hassle. It would be nice if there would be a "one-click" way to install things via Wine, i.e. insert cd, click "install Wine game" and have an app to the patch downloading and Wine configuration automatically. (There might already be software for this floating around, haven't looked, if so it should be intergrated into mainstream distros and polished).

Solution

PlayOnLinux provides single-click installations of Windows software in Wine and works for most part exactly as expected, some notable missing/wanted features:

  • lack of copy protection circumvention due to legal problems (any free country around where those could be hosted?)
  • list of supported games could be larger
  • demos versions are not listed
  • there is no visible distinction/sorting mechanism between software that needs a CD to be installed and software that is a free download

Another piece of software is Wine Doors, which seems to serve much the same purpose. A comparism and list of differences between both would be useful.

Game tools

The goal of this section is to collect common problems, bugs and issues that pop up in game development, focus of this pages in on libraries used in game development as well as the surrounding system. Not everything on here is a bug, some things are just common problems without a clear solution, in the case common workarounds should be documented, maybe factored out into a library.

  • Embedding SDL in Gtk

Improve the Kernel Joystick Interface

  • the joydev interface provides functions to remap axis and buttons, but no way to reset the mapping to the default
  • the joydev interface provides default calibration and ways to change it, but again no way to reset it
  • there is no clean way to go from the joydev interface to the evdev interface, as needed for force feedback
  • there is no way to reorder the joysticks or define priorities, joystick numbers are asigned in the order they are plugged in

Make indie developers happy

Multiple Mouse Support

Fullscreen Support in Xorg

Fullscreen support in Xorg is currently quite problematic, as it behaves quite different depending on the application:

  • Wine: keyboard events are continued to be reported to the window manager and the user is free to change desktops, change volume, etc.
  • SDL: fullscreen locks the keyboard, the user can't leave the fullscreen other then by game provided keyboard shortcuts (which differ from app to app), volume control via keyboard does not work
  • fullscreen mode also suffers from incompatible resolutions, the 960x720 that is used by ScummVM with a 3x scaler for example doesn't display properly on some monitors, there might be workarounds by hacking Modelines, but its not easy or obvious how to accomplish or even test that properly

Wishlist:

  • a standard keyboard shortcut to enter and leave fullscreen (F11, Alt-Enter, ...)
  • an extra icon on the Window border next to maximize/minimize that indicates that an application supports fullscreen and that allows entering fullscreen mode

InputDrv - Virtual Input Device Creation - Contact: Grumbel

Linux allows, via uinput, the creation of virtual userspace input devices. The idea behind InputDrv is to use uinput to create a framework that allows users to remap their input devices in extremely flexible ways such as:

  • emulate the keyboard via a joystick
  • emulate the mouse via a joystick
  • remap buttons
  • map autofire to a button
  • swap axis or buttons around
  • use button combinations to trigger events
  • emulate throttle control via a normal joystick
  • apply filters to remove noise in data
  • emulate analog axis via a digital one
  • ...

The goal here isn't so much to create an easy-to-use tool such as joy2key, but instead to create a framework that solves almost all needs. More limited easy to use tools could then be build on top of it. InputDrv already has code, currently found in the xboxdrv SVN tree, see the links below for more information:

GUI Joystick Tester

jstest is a simple and useful command line utility to test the joystick device, it would be good if there would be an GUI alternative. Something similar to what Windows provides would be enough.

  • the application should support both /dev/input/jsX and /dev/input/eventX
  • when /dev/input/eventX is used, the button names should be used, instead of numbers
  • min/max values of axis should be disabled, instead of just bars
  • calibration for the joystick device might be useful as well
  • force feedback should be supported
  • LEDs should be supported on evdev devices (SpaceNavigator)
  • HAL for automatic updates when hotplugin joysticks

Solution? Jscalibrator comes with most distributions. Screenshot What else is required?

A proper Gtk2 interface along with maybe some Gnome/KDE integration, hal support, evdev support, no main focus on calibration, etc. Additional support for SDL would be nice as well, as SDL has its own way to mangle buttons/hat/axis. jscalibrator is really quite broken and ugly. And in there is of course the larger scope of proper joystick configuration, i.e. you want a way to swap buttons and axis, define which joystick is number one and such. -- Grumbel 23:01, 26 April 2009 (CEST)
Started coding, code is available at: http://github.com/Grumbel/jstest-gtk/tree/master

First pre release:

Workflows for Blender->Game Engine

In particular, it's hard to find good workflows for exporting animations from blender into most game engines.

Matrix/Vector library

Most 3D toolkits come with their own matrix/vector libraries, but games without them most often roll their own. Might be good to have a recommend "standard" library, to avoid code duplication.

Website index of games

There should be way to view and compare open source games. Some ideas on how to do this have been written down in Free Games List

Graphics

A collection of generic game related graphics tasks.

Controller Icons

Create icons for buttons and sticks on the controller for use in in-game tutorial dialogs. Release them under a free license, best would be public domain. Images should be for different types of controller:

  • Playstation Controller
  • Xbox360 Controller
  • Xbox Controller
  • Wii Remote
  • PC gamepad where the buttons are numbered, without labels or color
  • mouse
  • keyboard keys

Solutions

Animation References

Collect or create reference footage for use in animation: