Open main menu

Difference between revisions of "OpenTasks"

115 bytes added ,  18:40, 29 May 2016
Remove custom table properties
(Remove custom table properties)
 
(242 intermediate revisions by 24 users not shown)
Line 1: Line 1:
This page contains a list of open tasks. Completing any of them would benefit the ScummVM project a lot. At least in theory, all of them should be doable even by somebody relatively new to the project -- in particular, as part of the Google [[Summer of Code]]. Besides the tasks listed here, there is of course also the [[TODO]] page listing more things that need to be done (but with far less details).
'''See [[GSoC Ideas]] if you're looking for Google Summer of Code ideas for 2014.'''


TODO: All of these need to be explained with more detail, in proper english sentences!
'''See [[ClosedTasks|Closed Tasks]] for a list of tasks proposed the previous years'''


== Improved plugins code ==
ScummVM contains by now over a dozen different engines for different adventure game systems. Each of these engines forms a "plugin", and it is possible to compile these plugins as loadable modules separate from the core of ScummVM itself. This makes it possible to (un)load engine code at will, ideal for systems with tight memory constraints: If you want to play a game, you only need to load the engine for that specific game, and can unload the others.


We always compile the engines as "plugins", but by default, they are compiled as so-called "static" plugins -- these are not real plugins, but rather the engine gets compiled into the application (i.e. "static linked", hence the name), but is still treated by the rest of the application as a plugin (only that it is not dynamically loaded). Support for true "dynamic" plugin is only available on a subset of all plugins -- essentially most POSIX systems (including Linux, *BSD, Mac OS X) and the Dreamcast.
<!-- This page contains a list of substantial open tasks from throughout the project. Completing any of them would be of great benefit to the ScummVM project.  


There are various ways in which this plugin code could be improved:
In theory, all of these tasks should be doable even by somebody relatively new to the project, in particular, as part of a Google [[Summer of Code]] project.  
* Add support for real "dynamic" plugins on Windows. This is currently not possible, because the ScummVM plugins rely on "backlinking" from the loaded modules to the core binary. This is not supported on Windows. There are various ways to solve this issue (use Google for more info). This is further complicated by the fact that while the interface of the *plugins* is well-defined (although not quite as well documented -- see base/plugins.h), the converse is not true -- plugins can call virtually arbitrary code within the core of ScummVM
* Add support for "dynamic" plugins on more systems which might benefit from them.
* Improve the way we search for plugins. Right now we only look in the current directory. Should this be made configurable? On Unix, maybe /use/share/scummvm should be searched, too? On Mac OS X, the CoreFoundation bundle API should be used to search for plugins inside the ScummVM.app bundle (which would also required the build system to be enhanced to properly bundle all plugins). Etc.


== Mixer improvements ==
It should be noted however that while we suggest that potential GSoC students looks at these tasks they are in no way exclusive to GSoC. Anyone is very welcome to work on any task (or any aspect of it).
* High quality resampling
* reduced latency (e.g. by using double buffering) to avoid stutter issues


== MIDI enhancements ==
Besides the tasks collected here, there are of course also the [[TODO]] pages listing more things that need to be done (but with far less details).
* make MIDI devices configurable via GUI (requires OSystem & GUI 
changes).  
- full-blown XMIDI parser. I heard that Exult has more advanced
parser than we do


== Small devices backend  ==
__TOC__
we already have some (vague) info on this 
in the Wiki, and it certainly would be a very useful project :-)


== Revise FilesystemNode system ==
== Introduction ==
* Revise / improve the whole FilesystemNode system -- possibly by 
=== Some basic rules ===
taking inspiration from other projects with similar code (e.g. 
boost), but always keeping both high portability and the needs of our 
engines in mind


== GUI ==
Below follow some basic rules that anybody interested in one of these tasks should adhere to. Sometimes exceptions may be possible -- as always, common sense applies, and if in doubt, ask.
I am sure there are tons of things that could be done here,
e.g. portable (!) support for TrueType fonts, anti aliasing, etc.


More things should be configurable, say, shadows.
The projects below are sketches and ideas. Plus, things evolve over time, so the descriptions might be slightly outdated by the time you read them (although we strive to keep them up-to-date). Hence, you should talk with somebody from the team, probably the person(s) listed as Tech Contact, before starting work on any of them.
Antialiased fonts.


Also there is a big demand in adding possibility for a backend to
All code, unless stated differently, must be written in clean and portable C++, in particular, GCC must be able to compile it (portability exceptions can be made for platform specific code, of course). We also have some [[Code Formatting Conventions]]. Using the standard C++ lib for code used inside ScummVM is at this time not possible. Using it inside a non-essential tool should be fine, though.
define its own tab with options.


== Revive ScummEX (likely from scratch) ==
All of the code submitted must be contributed under the terms of the GPL v2+.
possibly with a broader 
scope, with support for our other engines, too


== Tools: Rewrite descumm ==
We only accept clean and maintainable code. This is a somewhat vague requirement, but as a rule of thumb, if the code does what it is supposed to do, but is not extensible, a quick hack, or we need to rewrite it from scratch to properly integrate it, we will not accept it. In particular, we would rather have a maintainable, clean and incomplete piece of code that we could extend than a complete but unmaintainable piece of code.
...to do proper recompilation (inspired by jode 
and other Java decompilers), so that it can properly decompile 
constructs like switch, do{}while() loops, etc. (I have lots of notes 
on this :)


== Tools: Overhaul the compression tools ==
=== Some good advice for [[Summer of Code]] Applications ===
to share more code / share it 
The PostgreSQL folks have some real good
better / to compress by using suitable compression libs instead of 
[http://www.postgresql.org/developer/summerofcodeadvice.html Advice to Students on Submitting GSoC Applications]. We recommend all students interested in applying with us (or any other GSoC project, for that matter) to read this.
calling external binaries (thus allowing more in-memory operations etc.)


== Tools: Write a portable GUI for the tools ==
==== Student application template ====
GUI for the various tools, making them easier to use.
The following was adapted from the FreeBSD [http://www.freebsd.org/projects/summerofcode.html Proposal Guidelines].
should support at least Linux, Windows, Mac OS X, ideall more. Maybe using wxWidgets, or Qt


== Residual ==
* '''Name'''
Any specific ideas?
* '''Email'''
* '''Project Title'''
* '''Possible Mentor''' (optional)
* '''Benefits to the ScummVM Community''' - A good project will not just be fun to work on, but also generally useful to others.
* '''Deliverables''' - It is very important to list quantifiable results here e.g.
** "Improve X modules in ways Y and Z."
** "Write 3 new man pages for the new interfaces."
** "Improve test coverage by writing X more unit/regression tests."
** "Improve performance in FOO by X%."
* '''Project Schedule''' - How long will the project take? When can you begin work?
* '''Availability''' - How many hours per week can you spend working on this? What other obligations do you have this summer?
* '''Skype ID''' - If you don't use Skype, install it.
* '''Phone Number''' - Cellular is preferable, for emergency contacts.
* '''Timezone''' - Where do you live.
* '''Bio''' - Who are you? What makes you the best person to work on this project?


== Port specific projects ==
== Your task ==
Porters, add your ideas here -- and soon!


== Objectify CinE engine. ==
=== Anything you can dream of ===
No deep engine knowledge is required, as the
''Technical Contact'': Our IRC channel, our mailing list, or contact [[User:Sev|Eugene Sandulenko]], [[User:DJWillis|John Willis]]
engine is pretty small and well-structured. I.e. basically it will mean
wrapping and rearranging some code


== TFMX player ==
''The Task:''
There is TFMX player written, but the code is bad.


== Add 16bit graphics support to SCUMM engine ==
Come up with your personal clever way to improve ScummVM and its various side projects. Be creative. Incorporate the ideas listed below and in our [[TODO]], but don't let yourself be limited by them. Come up with something totally new, or enhance existing features. It's up to you.
Requires good knowledge of
C++ as there should be found a solution which will not clobber our code,
will have minimal impact on 8bits games and should be optionally turned
off at compilation stage


== Add support for more Amiga MOD formats ==
But of course like with all the other tasks, we recommend that you first talk to us (see above).-->
Some of them have well written
m68k assembly sources. DrMcCoy (a student) recently took binary player
for Infogrames modules, learned m68k assembly, REd the binaries and
rewrote them in C++.


== Rewrite FMOPL emulator ==
== Current Open Tasks ==
This is tough task, as it should be
implemented by clean room RE. Though I think it is doable by a single
person if he/she will try to fix existing one with new behaviour.


== Implement "return to launcher" feature ==
Below is a table of some open tasks that people may wish to consider working on and links for more information.
Analyse memory leaks in
These tasks can be considered in addition or in conjunction with anything on our [[TODO]], any other task or your own 'Anything you can dream of' project.
engines and plug them.


== Add sound to C64 games ==
They are usually NOT kept up to date. Please contact us (ideally via IRC) before you even start thinking about one of these tasks. Again, see [[GSoC Ideas]] if you're looking for Google Summer of Code ideas for 2014.
Basically take some free SID implementation,
strip it down and plug into our code


== Many tasks with AGI engine ==
<!--The GSoC workload figure was used to indicate the percentage of GSoC project time we consider this task will take an average competent programmer. These are just rough guides and should you feel you can undertake a task well in less time (or take longer but deliver a much better or more feature rich result) please feel free to mention this on your application and select your tasks accordingly.-->
I.e. bunch of fanmade games do not work. This could be accomplished by
 
comparing our code with NAGI and DAGII. The engine is one of the
 
smallest and is easy to understand, not to mention that there is
<dpl>
extensive in-depth documentation on it.
category = Open Tasks
include = {Infobox_OpenTasks} Inforow
table = class="wikitable sortable" ,-, Task, (Outdated) Workload, Technical Contact(s), Subsystem
</dpl>
 
== Current TODO Lists ==
 
Below is a table of all the TODO lists currently on the wiki. These less detailed tasks can be considered in conjunction with anything from our larger open task list or your own 'Anything you can dream of' project.
 
A TODO list by its very nature if often made up of vague pointers or ''one line'' ideas. Please seek clarification if you are unsure of any [[TODO]].
 
 
<dpl>
category = TODO List
include = {Infobox_TODO} Inforow
table = class="wikitable sortable" ,-, Task, Technical Contact(s), Subsystem
</dpl>
TrustedUser
2,147

edits