https://wiki.freepascal.org/api.php?action=feedcontributions&user=%C3%91u%C3%B1o+Mart%C3%ADnez&feedformat=atomFree Pascal wiki - User contributions [en]2024-03-28T13:20:14ZUser contributionsMediaWiki 1.35.6https://wiki.freepascal.org/index.php?title=DOS&diff=144454DOS2021-04-14T10:20:26Z<p>Ñuño Martínez: </p>
<hr />
<div>{{LanguageBar}}<br />
{{Note|This page has outdated information. Somebody is updating the information but you can help.}}<br />
<br />
== Overview ==<br />
A DOS (8086) cross compiler is currently being developed in FPC trunk (the development version). It started as a hobby project meant to explore how to port FPC to a new platform.<br />
<br />
The number of (FPC on) DOS users is probably quite low, especially since there is an FPC compiler for the more capable [[GO32V2]] DOS extender available which runs on 80386+ processors.<br />
<br />
=== Advantages over FPC for GO32V2 ===<br />
<br />
* Generated code can run on 16-bit processors. Since these processors are obsolete and out of production, this is mostly useful for [http://en.wikipedia.org/wiki/Retrocomputing retrocomputing] purposes. Note also that the 80186 is still in use in embedded devices: [http://www.cpushack.com/2013/01/12/the-intel-80186-gets-turbocharged-vautomation-turbo186/]<br />
* It's possible to write [http://en.wikipedia.org/wiki/Terminate_and_Stay_Resident TSRs].<br />
* It's possible to write DOS .SYS device drivers. (Not ready yet, but should be easy to implement)<br />
* It allows writing a bootloader in Pascal.<br />
* It allows writing 16-bit BIOS code in Pascal (e.g. you can now do a project like [http://www.seabios.org SeaBIOS] but in Pascal).<br />
* It can compile Turbo Pascal 7 code with less changes needed, compared to GO32V2 (no need to port the inline assembly code, for example).<br />
* Real mode DOS programs are less sensitive to bugs in virtual DOS environments, since they're immune to DPMI bugs and in fact require no DPMI at all. (Provided that your program fits within the memory constraints, of course.)<br />
* Compiled binaries are smaller and you don't have to ship CWSDPMI.EXE in order for your program to work under real DOS.<br />
<br />
=== Advantages over Turbo Pascal ===<br />
<br />
* Compiler is Free/Open Source software and is in active development.<br />
* Supports long file names.<br />
* Not affected (just like FPC for GO32v2) by the infamous CRT unit bug, that causes runtime error 200 on startup when the program is run on a fast CPU.<br />
* Multiple memory models are supported.<br />
* Supports huge pointers.<br />
* Heap manager supports allocating blocks larger than 64 KB (only in the memory models with far data, such as compact, large or huge).<br />
* All the extra Object Pascal features supported by FPC should work. This includes ansistrings, classes, interfaces, exceptions, generics, etc.<br />
* Crosscompilation is doable without running the development system in a dosbox/VM (compile/build on Windows 64-bit, only need 16-bit capable OS for running)<br />
<br />
=== Limitations ===<br />
The DOS platforms brings some limitations, like<br />
* data structures cannot be larger than 64KB<br />
* no simple way of pre-emptive multitasking.<br />
* it is unlikely the Lazarus LCL GUI will be ported to the DOS environment<br />
** However, an [http://en.wikipedia.org/wiki/OpenGEM OpenGEM] widget set is possible<br />
** Since the large memory model of the i8086 code generator have matured, [[Win16]] support has also been started in FPC trunk<br />
<br />
== Requirements ==<br />
<br />
=== FPC 3.0.x ===<br />
<br />
The compiler is a cross compiler that runs at least on Windows (both x86 and x64), Linux, and macOS.<br />
For compiling programs, it needs:<br />
<br />
* the Open Watcom linker - WLINK<br />
* the Open Watcom library manager - WLIB<br />
* the Netwide Assembler - [http://www.nasm.us/ NASM]<br />
<br />
In theory it should be able to run on any platform, supported by FPC, where NASM and the Open Watcom tools are available. This includes DOS via the GO32V2 extender. However, because the Watcom tools for DOS are compiled with a different extender, there are some issues related to long file names and the passing of long command line arguments. This is resolved in FPC trunk, where there's an internal assembler and linker implemented in the compiler itself.<br />
<br />
=== FPC trunk ===<br />
FPC trunk contains an internal assembler and linker for DOS, so the Open Watcom tools are no longer required. NASM is still required for building an i8086-msdos snapshot, because of the msdos startup code in the rtl.<br />
<br />
== Releases ==<br />
<br />
=== 3.0.4 ===<br />
<br />
The crosscompiler packages for Windows, Linux - i386 and Linux - x86_64 are also available at the official Free Pascal website: http://freepascal.org/download.var<br />
<br />
* Crosscompiler package for Windows:<br />
** ftp://ftp.freepascal.org/pub/fpc/dist/3.0.4/i386-win32/fpc-3.0.4.i386-win32.cross.i8086-msdos.exe<br />
* Crosscompiler package for Linux - i386<br />
** .tar.xz: ftp://ftp.freepascal.org/pub/fpc/dist/3.0.4/i386-linux/fpc-3.0.4.i386-linux.cross.i8086-msdos.tar.xz<br />
** RPM: ftp://ftp.freepascal.org/pub/fpc/dist/3.0.4/i386-linux/fpc-i8086-msdos-3.0.4-1.i686.rpm<br />
** SRPM: ftp://ftp.freepascal.org/pub/fpc/dist/3.0.4/i386-linux/fpc-i8086-msdos-3.0.4-1.src.rpm<br />
* Crosscompiler package for Linux - x86_64<br />
** .tar.xz: ftp://ftp.freepascal.org/pub/fpc/dist/3.0.4/x86_64-linux/fpc-3.0.4.x86_64-linux.cross.i8086-msdos.tar.xz<br />
** RPM: ftp://ftp.freepascal.org/pub/fpc/dist/3.0.4/x86_64-linux/fpc-i8086-msdos-3.0.4-1.x86_64.rpm<br />
** SRPM: ftp://ftp.freepascal.org/pub/fpc/dist/3.0.4/x86_64-linux/fpc-i8086-msdos-3.0.4-1.src.rpm<br />
<br />
=== 3.0.2 ===<br />
<br />
* Crosscompiler package for Windows:<br />
** ftp://ftp.freepascal.org/pub/fpc/dist/3.0.2/i386-win32/fpc-3.0.2.i386-win32.cross.i8086-msdos.exe<br />
* Crosscompiler package for Linux - i386<br />
** .tar.xz: ftp://ftp.freepascal.org/pub/fpc/dist/3.0.2/i386-linux/fpc-3.0.2.i386-linux.cross.i8086-msdos.tar.xz<br />
** RPM: ftp://ftp.freepascal.org/pub/fpc/dist/3.0.2/i386-linux/fpc-i8086-msdos-3.0.2-1.i686.rpm<br />
** SRPM: ftp://ftp.freepascal.org/pub/fpc/dist/3.0.2/i386-linux/fpc-i8086-msdos-3.0.2-1.src.rpm<br />
* Crosscompiler package for Linux - x86_64<br />
** .tar.xz: ftp://ftp.freepascal.org/pub/fpc/dist/3.0.2/x86_64-linux/fpc-3.0.2.x86_64-linux.cross.i8086-msdos.tar.xz<br />
** RPM: ftp://ftp.freepascal.org/pub/fpc/dist/3.0.2/x86_64-linux/fpc-i8086-msdos-3.0.2-1.x86_64.rpm<br />
** SRPM: ftp://ftp.freepascal.org/pub/fpc/dist/3.0.2/x86_64-linux/fpc-i8086-msdos-3.0.2-1.src.rpm<br />
<br />
=== 3.0.0 ===<br />
<br />
* Crosscompiler package for Windows:<br />
** ftp://ftp.freepascal.org/pub/fpc/dist/3.0.0/i8086-msdos/fpc-3.0.0.i386-win32.cross.i8086-msdos.exe<br />
* Crosscompiler package for Linux - i386<br />
** .tar.xz: ftp://ftp.freepascal.org/pub/fpc/dist/3.0.0/i386-linux/fpc-3.0.0.i386-linux.cross.i8086-msdos.tar.xz<br />
** RPM: ftp://ftp.freepascal.org/pub/fpc/dist/3.0.0/i386-linux/rpm/fpc-i8086-msdos-3.0.0-1.i686.rpm<br />
** SRPM: ftp://ftp.freepascal.org/pub/fpc/dist/3.0.0/i386-linux/rpm/fpc-i8086-msdos-3.0.0-1.src.rpm<br />
* Crosscompiler package for Linux - x86_64<br />
** .tar.xz: ftp://ftp.freepascal.org/pub/fpc/dist/3.0.0/x86_64-linux/fpc-3.0.0.x86_64-linux.cross.i8086-msdos.tar.xz<br />
** RPM: ftp://ftp.freepascal.org/pub/fpc/dist/3.0.0/x86_64-linux/rpm/fpc-i8086-msdos-3.0.0-1.x86_64.rpm<br />
** SRPM: ftp://ftp.freepascal.org/pub/fpc/dist/3.0.0/x86_64-linux/rpm/fpc-i8086-msdos-3.0.0-1.src.rpm<br />
<br />
=== 3.0.0rc2 ===<br />
<br />
* Crosscompiler package for Windows:<br />
** ftp://ftp.freepascal.org/pub/fpc/beta/3.0.0-rc2/i386-win32/fpc-3.0.0rc2.i386-win32.cross.i8086-msdos.exe<br />
* Crosscompiler package for Linux - i386<br />
** .tar.xz: ftp://ftp.freepascal.org/pub/fpc/beta/3.0.0-rc2/i386-linux/fpc-3.0.0rc2.i386-linux.cross.i8086-msdos.tar.xz<br />
** RPM: ftp://ftp.freepascal.org/pub/fpc/beta/3.0.0-rc2/i386-linux/rpm/fpc-i8086-msdos-3.0.0-0.rc2.i686.rpm<br />
* Crosscompiler package for Linux - x86_64<br />
** .tar.xz: ftp://ftp.freepascal.org/pub/fpc/beta/3.0.0-rc2/x86_64-linux/fpc-3.0.0rc2.x86_64-linux.cross.i8086-msdos.tar.xz<br />
** RPM: ftp://ftp.freepascal.org/pub/fpc/beta/3.0.0-rc2/x86_64-linux/rpm/fpc-i8086-msdos-3.0.0-0.rc2.x86_64.rpm<br />
<br />
=== 3.0.0rc1 ===<br />
<br />
* Crosscompiler package for Windows:<br />
** ftp://ftp.freepascal.org/pub/fpc/beta/3.0.0-rc1/i386-win32/fpc-3.0.0rc1.i8086-msdos.exe<br />
* Crosscompiler package for Linux - i386<br />
** .tar.xz: ftp://ftp.freepascal.org/pub/fpc/beta/3.0.0-rc1/i386-linux/i8086-msdos-fpc-3.0.0rc1.i386-linux.tar.xz<br />
** RPM: ftp://ftp.freepascal.org/pub/fpc/beta/3.0.0-rc1/i386-linux/rpm/fpc-i8086-msdos-3.0.0-0.rc1.i686.rpm<br />
* Crosscompiler package for Linux - x86_64<br />
** .tar.xz: ftp://ftp.freepascal.org/pub/fpc/beta/3.0.0-rc1/x86_64-linux/i8086-msdos-fpc-3.0.0rc1.x86_64-linux.tar.xz<br />
** RPM: ftp://ftp.freepascal.org/pub/fpc/beta/3.0.0-rc1/x86_64-linux/rpm/fpc-i8086-msdos-3.0.0-0.rc1.x86_64.rpm<br />
<br />
== Snapshots ==<br />
<br />
There are daily snapshots available here:<br />
<br />
ftp://ftp.freepascal.org/pub/fpc/snapshot/trunk/i8086-msdos/<br />
<br />
There's also a snapshot available here, but it's quite outdated, so it's better to simply use the above snapshot or to [[#Building a snapshot manually|build your own]]:<br />
<br />
http://www.bttr-software.de/forum/forum_entry.php?id=12985<br />
<br />
=== Building a snapshot manually ===<br />
<br />
* make sure '''nasm''' is in your path (the fixes-3.0 branch also requires '''wlink''' and '''wlib''')<br />
* checkout fpc trunk:<br />
svn checkout http://svn.freepascal.org/svn/fpc/trunk fpc<br />
* enter the fpc directory and build the compiler with the following command (replace '''/usr/bin/ppc386''' with the full path to the stable (3.0.4) FPC compiler binary; replace '''-WmSmall''' with '''-WmTiny''', '''-WmMedium''', '''-WmCompact''', '''-WmLarge''' or '''-WmHuge''' if you want to use another memory model):<br />
make clean all OS_TARGET=msdos CPU_TARGET=i8086 OPT="-CX -XXs" CROSSOPT='''-WmSmall''' BINUTILSPREFIX= PP='''/usr/bin/ppc386'''<br />
* install the snapshot (replace '''linux''' and '''i386''' with the OS and CPU you're using; replace '''INSTALL_PREFIX''' with the directory you want the snapshot installed):<br />
make crossinstall OS_SOURCE='''linux''' CPU_SOURCE='''i386''' OS_TARGET=msdos CPU_TARGET=i8086 PP=compiler/ppcross8086 CROSSOPT='''-WmSmall''' \<br />
BINUTILSPREFIX= INSTALL_PREFIX='''/home/blablabla/fpc-i8086/snapshot/small''' OPT="-CX -XXs"<br />
<br />
=== Updating your fpc.cfg ===<br />
<br />
Add the following to your fpc.cfg to enable smartlinking and disable the default binutils prefix (so that you don't have to rename nasm, wlink and wlib to msdos-nasm, msdos-wlink and msdos-wlib):<br />
<br />
#ifdef cpui8086<br />
-CX<br />
-XX<br />
-XP<br />
#endif<br />
<br />
To enable building for all the memory models, build snapshots for the tiny, small, medium, compact, large and huge memory model, and then find the lines in your fpc.cfg that specify the path to the RTL:<br />
<br />
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget<br />
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/*<br />
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/rtl<br />
<br />
And update them to something similar to:<br />
<br />
#IFDEF CPUI8086<br />
-Fu/home/blablabla/fpc-i8086/snapshot/$fpcmemorymodel/lib/fpc/$fpcversion/units/$fpctarget<br />
-Fu/home/blablabla/fpc-i8086/snapshot/$fpcmemorymodel/lib/fpc/$fpcversion/units/$fpctarget/*<br />
-Fu/home/blablabla/fpc-i8086/snapshot/$fpcmemorymodel/lib/fpc/$fpcversion/units/$fpctarget/rtl<br />
#ELSE<br />
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget<br />
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/*<br />
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/rtl<br />
#ENDIF<br />
<br />
This should enable you to build programs in any of the supported memory models with just a compiler switch:<br />
ppcross8086 -WmTiny -Wtcom hello.pas<br />
ppcross8086 -WmTiny -Wtexe hello.pas<br />
ppcross8086 -WmSmall hello.pas<br />
ppcross8086 -WmMedium hello.pas<br />
ppcross8086 -WmCompact hello.pas<br />
ppcross8086 -WmLarge hello.pas<br />
ppcross8086 -WmHuge hello.pas<br />
<br />
And in case you're wondering - it doesn't matter which ppcross8086 compiler binary you use (i.e. from the tiny, small, medium, compact, large or huge model snapshot). They are identical. Only the compiled units differ.<br />
<br />
== Status ==<br />
The compiler has been enabled as a CPU/OS target in FPC.exe since revision 25792 (CPU: i8086, OS: msdos).<br />
<br />
The RTL compiles. Most units from Go32v2 have been ported. Just like Go32v2, the RTL supports long file names when run under a Windows 95+/2000+ DOS box or under plain DOS with a long file names driver such as doslfn.exe. FPC demo programs such as fpctris and samegame work in all supported memory models.<br />
<br />
=== Internal linker ===<br />
<br />
The internal linker does not support all records and features of the OMF object file format. It was designed to support only the records produced by the NASM assembler and FPC's own internal object writer. You may encounter problems if you try to link object modules produced by other compilers and assemblers.<br />
<br />
=== Floating point support ===<br />
<br />
Floating point operations require an FPU. Software FPU emulation is not yet implemented and using floating point operations on a real machine without an FPU will lead to a hang.<br />
<br />
=== Nil pointer assignment checking ===<br />
<br />
The '''small''' and '''medium''' memory models offer rudimentary nil pointer assignment checking. The system RTL puts a pattern of 32 bytes equal to $01 at the beginning of the data segment (DS:0000). At the end of program execution, this pattern is checked and if turns out it has changed, the message:<br />
<br />
Nil pointer assignment<br />
<br />
is printed on the screen. This indicates that a nil pointer assignment has happened at some time during the program execution. Unfortunately, we can't tell when exactly, only that it has happened.<br />
<br />
=== New pointer types ===<br />
<br />
To reflect the i8086 segmented memory model, FPC supports several pointer types:<br />
<br />
==== Near pointers ====<br />
<br />
This is the default pointer type in the tiny, small and medium memory models.<br />
<br />
Near pointers can be declared in any memory model, using the ''near'' keyword. For example:<br />
<br />
<syntaxhighlight lang="pascal"><br />
type<br />
PNearInteger = ^Integer; near;<br />
</syntaxhighlight><br />
<br />
There's also an untyped near pointer, predefined in the system unit, called ''NearPointer''.<br />
<br />
==== Special versions of near pointers ====<br />
<br />
Near pointers are declared using the ''near'' keyword, followed by a segment register, enclosed in single quotes. For example:<br />
<br />
<syntaxhighlight lang="pascal"><br />
type<br />
PNearCSInteger = ^Integer; near 'CS';<br />
PNearDSInteger = ^Integer; near 'DS';<br />
PNearESInteger = ^Integer; near 'ES';<br />
PNearSSInteger = ^Integer; near 'SS';<br />
PNearFSInteger = ^Integer; near 'FS';<br />
PNearGSInteger = ^Integer; near 'GS';<br />
</syntaxhighlight><br />
<br />
<br />
There are also untyped versions, predefined in the system unit:<br />
<br />
NearCSPointer<br />
NearDSPointer<br />
NearESPointer<br />
NearSSPointer<br />
NearFSPointer<br />
NearGSPointer<br />
<br />
==== Far pointers ====<br />
<br />
This is the default pointer type in the compact, large and huge memory models.<br />
<br />
Far pointers can be declared in any memory model, using the ''far'' keyword. For example:<br />
<br />
<syntaxhighlight lang="pascal"><br />
type<br />
PFarInteger = ^Integer; far;<br />
</syntaxhighlight><br />
<br />
There's also an untyped far pointer, predefined in the system unit, called ''FarPointer''.<br />
<br />
==== Huge pointers ====<br />
<br />
Huge pointers are like far pointers that support pointer arithmetic without the 64kb segment wraparound. That means they will automatically switch to a different segment if the offset exceeds 64k or becomes less than 0. Thus, they are very useful for accessing blocks of memory that exceed 64kb. Additionally, they support normalization, which is explained in the next section. Their main disadvantage is that they are quite a bit slower compared to far pointers.<br />
<br />
Huge pointers are declared using the ''huge'' keyword. For example:<br />
<br />
<syntaxhighlight lang="pascal"><br />
type<br />
PHugeInteger = ^Integer; huge;<br />
</syntaxhighlight><br />
<br />
There's also an untyped huge pointer, predefined in the system unit, called ''HugePointer''.<br />
<br />
===== Huge pointer normalization =====<br />
<br />
In real mode it is possible for several different pointers to point to the same memory address. For example, the following different pointers point to the same memory location:<br />
<br />
<syntaxhighlight lang="pascal"><br />
Ptr($1000, $2345)<br />
Ptr($1200, $0345)<br />
Ptr($1234, $0005)<br />
</syntaxhighlight><br />
<br />
This is because they resolve to the same linear address via the formula (segment * 16 + offset):<br />
<br />
<syntaxhighlight lang="pascal"><br />
Ptr($1000, $2345) // -> $1000 * 16 + $2345 = $12345<br />
Ptr($1200, $0345) // -> $1200 * 16 + $0345 = $12345<br />
Ptr($1234, $0005) // -> $1234 * 16 + $0005 = $12345<br />
</syntaxhighlight><br />
<br />
A Pointer whose offset is between $0 and $F is called a ''normalized'' pointer. That's the pointer with the lowest possible offset among all the pointers that point to the same linear address.<br />
<br />
Huge pointers can be automatically normalized by the compiler when doing pointer arithmetic on them or when comparing them. This is controlled by the ''$HugePointerNormalization'', ''$HugePointerArithmeticNormalization'' and ''$HugePointerComparisonNormalization'' directives. All three of them are local switches, so you can change the modes in the middle of the program.<br />
<br />
====== $HugePointerArithmeticNormalization ======<br />
<br />
This directive controls whether huge pointers are automatically normalized by the compiler after doing pointer arithmetic on them.<br />
<br />
====== $HugePointerComparisonNormalization ======<br />
<br />
This directive controls whether huge pointers are normalized before comparing them.<br />
<br />
====== $HugePointerNormalization ======<br />
<br />
This sets both $HugePointerArithmeticNormalization and $HugePointerComparisonNormalization:<br />
<br />
{| class="wikitable sortable"<br />
!mode !! arithmetic normalization !! comparison normalization !! description<br />
|-<br />
| {$HugePointerNormalization BorlandC} || On || On || Like Borland C<br />
|-<br />
| {$HugePointerNormalization MicrosoftC} || Off || Off || Like Microsoft C<br />
|-<br />
| {$HugePointerNormalization WatcomC} || Off || On || Like Watcom C<br />
|}<br />
<br />
=== Tested machines ===<br />
<br />
Compiled programs have been tested and known to work on the following machines:<br />
<br />
* [http://oldcomputers.net/ibm5150.html IBM PC 5150] (the first PC model ever), with a 4.77 MHz 8088 CPU, 512 KB RAM and a CGA card, running IBM DOS 3.30<br />
* [http://en.wikipedia.org/wiki/HP_200LX HP 200LX], with a 7.91 MHz 80186 CPU, running MS-DOS 5.0<br />
* IBM PS/2 Model 30-286, with a 10 MHz 80286 CPU and an AMD 287 FPU, running MS-DOS 6.22<br />
* various boring 32-bit and 64-bit machines :)<br />
* [http://en.wikipedia.org/wiki/DOSBox DOSBox]<br />
<br />
=== Supported memory models ===<br />
<br />
==== Tiny ====<br />
<br />
* Activated by the <code>-WmTiny</code> compiler option<br />
* Code + Data + Heap + Stack <= 64KB<br />
* CS = DS = SS<br />
* Pointer = NearPointer<br />
* CodePointer = NearPointer<br />
* Code starts at offset $100<br />
* Can produce both .com and .exe files. The binary format can be chosen with the <code>-Wtcom</code> and <code>-Wtexe</code> compiler options. The default format is .exe<br />
* The compiler defines: FPC_MM_TINY<br />
<br />
==== Small ====<br />
<br />
* Activated by the <code>-WmSmall</code> compiler option. This is the default memory model, so it is chosen if you don't specify a memory model.<br />
* Code <= 64KB, Data + Heap + Stack <= 64KB (Code and data are in separate segments, so programs can use up to 128KB in total)<br />
* DS = SS<br />
* Pointer = NearPointer<br />
* CodePointer = NearPointer<br />
* Can produce only .exe files<br />
* The compiler defines: FPC_MM_SMALL<br />
<br />
==== Medium ====<br />
<br />
* Activated by the <code>-WmMedium</code> compiler option<br />
* Code <= 1MB, Data + Heap + Stack <= 64KB<br />
* DS = SS<br />
* Pointer = NearPointer<br />
* CodePointer = FarPointer<br />
* Can produce only .exe files<br />
* The compiler defines: FPC_MM_MEDIUM<br />
<br />
==== Compact ====<br />
<br />
* Activated by the <code>-WmCompact</code> compiler option<br />
* Code <= 64KB, Data <= 64KB, Stack <= 64KB, Heap <= 1MB<br />
* Data structures cannot exceed 64KB<br />
* Pointer = FarPointer<br />
* CodePointer = NearPointer<br />
* Can produce only .exe files<br />
* The compiler defines: FPC_MM_COMPACT<br />
<br />
==== Large ====<br />
<br />
* Activated by the <code>-WmLarge</code> compiler option. This is the memory model used by Turbo Pascal version 4 and above<br />
* Code <= 1MB, Data <= 64KB, Stack <= 64KB, Heap <= 1MB<br />
* Data structures cannot exceed 64KB<br />
* Pointer = FarPointer<br />
* CodePointer = FarPointer<br />
* Can produce only .exe files<br />
* The compiler defines: FPC_MM_LARGE<br />
<br />
==== Huge ====<br />
<br />
* Activated by the <code>-WmHuge</code> compiler option<br />
* Code <= 1MB, Data <= 1MB, Stack <= 64KB, Heap <= 1MB<br />
* Static data of a single pascal module (i.e. unit or program) cannot exceed 64KB<br />
* Data structures cannot exceed 64KB<br />
* Pointer = FarPointer<br />
* CodePointer = FarPointer<br />
* Can produce only .exe files<br />
* The compiler defines: FPC_MM_HUGE<br />
<br />
=== Units and programs exceeding 64KB of code ===<br />
<br />
Although the medium, large and huge memory models support up to 1MB of code for the whole program+units, there's still a limit of 64kb code per pascal module (i.e. unit or program). If this limit is exceeded, you can overcome this by splitting the unit or program that exceeded 64KB into smaller units, so that each of them stays within the 64KB limit. But there's also an easier solution. You can put the following directive in the module that exceeds 64KB:<br />
<br />
{$HUGECODE on}<br />
<br />
This forces each procedure and function to be in a separate segment. Note that since the code of the unit is no longer in a single segment, this also disallows mixing near and far procedures in the same unit, so in this mode, 'near' and {$F-} are ignored.<br />
<br />
Using {$HUGECODE on} does not count as using a different memory model, because you can freely mix units with {$HUGECODE on} and {$HUGECODE off} in the same program.<br />
<br />
=== Supported calling conventions ===<br />
<br />
Currently, only the Pascal calling convention is supported. All the other calling conventions are entirely untested and should not be used, because they may or may not work and may change at any time.<br />
<br />
==== Pascal ====<br />
<br />
This is the default calling convention. It strives for compatibility with Turbo Pascal 7.<br />
<br />
* Parameters are pushed on the stack left to right.<br />
* The callee cleans the parameters from the stack.<br />
* Procedures and functions must preserve DS, SS and BP and may destroy AX, BX, CX, DX, SI, DI and ES.<br />
* 16-bit results are returned in AX, 32-bit results in DX:AX<br />
* 64-bit ints are returned in AX:BX:CX:DX. Note that Turbo Pascal doesn't support int64, so this behavior is borrowed from Open Watcom's 'pascal' calling convention.<br />
<br />
== Troubleshooting ==<br />
=== Compile error: missing .o files ===<br />
Problem:<br />
If you see errors/warnings like this during compiling & linking:<br />
<syntaxhighlight lang="text"><br />
test.pas(12,24) Warning: Object system.o not found, Linking may fail !<br />
Error! E2008: cannot open system.o : No such file or directory<br />
</syntaxhighlight><br />
(and indeed there don't appear to be any .o files in your msdos units directory)<br />
<br />
Solution:<br />
You haven't used smartlinking. You should always compile i8086-msdos programs with smartlinking, i.e. use the -XX and -CX options. Smartlinking uses .a files, nonsmartlinking uses .o files. <br />
<br />
The reason the .o files aren't generated is because the system unit exceeds the 64kb code limit for the small and tiny memory models and is therefore impossible to compile even 'hello world' without smartlinking, so creating the .o files is a waste of time. It might work for the medium model, but then you have to build the snapshot without -CX. However, with the tight memory constraints of real mode DOS, there is little reason not to use smartlinking in every memory model. Also, the medium model still has a limit of 64k code per unit, so even there it might not work without smartlinking. It certainly hasn't been tested.<br />
<br />
Hint:<br />
You can add these options to your fpc.cfg file, as described in the [[#Updating_your_fpc.cfg|"Updating your fpc.cfg"]] section.<br />
<br />
== Running the testsuite ==<br />
<br />
=== Using DOSBox ===<br />
<br />
* build a snapshot for the memory model you want to test<br />
* it is recomended to use a 32-bit x86 build of DOSBox, because the 64-bit one has inaccurate FPU emulation<br />
* compile fpc/tests/utils/dosbox/dosbox_wrapper.pas for your native platform<br />
* prepare and run a script like this:<br />
<br />
<syntaxhighlight lang="bash"><br />
#!/bin/sh<br />
<br />
FPCDIR=/home/blablabla/fpc-i8086/fpc<br />
MEMMODEL=Small<br />
<br />
export FPCMAKE=$FPCDIR/utils/fpcm/fpcmake<br />
export DOSBOX=/usr/bin/dosbox<br />
export SDL_VIDEODRIVER=dummy<br />
export SDL_AUDIODRIVER=dummy<br />
<br />
cd $FPCDIR/tests/<br />
<br />
ulimit -m 256000<br />
#ulimit -v 256000<br />
ulimit -d 256000<br />
<br />
echo running testsuite<br />
make full FPCFPMAKE=$FPCDIR/compiler/ppcx64 TEST_FPC=$FPCDIR/compiler/ppcross8086 TEST_OPT=-Wm$MEMMODEL EMULATOR=$FPCDIR/tests/utils/dosbox/dosbox_wrapper<br />
</syntaxhighlight><br />
<br />
== See also ==<br />
<br />
* [[GO32V2]] - DOS Extender<br />
* [[go32v2 development]] <br />
<br />
[[Category:FPC]]<br />
[[Category:FPC internals]]<br />
[[Category:Operating Systems and Platforms]]<br />
[[Category:DOS]]<br />
[[Category:Historical]]<br />
[[Category:Cross compilation]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Template:Note&diff=144451Template:Note2021-04-14T09:59:35Z<p>Ñuño Martínez: Added Spanish translation.</p>
<hr />
<div><onlyinclude><includeonly><div id="shbox" style="border-width:1px; border-color:lightgrey; background-color:#eeeef6; padding: 8px 5px 2px 10px; min-height:34px; border-style:solid; width=500px; display: block; margin-top:20px; font-size:90%;"><br />
[[Image:Note-icon.png|left|18px|24px]]<br />
<p style="margin-top:0px; margin-left: 24px;">'''{{ #switch:{{#titleparts:{{PAGENAME}}| | -1}}<br />
| de= Hinweis<br />
| en= Note<br />
| es= Nota<br />
| cs= Poznámka<br />
| fi= Huomaa<br />
| fr= Remarque<br />
| pt= Nota<br />
| ru= Примечание<br />
| Note<br />
}}:''' {{{1}}}</p></div></includeonly></onlyinclude><noinclude><br />
This template generates a hint box.<br />
<br />
Include this text into the articel to use this template<br />
<pre>{{Note|Your note text}}</pre><br />
It will result in{{Note|Your note text}}<br />
<br />
The template is language aware: this means the text "Note" will be translated to the language of the page which includes the template. If it isn't translated, please add the translation.<br />
<br />
[[Category:Language aware Templates]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Make_your_own_compiler,_interpreter,_parser,_or_expression_analyzer&diff=138634Make your own compiler, interpreter, parser, or expression analyzer2020-07-31T09:45:46Z<p>Ñuño Martínez: /* See also */</p>
<hr />
<div>= FCL Passrc =<br />
<br />
FPC comes with a pascal parser in library form in the [[fcl-passrc]] package. This is not the main compiler parser, but it is the one used for [[fpdoc]] and [[pas2js]].<br />
<br />
= Other FPC parser packages =<br />
<br />
[[fcl-xml]] is a FPC package that contains SAX XML and html parsers. <br />
<br />
FPC also contains two expression parsers [[symbolic]] and [http://wiki.freepascal.org/How_To_Use_TFPExpressionParser TFPExpressionParser].<br />
<br />
= Lex and Yacc =<br />
Two of the oldest unix tools. [https://en.wikipedia.org/wiki/Lex_(software) Lex] is a lexical analyser (token parser), and [https://en.wikipedia.org/wiki/Yacc Yacc] is a [https://en.wikipedia.org/wiki/LALR_parser LALR] parser generator. [https://en.wikipedia.org/wiki/Backus–Naur_form BNF] notation is used as a formal way to express context free grammars. Code and grammar are mixed, so grammar is tied to implementation language.<br />
<br />
== Plex and Pyacc ==<br />
[[Plex and Pyacc]] are pascal implementations of Lex and Yacc and they are part of your FreePascal distribution.<br />
<br />
== Lazarus Lex and Yacc ==<br />
You can find unfortunately abandoned Lazarus Lex and Yacc [https://bitbucket.org/avra/lazlexyacc/src/master/ here].<br />
<br />
= Gold =<br />
[[Gold]] is a free parsing system that you can use to develop your own programming languages, scripting languages and interpreters. It uses [https://en.wikipedia.org/wiki/LALR_parser LALR] parsing, and a mix of [https://en.wikipedia.org/wiki/Backus–Naur_form BNF] notation, character sets and regular expressions for terminals to define language grammars. Code and grammar are separated, so grammar is not tied to implementation language. This means that the same grammar can be loaded into engines made in different programming languages.<br />
<br />
Gold Parser Builder can be used to create, modify and test languages in Windows IDE which can also run on Wine. Command line tools are also available.<br />
<br />
Gold Parser Builder can also be used as a parser code generator using internal templates (FreePascal included), but there are also 3rd party engines to process compiled grammars.<br />
<br />
Gold Parser Builder has grammar editor with syntax highlighting, grammar generating wizard, test window to step through parsing of a sample source, templating system that can generate lexers/parsers or skeleton programs for various languages (including Delphi and FreePascal), import/export YACC/Bison, XML and HTML export, and interactive inspection of the compiled DFA and LALR tables.<br />
<br />
There is a subjective [http://goldparser.org/about/comparison-parsers.htm feature comparison table] of several parsers on Gold site, with special attention to [http://goldparser.org/about/comparison-yacc.htm Gold vs Yacc] comparison.<br />
<br />
= SynFacilSyn =<br />
[https://github.com/t-edson/SynFacilSyn SynFacilSyn] is Lazarus cross-platform library that includes a SynEdit highlighter that also can work as a lexer because of its flexible syntax definition file. It's well documented and has been used in several projects as both a highlighter and a lexer.<br />
<br />
SynFacilSyn includes an adapter which can be used in [https://github.com/Alexey-T/ATSynEdit ATSynEdit].<br />
<br />
The main advantage of using SynFacilSyn as a lexer is that in a SynEdit editor you can actually see the tokens colored appropriately, without doing anything else. So if you define a lexer, you are defining a source highlighter too.<br />
<br />
You can use an XML file to define the syntax, defining the tokens using tags and various RegEx constructs. You can also specify colouring of the tokens if you need it.<br />
<br />
You can also define Syntax programmatically which means it's possible to change individual syntax elements at runtime.<br />
<br />
SynFacilSyn's highlighter is fast and lightweight. It also includes useful methods for accessing the text content after the scan. Since it allows you to define recursive blocks ans sections you can also use it as a parser.<br />
<br />
SynFacilSyn is the base library for other tools that can be used together to create a powerful compiler, interpreter or IDE:<br />
<br />
* [https://github.com/t-edson/SynFacilCompletion SynFacilCompletion] - Scriptable Highlighter with code-completion for the SynEdit Component of Lazarus <br />
* [https://github.com/t-edson/SynFacilUtils SynFacilUtils] Library with utilities to create editors using SynFacilSyn and SynFacilCompletion.<br />
* [https://github.com/t-edson/t-Xpres t-Xpres] Framework to create compilers/interpreters based on SynFacilSyn. Includes lexer, parser, syntaxTree, expression evaluator and support to implement code generators or virtual machines.<br />
<br />
The following programs have been created using the above tools:<br />
<br />
* [https://github.com/t-edson/PicPas Microchip PIC compiler]<br />
* [https://github.com/t-edson/P65Pas 6502 CPU compiler]<br />
* [https://github.com/t-edson/Tito-s-Terminal Terminal with interpreter]<br />
<br />
= AntLR =<br />
TBD<br />
<br />
= Coco-R =<br />
Coco/R is a compiler generator based on L- attributed grammars which generates a scanner and a parser.<br />
<br />
For more information:<br />
<br />
http://www.ssw.uni-linz.ac.at/Coco/<br />
<br />
<br />
Two chapters of this book give an introduction about Coco/R and show some sample studies.<br />
<br />
Compilers and Compiler Generators - an introduction with C++<br />
<br />
P.D. Terry, Rhodes University, 1996 <br />
<br />
http://www.cs.ru.ac.za/compilers/index.html<br />
<br />
<br />
http://www.cs.ru.ac.za/compilers/pdfvers.pdf<br />
<br />
http://www.cs.ru.ac.za/compilers/cocorp.zip<br />
<br />
= Anatomy of a compiler =<br />
Here is graphical representation of a typical compiler anatomy:<br />
<br />
[[File:Anatomy of a compiler.gif|Anatomy of a compiler]]<br />
<br />
The parse tree is typically stored in RAM, where an optimiser can recognise and simplify idioms e.g. to unroll loops. Some early compilers attempted to store the entire program's parse tree which was only converted to lower-level code on completion of the pass that generated it; one notable example was the Pastel ("an off-colour Pascal") compiler[https://en.wikipedia.org/wiki/Pastel_(programming_language)] running on a DEC PDP-11 which famously did not become the basis of Stallman's GCC compiler. According to the Pastel developers:[http://www.mit.edu/~cbf/thesis.htm#Languages%20and%20Hosts]<br />
<br />
<blockquote><br />
At one point in the project Richard Stallman visited, and had the Pastel compiler explained to him. He left with a copy of the source, and used it to produce the Gnu C compiler. Most of the techniques that gave the Gnu C compiler its reputation for good code generation came from the Amber Pastel compiler.<br />
</blockquote><br />
<br />
According to Stallman:[https://www.gnu.org/gnu/thegnuproject.html]<br />
<br />
<blockquote><br />
Hoping to avoid the need to write the whole compiler myself, I obtained the source code for the Pastel compiler, which was a multiplatform compiler developed at Lawrence Livermore Lab. It supported, and was written in, an extended version of Pascal, designed to be a system-programming language. I added a C front end, and began porting it to the Motorola 68000 computer. But I had to give that up when I discovered that the compiler needed many megabytes of stack space, and the available 68000 Unix system would only allow 64k.<br />
<br />
I then realized that the Pastel compiler functioned by parsing the entire input file into a syntax tree, converting the whole syntax tree into a chain of “instructions”, and then generating the whole output file, without ever freeing any storage. At this point, I concluded I would have to write a new compiler from scratch. That new compiler is now known as GCC; none of the Pastel compiler is used in it, but I managed to adapt and use the C front end that I had written. But that was some years later; first, I worked on GNU Emacs.<br />
</blockquote><br />
<br />
As a general principle, the code generator takes (fragments of) the parse tree and generates either binary object files or assembler source. At this stage there is typically further ("peephole") optimisation, in particular to recognise e.g. writes to variables that are never read.<br />
<br />
= Ancient history =<br />
A wiki entry hosted by a pascal community obviously has to start off with Niklaus Wirth, who was supervised by Harry Huskey at UC Berkeley; Wirth's doctoral work implemented a language named Euler on an IBM 704. After Berkeley Wirth moved to Stanford where he reimplemented Euler in ALGOL-60 on either a Burroughs B5000 or B5500 (drum or disc-based respectively, the system was upgraded at about the same time), then he moved on to PL/360 and ALGOL-W which he proposed as a successor to ALGOL-60.[https://inf.ethz.ch/personal/wirth/projects.html] Broadly speaking, Wirth's early compilers used recursive ascent, later editions of his books introduced recursive descent as an alternative.<br />
<br />
There is a wealth of information on compiler implementation in that era on Huub de Beer's website[https://heerdebeer.org/ALGOL/implementation.html] which is the source of some of the conjecture that follows. In addition Thomas Haigh has some very useful material on the history of ALGOL standardisation, in particular throwing light on the crisis caused by the ALGOL-68 committee's rejection of Wirth's ALGOL-W proposal:[http://www.tomandmaria.com/Tom/Writing/DijkstrasCrisis_LeidenDRAFT.pdf]<br />
<br />
<blockquote><br />
According to Hoare’s famous account, given years later in his Turing Award lecture, the group took a decisive wrong turn in 1965 when it inexplicably rejected an elegant and pragmatic draft design compiled by Niklaus Wirth in favor of an “incomplete and incomprehensible” alternative design for a radically different language submitted by Adriaan van Wijngaarden.<br />
</blockquote><br />
<br />
Huub de Beer investigates the earliest published algorithms for compiling ALGOL-like languages, and in effect demonstrates that they were in the style of Dijkstra's "shunting yard" algorithm using multiple queues and stacks to handle the entire syntax. Edgar ("Ned") irons at Princeton used this approach to compile using recursive ascent (with backtracking where necessary), A.A.Grau effectively implemented recursive descent but still used multiple explicit data structures.<br />
<br />
At Burroughs, Richard Waychoff had the idea of using the run-time structure of ALGOL to hide much of the complexity of a recursive descent compiler, he was apparently in informal contact with Irons but did not know of Grau's work and the idea of using the implementation language's capability of recursion (i.e. with nested local variables etc.) appears to be his alone.[http://www.ianjoyner.name/Files/Waychoff.pdf] It's worth noting at this point that both Donald Knuth and Edsger Dijkstra cooperated to varying degrees with the Burroughs language and operating system developers, Knuth's copy of the document just cited is annotated "half-true"[https://archive.computerhistory.org/resources/text/Knuth_Don_X4100/PDF_index/k-8-pdf/k-8-u2779-B5000-People.pdf] but his oral history account does not dispute Waychoff's claim.[https://conservancy.umn.edu/bitstream/handle/11299/107413/oh332dk.pdf]<br />
<br />
Separately, Val Schorre at UCLA wrote Meta-II for an IBM 1401, which both allows the syntax of a language to be defined in a BNF-like fashion and associates output fragments with each recognised syntactic structure.[https://en.wikipedia.org/wiki/META_II] This allows a fairly comprehensive ALGOL-like language to be specified in a few hundred lines, and while the output- which is typically assembler-like source for a dedicated interpreter- lacks any attempt at optimisation it can be a useful tool when implementing e.g. an application-specific scripting language. As observed by Alan Kay:<br />
<br />
<blockquote><br />
The paper itself is a wonderful gem which includes a number of excellent examples, including the bootstrapping of Meta II in itself (all this was done on an 8K (six bit byte) 1401!)<br />
</blockquote><br />
<br />
Associates of Schorre went on to design Tree Meta, which extended Meta-II by first generating a parse tree in memory and then using the tree equivalent to a source statement to generate output code[https://en.wikipedia.org/wiki/TREE-META]. The advantage of this approach is that while the initial ''parse'' stage might be unable to distinguish between e.g. loading a constant and loading the result of an expression into a register, the trees that are generated by the two cases are recognisably different and can be optimised appropriately before being ''unparsed'' into assembler. Tree Meta was used by Douglas Englebart's team to write specialist compilers for "the mother of all demos", which is widely cited as a landmark in the design of interactive systems.<br />
<br />
Recursive descent is now generally accepted as one of the dominant techniques of compiler implementation. Chronologically, it appears to have been invented by Grau, but the major implementations that made it usable were by Waychoff and Schorre.<br />
<br />
= Useful BNF and EBNF tools =<br />
* [http://www.garshol.priv.no/download/text/bnf.html BNF and EBNF metasyntax formal notations for writing grammars]<br />
* [http://bottlecaps.de/rr/ui EBNF to Syntax Diagram online convertor]<br />
* [https://sourceforge.net/projects/ebnfvisualizer/ EBNF Visualizer]<br />
* [https://www.ctan.org/tex-archive/support/syngen Syngen - tool for generating syntax diagrams from BNF in LaTeX format]<br />
<br />
= See also =<br />
* [https://www.inf.ethz.ch/personal/wirth/CompilerConstruction/ Compiler construction], by Niklaus Wirth.<br />
* ''Let's build a compiler'', by Jack Crenshaw; [https://compilers.iecc.com/crenshaw/ original site], [http://web.archive.org/web/20180107011717/http://www.stack.nl:80/~marcov/compiler.pdf PDF version], or [http://www.pp4s.co.uk/main/tu-trans-comp-jc-intro.html updated version].<br />
* [http://www.cs.man.ac.uk/~pjj/farrell/compmain.html Compiler Basics] (August 1995), by James Alan Farrell<br />
* [https://norasandler.com/2017/11/29/Write-a-Compiler.html Writing a C Compiler, Part 1] (Nov 29, 2017), by Nora Sandler<br />
* [http://memphis.compilertools.net/interpreter.html Writing an interpreter]<br />
* [http://www.cs.man.ac.uk/~pjj/bnf/bnf.html Notations for context-free grammars]<br />
* [https://dickgrune.com/Books/PTAPG_1st_Edition/ Parsing Techniques - A Practical Guide] (1st ed., 1990), by Dick Grune and Ceriel J.H. Jacobs<br />
* [[FPC internals]] - Details about how FreePascal compiler is built<br />
* [http://pascal.hansotten.com/ The School of Wirth] Hans Otten's website discussing Pascal and related languages<br />
<br />
[[Category:Code]]<br />
[[Category:Compiler design]]<br />
[[Category:Utilities]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=FPC_and_Allegro/es&diff=134665FPC and Allegro/es2020-03-24T17:44:15Z<p>Ñuño Martínez: /* Tutorial */</p>
<hr />
<div>{{FPC and Allegro}}<br />
<br />
==Introducción==<br />
'''Allegro''' es una biblioteca multiplataforma dirigida a la programación de videojuegos y aplicaciones multimedia. Maneja tareas comunes de bajo nivel como crear ventanas, aceptar la entrada del usuario, carga de datos, dibujo de imágenes, ejecución de sonido, etc. y en general abstrae la plataforma en la que se ejecuta. Sin embargo, Allegro '''no''' es un motor de juego: el programador es libre de diseñar y estructurar el programa como se quiera.<br />
<br />
Allegro 5 tiene las siguientes características:<br />
<br />
*Soporta Windows, Linux, Mac OSX, iPhone y Android.<br />
*API en lenguaje C intuitiva, con posibilidad de ser utilizado por muchos lenguajes de programación.<br />
*Dibujo de primitivas gráficas e imágenes (bitmaps) acelerados por la tarjeta gráfica (vía OpenGL o Direct3D).<br />
*Grabación de audio.<br />
*Carga y dibujo de fuentes tipográficas.<br />
*Ejecución de vídeo.<br />
*Abstracción de ''shaders'' y dibujo de polígonos en bajo nivel.<br />
*¡Y más!<br />
Para usar Allegro con Free Pascal necesitas la [http://allegro-pas.sf.net/ envolvente Allegro.pas].<br />
==Tutorial==<br />
El tutorial Vivace está disponible en la web del proyecto, [http://allegro-pas.sourceforge.net/tutorials/vivace/ aquí].<br />
<br />
==Links==<br />
*[http://allegro-pas.sourceforge.net/ Página del proyecto]<br />
*[https://sourceforge.net/projects/allegro-pas/files/ Descargas]<br />
*[http://allegro-pas.sourceforge.net/docs/ Documentación en línea]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=FPC_and_Allegro&diff=134664FPC and Allegro2020-03-24T17:43:05Z<p>Ñuño Martínez: /* Vivace tutorial */ Link to the tutorial.</p>
<hr />
<div>{{FPC and Allegro}}<br />
{{Menu_Game_Development}}<br />
<br />
==Introduction==<br />
'''Allegro''' is a cross-platform library mainly aimed at video game and multimedia programming. It handles common, low-level tasks such as creating windows, accepting user input, loading data, drawing images, playing sounds, etc. and generally abstracting away the underlying platform. However, Allegro is ''not'' a [[Game Engine|game engine]]: it is a [[Game framework|game framework]] you are free to design and structure your program as you like.<br />
<br />
Allegro 5 has the following additional features:<br />
<br />
*Supported on Windows, Linux, macOS, iPhone and Android.<br />
*User-friendly, intuitive C API usable from many languages.<br />
*Hardware accelerated bitmap and graphical primitive drawing support (via OpenGL or Direct3D).<br />
*Audio recording support.<br />
*Font loading and drawing.<br />
*Video playback.<br />
*Abstractions over shaders and low-level polygon drawing.<br />
*And more!<br />
To use Allegro with Free Pascal you need the [http://allegro-pas.sf.net/ Allegro.pas wrapper].<br />
<br />
==Vivace tutorial==<br />
''Allegro Vivace'' is a tutorial used by Allegro beginners for years to being introduced to it. The latest version is [https://github.com/liballeg/allegro_wiki/wiki/Allegro-Vivace here] and I've decided to translate it to Pascal ([https://www.allegro.cc/forums/thread/618042/1044890#target with permission]).<br />
<br />
The tutorial is in the project webpage, [http://allegro-pas.sourceforge.net/tutorials/vivace/ here].<br />
<br />
==See also==<br />
*[[Game framework]]<br />
<br />
==Links==<br />
*[http://allegro-pas.sourceforge.net/ Project page]<br />
*[https://sourceforge.net/projects/allegro-pas/files/ Downloading]<br />
*[http://allegro-pas.sourceforge.net/docs/ Online documentation]<br />
<br />
[[Category:Games]]<br />
[[Category:Game Development]]<br />
[[Category:Graphics]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=FPC_and_Allegro&diff=134492FPC and Allegro2020-03-15T18:45:28Z<p>Ñuño Martínez: /* Tutorials */ Change tutorial to Vivace Allegro</p>
<hr />
<div>{{FPC and Allegro}}<br />
{{Menu_Game_Development}}<br />
<br />
==Introduction==<br />
'''Allegro''' is a cross-platform library mainly aimed at video game and multimedia programming. It handles common, low-level tasks such as creating windows, accepting user input, loading data, drawing images, playing sounds, etc. and generally abstracting away the underlying platform. However, Allegro is ''not'' a [[Game Engine|game engine]]: it is a [[Game framework|game framework]] you are free to design and structure your program as you like.<br />
<br />
Allegro 5 has the following additional features:<br />
<br />
*Supported on Windows, Linux, macOS, iPhone and Android.<br />
*User-friendly, intuitive C API usable from many languages.<br />
*Hardware accelerated bitmap and graphical primitive drawing support (via OpenGL or Direct3D).<br />
*Audio recording support.<br />
*Font loading and drawing.<br />
*Video playback.<br />
*Abstractions over shaders and low-level polygon drawing.<br />
*And more!<br />
To use Allegro with Free Pascal you need the [http://allegro-pas.sf.net/ Allegro.pas wrapper].<br />
<br />
==Vivace tutorial==<br />
''Allegro Vivace'' is a tutorial used by Allegro beginners for years to being introduced to it. The latest version is [https://github.com/liballeg/allegro_wiki/wiki/Allegro-Vivace here] and I've decided to translate it to Pascal ([https://www.allegro.cc/forums/thread/618042/1044890#target with permission]).<br />
<br />
* [[Allegro.pas Vivace tutorial]]: Introduction.<br />
<br />
==See also==<br />
*[[Game framework]]<br />
<br />
==Links==<br />
*[http://allegro-pas.sourceforge.net/ Project page]<br />
*[https://sourceforge.net/projects/allegro-pas/files/ Downloading]<br />
*[http://allegro-pas.sourceforge.net/docs/ Online documentation]<br />
<br />
[[Category:Games]]<br />
[[Category:Game Development]]<br />
[[Category:Graphics]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Understanding_Interfaces/es&diff=134489Understanding Interfaces/es2020-03-15T18:02:20Z<p>Ñuño Martínez: Clean up all the article, in a more "Spanish Traditional (Castillian)" language.</p>
<hr />
<div>{{Understanding interfaces}}<br />
<br />
== La razón de las interfaces ==<br />
<br />
Las clases que extienden otras clases pueden llamarse sub-clases o clases derivadas. Por ejemplo, podría extenderse la clase <code>bicicleta</code> para tener una sub-clase <code>montañera</code>, y una sub-clase <code>paseo</code>. Estas clases heredan muchas de las funciones comunes de la clase <code>bicicleta</code>, pero añaden opciones únicas como la baca para la de <code>paseo</code>. Puedes llamar métodos de <code>bicicleta</code>, sabiendo que se aplican generalmente a todos los tipos de bicicleta.<br />
<br />
Este es un uso tradicional y estándar para las clases, dado que las sub-clases son solamente variaciones sobre un tema. Pero suponiendo que hubiera una aplicación donde existieran objetos de clase bicicleta, de automóviles, de lavacoches y otros, y en dicha aplicación se quisiera que cada clase tuviera el siguiente método:<br />
<br />
<syntaxhighlight lang="pascal"><br />
function EsReciclable : Boolean;<br />
</syntaxhighlight><br />
<br />
Esto permitiría saber si el objeto contiene materiales reciclables. Se podría definir una clase de alto nivel que contuviera este método, y definir todas las clases derivadas de ella. O simplemente podrías agregar el método a cada sub-clase. O podrían usarse ''interfaces''. Las interfaces simplemente pondrían orden en esta situación. Definiendo una interfaz que agrupe estos métodos juntos, establece una norma para todas las clases que implementen la interfaz. Hacen más fácil que el programador se discipline en desarrollar la aplicación; todas las clases tienen un conjunto de métodos que son idénticos y el compilador insiste que todos los métodos en una interfaz se implementen.<br />
<br />
Regresando al escenario del objeto reciclable, cada sub-clase hereda funciones comunes de su clase padre en particular. Esto describe la estructura básica de la sub-clase. También hereda (por implementación) las funciones comunes que se extienden por todas las clases.<br />
<br />
<br />
== Ejemplo de interfaz ==<br />
<br />
Como muchas ideas, un ejemplo es la mejor forma de ilustrar los conceptos. Lo haremos por etapas para que las cosas sean tan simples como sea posible. Primero, definamos una clase automóvil:<br />
<br />
<syntaxhighlight lang="pascal"><br />
type<br />
(* Definimos nuestra clase Automóvil. *)<br />
TAutomovil = class<br />
private<br />
fMarca: String;<br />
fEdad: Byte;<br />
public<br />
(* Constructor del Automóvil. *)<br />
constructor Create (aMarca: String);<br />
published<br />
(* Propiedades del Automóvil. *)<br />
property Marca: String read fMarca;<br />
property Edad: Byte read fEdad write fEdad;<br />
end;<br />
</syntaxhighlight><br />
<br />
Esta clase se define por defecto basado en [[TObject]] dado que no especificamos el tipo de clase base. Esta clase tiene dos propiedades, y un constructor, que se muestran aquí:<br />
<br />
<syntaxhighlight lang="pascal"><br />
(* Constructor de la implementación para la clase Automóvil. *)<br />
constructor TAutomovil.Create (aMarca : String);<br />
begin<br />
(* Guarda el marca del automóvil y pone la edad por defecto. *)<br />
fMarca := aMarca;<br />
fEdad := 0<br />
end;<br />
</syntaxhighlight><br />
<br />
Aquí asignamos las dos propiedades del automóvil: su marca y edad. La marca se pasa como parámetro y asignamos una edad por defecto de 0. Ahora definiremos otra clase – una clase bicicleta:<br />
<br />
<syntaxhighlight lang="pascal"><br />
type<br />
(* Definimos nuestra clase Bicicleta. *)<br />
TBicicleta = class<br />
private<br />
fFemenina: Boolean;<br />
fEdad: Byte;<br />
public<br />
(* Constructor de la Bicicleta. *)<br />
constructor Create (aFemenina: Boolean; aEdad: Byte);<br />
published<br />
(* Propiedades de la Bicicleta. *)<br />
property esFemenina: Boolean read fFemenina;<br />
property Edad: Byte read fEdad write fEdad;<br />
end;<br />
</syntaxhighlight><br />
<br />
Esta clase tiene dos propiedades y un constructor como aquí se muestra:<br />
<br />
<syntaxhighlight lang="pascal"><br />
(* Constructor de la implementación para la clase bicicleta. *)<br />
constructor TBicicleta.Create (aFemenina: Boolean; aEdad: Byte);<br />
begin<br />
(* Save the passed parameters. *)<br />
fFemenina := aFemenina;<br />
fEdad := aEdad<br />
end;<br />
</syntaxhighlight><br />
<br />
Esta clase es un poco distinta de la clase automóvil, lo suficiente para ver que podríamos no haber basado el automóvil en la bicicleta o la bicicleta en el automóvil. Ahora definiremos una interfaz que diga si un clase de objeto es reciclable:<br />
<br />
<syntaxhighlight lang="pascal"><br />
type<br />
(* Una definición de interfaz. *)<br />
IReciclable = Interface (IInterface)<br />
(* Una sola función que da soporte a la propiedad. *)<br />
function MaterialEsReciclable: Boolean;<br />
(* Una sola propiedad. *)<br />
property esReciclable: Boolean read MaterialEsReciclable;<br />
end;<br />
</syntaxhighlight><br />
<br />
Nuestra interfaz usa la definición estándar IInterface como base. Las definiciones de interfaces son como definiciones de clase con todos los elementos abstractos, así que no tenemos que declararlos como abstractos – lo son por defecto.<br />
<br />
Esta interfaz añade una propiedad esReciclable a cada clase que la implemente. Para cada clase que la implemente se garantizará que tendrá exactamente la misma forma de preguntar si es reciclable. Este es el poder y el beneficio de las interfaces – uniformidad a través de clases potencialmente muy distintas.<br />
<br />
Cualquier clase puede implementar tantas interfaces como se quiera – puede conformar cualquier estándar global en efecto. Nótese que debemos definir la propiedad usando una función – no podemos declarar un campo de datos <code>Boolean</code> en la interrfaz dado que las interfaces no contienen datos.<br />
<br />
Ahora cambiemos nuestras clases para que den soporte a esta definición de interfaz:<br />
<br />
<syntaxhighlight lang="pascal"><br />
type<br />
(* Definimos nuestra clase Automóvil. *)<br />
TAutomovil = class (TInterfacedObject, IReciclable)<br />
private<br />
fMarca: String;<br />
fEdad: Byte;<br />
fEsReciclable: Boolean; { Añadido para dar soporte a IReciclable. }<br />
function MaterialEsReciclable: Boolean; { Añadido para IReciclable. }<br />
public<br />
(* Constructor del Automóvil. *)<br />
constructor Create (aMarca: String);<br />
published<br />
(* Propiedades del Automóvil. *)<br />
property Marca: String read fMarca;<br />
property Edad: Byte read fEdad write fEdad;<br />
(* Añadido para IReciclable. *)<br />
property esReciclable: Boolean read MaterialEsReciclable;<br />
end;<br />
</syntaxhighlight><br />
<br />
Nótese que pusimos la función usada por la propiedad de interfaz <code>esReciclable</code> en la sección privada (<code>private</code>) – queremos que la propiedad la use sólo quien la llame.<br />
<br />
[Nota del autor: cuando se compila, el compilador insiste en la presencia de la función <code>MaterialEsReciclable</code>, pero no en la parte más importante – la propiedad. Así como lo puede ver el autor, esto no obliga la opción predominante de la interfaz – ¡la propiedad!]<br />
<br />
Ahora hemos basado nuestra clase en la clase <code>[[TInterfaceObject]]</code>, la cual provee de algo de soporte estándar para las clases que implementan interfaces. Y hemos también basado nuestra clase en <code>IReciclable</code>, nuestra nueva interfaz.<br />
<br />
Pero también debemos declarar la nueva función <code>MaterialEsReciclable</code>:<br />
<br />
<syntaxhighlight lang="pascal"><br />
(* Función del automóvil requerida por el atributo EsReciclable. *)<br />
function TAutomovil.MaterialEsReciclable: Boolean;<br />
begin<br />
Result := fEsReciclable<br />
end;<br />
</syntaxhighlight><br />
<br />
Y no debemos olvidar asignar este valor reciclable. Lo haremos diréctamente aquí en el constructor:<br />
<br />
<syntaxhighlight lang="pascal"><br />
(* Constructor para la clase automóvil. *)<br />
constructor TAutomovil.Create (aMarca: String);<br />
begin<br />
(* Guarda la marca del automóvil y asigna una edad por defecto. *)<br />
fMarca := aMarca;<br />
fEdad := 0;<br />
fEsReciclable := true { Asigna que es reciclable. }<br />
end;<br />
</syntaxhighlight><br />
<br />
¡Vaya! Pero debemos hacer lo mismo para la clase <code>Bicicleta</code> para mostrar el auténtico efecto. Veremos el código completo para definir y usar estas clases, las cuales puedes copiar y pegar en el ''Editor de Código'':<br />
<br />
<syntaxhighlight lang="pascal"><br />
unit Unit1;<br />
<br />
{$mode objfpc}{$H+}<br />
<br />
interface<br />
<br />
uses<br />
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;<br />
<br />
type<br />
(* Una definición de interfaz. *)<br />
IReciclable = Interface (IInterface)<br />
(* Una sola función que da soporte a la propiedad. *)<br />
function MaterialEsReciclable: Boolean;<br />
(* Una sola propiedad. *)<br />
property esReciclable: Boolean read MaterialEsReciclable;<br />
end;<br />
<br />
(* Definimos nuestra clase Automóvil. *)<br />
TAutomovil = class (TInterfacedObject, IReciclable)<br />
private<br />
fMarca: String;<br />
fEdad: Byte;<br />
fEsReciclable: Boolean; { Añadido para dar soporte a IReciclable. }<br />
function MaterialEsReciclable: Boolean; { Añadido para IReciclable. }<br />
public<br />
(* Constructor del Automóvil. *)<br />
constructor Create (aMarca: String);<br />
published<br />
(* Propiedades del Automóvil. *)<br />
property Marca: String read fMarca;<br />
property Edad: Byte read fEdad write fEdad;<br />
(* Añadido para IReciclable. *)<br />
property esReciclable: Boolean read MaterialEsReciclable;<br />
end;<br />
<br />
(* Definimos nuestra clase Bicicleta. *)<br />
TBicicleta = class (TInterfacedObject, IReciclable)<br />
private<br />
fFemenina: Boolean;<br />
fEdad: Byte;<br />
function MaterialEsReciclable: Boolean; { Añadido para IReciclable. }<br />
public<br />
(* Constructor de la Bicicleta. *)<br />
constructor Create (aFemenina: Boolean; aEdad: Byte);<br />
published<br />
(* Propiedades de la Bicicleta. *)<br />
property esFemenina: Boolean read fFemenina;<br />
property Edad: Byte read fEdad write fEdad;<br />
(* Añadido para IReciclable. *)<br />
property esReciclable: Boolean read MaterialEsReciclable;<br />
end;<br />
<br />
{ TForm1 }<br />
TForm1 = class (TForm)<br />
procedure FormCreate (Sender: TObject);<br />
private <br />
{ private declarations }<br />
public<br />
{ public declarations }<br />
end;<br />
<br />
var<br />
Form1: TForm1;<br />
<br />
implementation<br />
<br />
{$R *.frm}<br />
<br />
{ TForm1 }<br />
<br />
procedure TForm1.FormCreate (Sender: TObject);<br />
var<br />
biciMama: TBicicleta;<br />
cochePapa: TAutomovil;<br />
begin<br />
{ Instancia los objetos bicicleta y automóvil. }<br />
biciMama := TBicicleta.Create (true, 36);<br />
cochePapa := TAutomovil.Create ('Toyota Hilux');<br />
{ Pregunta a cada si cada uno si es reciclable. }<br />
if cochePapa.esReciclable then<br />
ShowMessage ('El coche de papá es reciclable.')<br />
else<br />
ShowMessage ('El coche de papá no es reciclable.');<br />
if biciMama.esReciclable then<br />
ShowMessage ('La bici de mamá es reciclable.')<br />
else<br />
ShowMessage ('La bici de mamá no es reciclable.')<br />
end;<br />
<br />
<br />
<br />
(* Constructor para la clase automóvil. *)<br />
constructor TAutomovil.Create (aMarca: String);<br />
begin<br />
(* Guarda la marca del automóvil y asigna una edad por defecto. *)<br />
fMarca := aMarca;<br />
fEdad := 0;<br />
fEsReciclable := true { Asigna que es reciclable. }<br />
end;<br />
<br />
(* Función del Automóvil requerida para el atributo esReciclable. *)<br />
function TAutomovil.MaterialEsReciclable: Boolean;<br />
begin<br />
Result := fEsReciclable<br />
end;<br />
<br />
<br />
<br />
(* Constructor de la implementación para la clase bicicleta. *)<br />
constructor TBicicleta.Create (aFemenina: Boolean; aEdad: Byte);<br />
begin<br />
(* Save the passed parameters. *)<br />
fFemenina := aFemenina;<br />
fEdad := aEdad<br />
end;<br />
<br />
(* Función de la Bicicleta requerida para el atributo esReciclable. *)<br />
function TBicicleta.MaterialEsReciclable: Boolean;<br />
begin<br />
{ Vamos a presuponer que sólo las bicibletas para hombre son reciclables. }<br />
Result := not self.esFemenina<br />
end;<br />
<br />
end.<br />
</syntaxhighlight><br />
<br />
Al ejecutar... [[ShowMessage]] muestra lo siguiente:<br />
<br />
El coche de papá es reciclable.<br />
La bici de mamá no es reciclable.<br />
<br />
<br />
Este post fue tomado de un artículo de internet que me pareció bien interesante para modificar y entender las interfaces. Siempre ha sido un tema tabú(?) preguntar y cuando se usan, puede darle más claridad a tu código.<br />
<br />
== Ver también ==<br />
<br />
*[[Accessing the Interfaces directly]]<br />
*[[How To Use Interfaces]]<br />
*[[Interfaces]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Choosing_a_Game_Engine&diff=130616Choosing a Game Engine2020-01-15T11:33:30Z<p>Ñuño Martínez: /* Allegro.pas */</p>
<hr />
<div>==ZGameEditor ==<br />
<br />
'''Website:''' http://www.zgameeditor.org/<br />
<br />
This game builder is created using Delphi and its game scripting language is very similar to Pascal (a simplified version of Pascal). Pascal lovers should check this one first. I managed to create a simple vertical scrolling spaceship game in the first few hours of my trying it.<br />
<br />
{| class="wikitable"<br />
!Advantages<br />
!Disadvantages<br />
|-<br />
|Multi platform support: Windows, Linux, macOS, Android<br />
|The editor runs on Windows only<br />
|-<br />
|Can create both 2D and 3D games<br />
|Requires some programming skills<br />
|-<br />
|Can create Windows screensavers<br />
|-<br />
|Easy to use built-in audio synthesizer<br />
|-<br />
|The generated stand-alone executable is very small<br />
|-<br />
|Its scripting language is very similar to Pascal<br />
|}<br />
<br />
== Castle Game Engine ==<br />
<br />
'''Website:''' https://castle-engine.io/<br />
<br />
It's probably the most powerful Pascal game engine. It is a game framework not a game builder, you have to integrate it into your Lazarus/FPC to use it. Learning the Castle Game Engine is much harder than ZGameEditor and the resulting binaries are much bigger too. I wish I had more time so I could explore or even use it. Castle Game Engine is really an interesting project.<br />
<br />
{| class="wikitable"<br />
!Advantages<br />
!Disadvantages<br />
|-<br />
|Multi platform support: Windows, Linux, FreeBSD, macOS, Android, iOS, Nintendo Switch<br />
|Requires good programming skills in Pascal<br />
|-<br />
|Import models form many formats, graphics effects, physics, AI, etc<br />
|It is a game framework, learning a game framework is hard<br />
|-<br />
|Can create both 2D and 3D games<br />
|-<br />
|Good demos and documentation<br />
|}<br />
<br />
== GLScene ==<br />
<br />
'''Website:''' http://glscene.sourceforge.net/wikka/<br />
<br />
This 3D graphics library is very powerful. I thought I'd build some cool 3D games and applications using it. Unfortunately their development focus is mainly on Windows. I monitored it for years but there was not much progress for Linux. It didn't run well on my Linux computer so I abandoned it.<br />
<br />
{| class="wikitable"<br />
!Advantages<br />
!Disadvantages<br />
|-<br />
|Multi platform support: Windows, Linux, macOS<br />
|Focus is mainly on Windows<br />
|-<br />
|Full featured 3D graphics engine<br />
|Does not run well on Linux<br />
|-<br />
|Good demos<br />
|Where is the documentation?<br />
|-<br />
|Zero deployment setup<br />
|Requires good programming skills in Pascal<br />
|}<br />
<br />
== Allegro.pas ==<br />
<br />
'''Website:''' [[FPC_and_Allegro|FPC and Allegro]]<br />
<br />
Allegro.pas is a wrapper for the Allegro game framework. Learning a game framework is hard, luckily the official website of Allegro provides detailed documentation so learning it is relatively easy. After only a few days learning it, I managed to create my demo game Furious Paladin.<br />
<br />
Furious Paladin's binary: http://graphicslearning.com/furious-paladin-tutorials/<br />
<br />
And this is the source code: https://sourceforge.net/p/allegro-pas/code/HEAD/tree/TRUNK/demos/<br />
<br />
{| class="wikitable"<br />
!Advantages<br />
!Disadvantages<br />
|-<br />
|Multi platform support: Windows, Linux, macOS, iPhone, Android<br />
|Relies on OpenGL or Direct3D to create full 3D games<br />
|-<br />
|Audio, font, video playback, some 3D basic drawing, joystick, keyboard, physics<br />
|How do you use Allegro.pas to create Android games?<br />
|-<br />
|Detailed documentation<br />
|Requires good programming skills in Pascal<br />
|}<br />
<br />
== Simple Directmedia Library ==<br />
<br />
'''Website:''' [[FPC_and_SDL|FPC and SDL]]<br />
<br />
I never really tried it. But I know a kid (who was a member here) created a simple 2D horizontal scrolling game using FPC + SDL only weeks of learning it. Read more about [[FPC_and_SDL|SDL here]]<br />
<br />
== nxPascal ==<br />
<br />
'''Website:''' [[nxPascal]]<br />
<br />
Not as famous as the others and it lacks of documentation. But it has potential. Read more in the Forums:<br />
https://forum.lazarus.freepascal.org/index.php/topic,35313.msg253463.html#msg253463<br />
<br />
== BGRABitmap or TCanvas ==<br />
<br />
If you want to create simple 2D games like Tetris, Snake, Pong, Arkanoid, TCanvas and BGRABitmap is totally capable of doing it. I wrote a 2D scrolling spaceship game using only TCanvas line drawing and it's working well. I then tried to switch the graphics library to use BGRABitmap, it works. Any TCanvas program can easily switch to using BGRABitmap, which offers more graphics features. Read more:<br />
<br />
* https://lazarus-ccr.sourceforge.io/docs/lcl/graphics/tcanvas.html<br />
* [[TCanvas]]<br />
* [[BGRABitmap]]<br />
* [[BGRABitmap_tutorial]]<br />
<br />
{| class="wikitable"<br />
!Advantages<br />
!Disadvantages<br />
|-<br />
|Multi platform support: Windows, Linux. macOS<br />
|-<br />
|Relatively simple and easy to learn than the others<br />
|They handle graphics only<br />
|-<br />
|BGRABitmap can draw simple 3D objects<br />
|Not suitable for graphics intensive games<br />
|-<br />
|Zero deployment setup<br />
|Requires good programming skills in Pascal<br />
|}<br />
<br />
== LAMW + jCanvasES2 ==<br />
<br />
I am now exploring the possibility of creating Android games using LAMW + jCanvasES2. I already managed to create my Windows/Linux 2D graphics engine using OpenGL. Maybe I'm too ambitious, I want it to also run on Android. LAMW + jCanvasES2 is the combination to make Lazarus produce Android binaries that allow us to use OpenGL ES2. Unfortunately, it crashes too often. I'm examining it, hope I can fix the crashes.<br />
<br />
== Acknowledgement ==<br />
<br />
This content was extracted from [https://forum.lazarus.freepascal.org/index.php?action=profile;u=39078 Handoko's] post in the [https://forum.lazarus.freepascal.org/index.php/topic,44855.msg315698.html#msg315698 Games sub-forum]. Some minor grammar edits have been made and formatting added.<br />
<br />
[[Category:Games]]<br />
[[Category:Game Development]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Choosing_a_Game_Engine&diff=130615Choosing a Game Engine2020-01-15T11:32:05Z<p>Ñuño Martínez: /* Allegro.pas */</p>
<hr />
<div>==ZGameEditor ==<br />
<br />
'''Website:''' http://www.zgameeditor.org/<br />
<br />
This game builder is created using Delphi and its game scripting language is very similar to Pascal (a simplified version of Pascal). Pascal lovers should check this one first. I managed to create a simple vertical scrolling spaceship game in the first few hours of my trying it.<br />
<br />
{| class="wikitable"<br />
!Advantages<br />
!Disadvantages<br />
|-<br />
|Multi platform support: Windows, Linux, macOS, Android<br />
|The editor runs on Windows only<br />
|-<br />
|Can create both 2D and 3D games<br />
|Requires some programming skills<br />
|-<br />
|Can create Windows screensavers<br />
|-<br />
|Easy to use built-in audio synthesizer<br />
|-<br />
|The generated stand-alone executable is very small<br />
|-<br />
|Its scripting language is very similar to Pascal<br />
|}<br />
<br />
== Castle Game Engine ==<br />
<br />
'''Website:''' https://castle-engine.io/<br />
<br />
It's probably the most powerful Pascal game engine. It is a game framework not a game builder, you have to integrate it into your Lazarus/FPC to use it. Learning the Castle Game Engine is much harder than ZGameEditor and the resulting binaries are much bigger too. I wish I had more time so I could explore or even use it. Castle Game Engine is really an interesting project.<br />
<br />
{| class="wikitable"<br />
!Advantages<br />
!Disadvantages<br />
|-<br />
|Multi platform support: Windows, Linux, FreeBSD, macOS, Android, iOS, Nintendo Switch<br />
|Requires good programming skills in Pascal<br />
|-<br />
|Import models form many formats, graphics effects, physics, AI, etc<br />
|It is a game framework, learning a game framework is hard<br />
|-<br />
|Can create both 2D and 3D games<br />
|-<br />
|Good demos and documentation<br />
|}<br />
<br />
== GLScene ==<br />
<br />
'''Website:''' http://glscene.sourceforge.net/wikka/<br />
<br />
This 3D graphics library is very powerful. I thought I'd build some cool 3D games and applications using it. Unfortunately their development focus is mainly on Windows. I monitored it for years but there was not much progress for Linux. It didn't run well on my Linux computer so I abandoned it.<br />
<br />
{| class="wikitable"<br />
!Advantages<br />
!Disadvantages<br />
|-<br />
|Multi platform support: Windows, Linux, macOS<br />
|Focus is mainly on Windows<br />
|-<br />
|Full featured 3D graphics engine<br />
|Does not run well on Linux<br />
|-<br />
|Good demos<br />
|Where is the documentation?<br />
|-<br />
|Zero deployment setup<br />
|Requires good programming skills in Pascal<br />
|}<br />
<br />
== Allegro.pas ==<br />
<br />
'''Website:''' http://allegro-pas.sourceforge.net/<br />
<br />
Allegro.pas is a wrapper for the Allegro game framework. Learning a game framework is hard, luckily the official website of Allegro provides detailed documentation so learning it is relatively easy. After only a few days learning it, I managed to create my demo game Furious Paladin.<br />
<br />
Furious Paladin's binary: http://graphicslearning.com/furious-paladin-tutorials/<br />
<br />
And this is the source code: https://sourceforge.net/p/allegro-pas/code/HEAD/tree/TRUNK/demos/<br />
<br />
{| class="wikitable"<br />
!Advantages<br />
!Disadvantages<br />
|-<br />
|Multi platform support: Windows, Linux, macOS, iPhone, Android<br />
|Relies on OpenGL or Direct3D to create full 3D games<br />
|-<br />
|Audio, font, video playback, some 3D basic drawing, joystick, keyboard, physics<br />
|How do you use Allegro.pas to create Android games?<br />
|-<br />
|Detailed documentation<br />
|Requires good programming skills in Pascal<br />
|}<br />
<br />
== Simple Directmedia Library ==<br />
<br />
'''Website:''' [[FPC_and_SDL|FPC and SDL]]<br />
<br />
I never really tried it. But I know a kid (who was a member here) created a simple 2D horizontal scrolling game using FPC + SDL only weeks of learning it. Read more about [[FPC_and_SDL|SDL here]]<br />
<br />
== nxPascal ==<br />
<br />
'''Website:''' [[nxPascal]]<br />
<br />
Not as famous as the others and it lacks of documentation. But it has potential. Read more in the Forums:<br />
https://forum.lazarus.freepascal.org/index.php/topic,35313.msg253463.html#msg253463<br />
<br />
== BGRABitmap or TCanvas ==<br />
<br />
If you want to create simple 2D games like Tetris, Snake, Pong, Arkanoid, TCanvas and BGRABitmap is totally capable of doing it. I wrote a 2D scrolling spaceship game using only TCanvas line drawing and it's working well. I then tried to switch the graphics library to use BGRABitmap, it works. Any TCanvas program can easily switch to using BGRABitmap, which offers more graphics features. Read more:<br />
<br />
* https://lazarus-ccr.sourceforge.io/docs/lcl/graphics/tcanvas.html<br />
* [[TCanvas]]<br />
* [[BGRABitmap]]<br />
* [[BGRABitmap_tutorial]]<br />
<br />
{| class="wikitable"<br />
!Advantages<br />
!Disadvantages<br />
|-<br />
|Multi platform support: Windows, Linux. macOS<br />
|-<br />
|Relatively simple and easy to learn than the others<br />
|They handle graphics only<br />
|-<br />
|BGRABitmap can draw simple 3D objects<br />
|Not suitable for graphics intensive games<br />
|-<br />
|Zero deployment setup<br />
|Requires good programming skills in Pascal<br />
|}<br />
<br />
== LAMW + jCanvasES2 ==<br />
<br />
I am now exploring the possibility of creating Android games using LAMW + jCanvasES2. I already managed to create my Windows/Linux 2D graphics engine using OpenGL. Maybe I'm too ambitious, I want it to also run on Android. LAMW + jCanvasES2 is the combination to make Lazarus produce Android binaries that allow us to use OpenGL ES2. Unfortunately, it crashes too often. I'm examining it, hope I can fix the crashes.<br />
<br />
== Acknowledgement ==<br />
<br />
This content was extracted from [https://forum.lazarus.freepascal.org/index.php?action=profile;u=39078 Handoko's] post in the [https://forum.lazarus.freepascal.org/index.php/topic,44855.msg315698.html#msg315698 Games sub-forum]. Some minor grammar edits have been made and formatting added.<br />
<br />
[[Category:Games]]<br />
[[Category:Game Development]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Talk:Projects_using_Lazarus/archive&diff=127022Talk:Projects using Lazarus/archive2019-09-09T10:36:23Z<p>Ñuño Martínez: </p>
<hr />
<div>== Merge with Application Gallery ==<br />
IMO the purpose of this page is now about the same as the Lazarus Application Gallery: a list of programs/project programmed with Lazarus including screenshots.<br />
<br />
I strongly suggest that these be merged into one page - Projects using Lazarus.<br />
<br />
Unless somebody objects, I'll put it on my to do list.<br />
<br />
Thanks,<br />
--[[User:BigChimp|BigChimp]] 08:41, 23 June 2014 (CEST)<br />
<br />
== Error while saving. ==<br />
<br />
Hi,<br />
<br />
Constantly an error occurs on any attempt to save the information on the page Projects_using_Lazarus.<br />
<br />
Error: "Spam protection filter. The text you wanted to save was blocked by the spam filter. This is probably caused by a link to a blacklisted external site." <br />
<br />
--[[User:Yershov|Yershov]] ([[User talk:Yershov|talk]]) 17:58, 11 April 2017 (CEST)<br />
<br />
<br />
: Try ask at forum. May be this will help: http://forum.lazarus.freepascal.org/index.php/topic,33910.0.html<br />
[[User:FTurtle|FTurtle]] ([[User talk:FTurtle|talk]]) 22:55, 11 April 2017 (CEST)<br />
<br />
<br />
Thanks, FTurtle! Your link above has helped essentially! I suppose the following information will be helpful. <br />
<br />
The use in the page the combination of the words "p_h_o_n_e" and "n_u_m_b_e_r" (at least sequentially) leads to the spam error mentioned above. The error is caused by the description of the project "TreePad Lite for Linux" where this word combination is used as a feature declaration. To achieve the positive result the change of the description was possible only. If my editing of the "TreePad Lite for Linux" cannot be accepted by author please make the proper one minding the prohibited words combination.<br />
<br />
--[[User:Yershov|Yershov]] ([[User talk:Yershov|talk]]) 14:19, 26 April 2017 (CEST)<br />
<br />
== Suspicious edition ==<br />
<br />
User [[User:Matthius]] has done some suspicious edition. We disused at forum here: https://forum.lazarus.freepascal.org/index.php?topic=46664.<br />
<br />
--[[User:Ñuño Martínez|Ñuño Martínez]] ([[User talk:Ñuño Martínez|talk]]) 12:36, 9 September 2019 (CEST)</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=User_talk:Matthius&diff=127021User talk:Matthius2019-09-09T10:36:01Z<p>Ñuño Martínez: Created page with "== Suspicious edition == Hi, You did some edition at Projects using Lazarus that has been removed. See discussion. --~~~~"</p>
<hr />
<div>== Suspicious edition ==<br />
<br />
Hi,<br />
<br />
You did some edition at [[Projects using Lazarus]] that has been removed. See discussion.<br />
<br />
--[[User:Ñuño Martínez|Ñuño Martínez]] ([[User talk:Ñuño Martínez|talk]]) 12:36, 9 September 2019 (CEST)</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Projects_using_Free_Pascal&diff=126944Projects using Free Pascal2019-09-06T19:35:22Z<p>Ñuño Martínez: Removing personal comments (?)</p>
<hr />
<div>{{Projects using Lazarus}}<br />
<br />
==See also==<br />
<br />
* [[Lazarus Application Gallery]] <br />
* [[Components and Code examples]]<br />
* [[FPC_Applications/Projects_Gallery]]<br />
* [[Operating Systems written in FPC]]<br />
* [[Using the Lazarus-ccr SVN repository]]<br />
* [[Case Studies]]<br />
* [https://lazarusccr.github.io/apps/ Lazarus Apps Showcase on GitHub]<br />
<br />
== Components and Libraries ==<br />
<br />
=== 5dpo ===<br />
[[5dpo]] Component Library is a set of components developed by the [http://www.fe.up.pt/~robosoc 5dpo Robotic Soccer Team]. It provides a visual serial port (TSdpoSerial) implementation of [[Projects_using_Lazarus#Synaser|Synaser]], an IEEE1394 camera (TSdpoVideo1394) component, an [http://linux-uvc.berlios.de/ UVC video] driver component (TSdpoVideo4L2) for webcams, a Gtk fast painting form (TSdpoFastForm) and a Joystick (TSdpoJoystick) component.<br />
<br />
=== ACBr ===<br />
[https://sourceforge.net/projects/acbr/ Project ACBr] Suite Components facing Commercial Automation. Working with ECF, TEF, NF-e, CT-e, MDF-e, SPED, NFS-e targeted to Brazilian Software. [http://www.projetoacbr.com.br/forum/index.php Fórum ACBr]. GNU Library or Lesser General Public License version 2.0 (LGPLv2).<br />
<br />
=== Alcinoe ===<br />
<br />
Alcinoe is a set of components written in assembly language x86.<br />
[https://liberlog.fr/Alcinoe Here is Alcinoe for Lazarus].<br />
<br />
=== Audorra ===<br />
[http://audorra.sourceforge.net Audorra] is a digital audio library for Delphi and Free Pascal. Using a flexible plugin architecture, it allows you to exchange the audio backend (e.g. WaveOut, OpenAL), add protocol classes (e.g. file, http) and decoders. <br />
<br />
=== BrasLib ===<br />
[http://br.groups.yahoo.com/group/BrasLib-devel/ BrasLib] is a new report component for Lazarus under development by Brazilian programmers. <br />
<br />
=== Brook Framework ===<br />
<br />
[[Brook Framework]] is the Free Pascal framework for web applications. It's complete: simple actions or configurable actions for database access, advanced routing features, wizard for Lazarus, support for i18n, high compatibility with [[JSON]] structures, easy and elegant REST implementation, plugins etc...<br />
<br />
=== Cloppy ===<br />
[https://github.com/MFernstrom/cloppy Cloppy on GitHub] is a minimalist clipboard manager for Windows and OSX, letting you easily re-use previous copy/pastes.<br />
<br />
=== CUPS ===<br />
[http://cups4lazarus.sourceforge.net/ CUPS for Lazarus] is bindings for Pascal to use the CUPS (Common UNIX Printing System) libraries. With some dialogs for select printer, setup printer, setup printer jobs.<br />
<br />
{{Note|This package is deprecated, Cups for Lazarus is now integrated in Printers4Lazarus package which is included with Lazarus. --[[User:Jesusrmx|jesusrmx]] 2006 }}<br />
<br />
=== DXScene ===<br />
<br />
[http://www.ksdev.com DXScene] is a 3D hardware accelerated graphics library. It increases the speed of the development of all graphical applications. It provides: a 3D and 2D graphical editor integrated in IDE, 3D shapes and transformation, 2D graphical objects, simplify animation, advanced windows and controls, maximum performance, skinning engine, bitmap effects, 3DS file converter. DXScene can be used as development tool for standard, multimedia, SCADA, GIS, CAD and KIOSK applications. It support Windows, Mac OS X and Linux. For more info see [http://www.ksdev.com www.ksdev.com].<br />
<br />
=== Extended Man/XML Frames ===<br />
<br />
[http://www.extended.in Extended] components are data and ini customized components. It contains relationships management components to use with your data software and for [https://bitbucket.org/matthieugiroux/virtualdbtreeex-interface-with-checks-entirely-created-with/src VirtualDbTreeEx]. There are also invisible components for pictures' translation, extracting and copying. There is also an update component with its ini creating project. With Extended you can create reports quickly from data, Virtual Trees or tdbgrids.<br />
<br />
Extended uses now GPL license.<br />
<br />
[https://bitbucket.org/matthieugiroux/manframes-rad-rich-management-framework-with-main-and-child Man Frames] are management components for tables. Some data or property forms can manage some kinds of Datasets. It contains an old asynchronous data pull on customform and groupview. A prepared software with user management and functions management lets you [http://en.wikipedia.org/wiki/Model-driven_engineering#Tools quickly create a management software with an engine, without creating source]. It depends on [https://bitbucket.org/matthieugiroux/extended Extended] components. <br />
<br />
[https://bitbucket.org/matthieugiroux/very-rapid-applications-management-development-framework XML Frames], a [http://www.vrad.fr VRAD] Framework, lets you create a management software from [https://fr.wikipedia.org/wiki/Business_Process_Model_and_Notation BPMN 2 XML] files. On Windows, Linux and Mac OSX. Free components are now with GPL license.<br />
<br />
[https://bitbucket.org/matthieugiroux/very-rapid-applications-management-development-framework/downloads/demos-windows.zip Windows Demo] and [https://bitbucket.org/matthieugiroux/very-rapid-applications-management-development-framework/downloads/demos-firebird.tar.gz Other OSes Demos].<br />
<br />
[https://sourceforge.net/projects/cai/ MDA Extension]<br />
<br />
[[File:2010-10_extended.png|380px]][[File:2010-10 xmlframes.png|350px]]<br />
<br />
[[ATExtendedDialogs|More]]<br />
<br />
[https://bitbucket.org/matthieugiroux/extretri/downloads/vpascal.tar.7z Fully 64 bits] ([https://bitbucket.org/matthieugiroux/extretri/downloads/HERD.ar Other Languages])<br />
<br />
[https://linuxfr.org/news/developpement-tres-rapide-d-applications-libres-extended-man-xml-frames Extended Man/XML Frames can engage France] to free BPM Compiled so Robotic World Software when France will get its own Public Money.<br />
<br />
=== ExtPascal ===<br />
<br />
Old ExtPascal can be found [http://extpascal.com here], [https://github.com/farshadmohajeri/extpascal here] and [https://bitbucket.org/matthieugiroux/extpascal/downloads/ here].<br />
<br />
=== Eye-Candy Controls ===<br />
[[Eye-Candy Controls]] - set of visual controls written for Lazarus. More than twenty advanced controls.<br />
<br />
=== FlashEngine ===<br />
[http://www.ksdev.com FlashEngine] is a set of components for Delphi, C++ Builder and Lazarus which add extra features to Adobe Flash (ActiveX or Netscape plugin)- such as loading from any sources, grab real 32-RGBA frames, real transparency playing. It supports Windows and Mac OS X. For more info see [http://www.ksdev.com www.ksdev.com].<br />
<br />
=== Fortes Report ===<br />
[https://bitbucket.org/matthieugiroux/fortes/ Fortes Report Memory Repair] for Lazarus is [https://bitbucket.org/matthieugiroux/fortes/downloads/ here].<br />
<br />
=== fpctwit ===<br />
[https://bitbucket.org/reiniero/fpctwit fpctwit] is a plurk, Twitter and OAuthv1 library with example programs (console and GUI). It's a framework that implements the [http://en.wikipedia.org/wiki/Oauth Oauthv1] authorization protocol.<br />
<br />
The OAuth library (and the Twitter and plurk libraries using that) uses the Synapse network units for easy communication, but can easily be adapted for other network layers. It supports OAuthv1 secure authentication and SSL/TLS encryption.<br />
<br />
The library uses modified fpJSON units to allow getting UTF8 data out of the JSON data with Tweets returned from Twitter (for FPC trunk, the FPC units are used as Michael Van Canneyt added support for UTF8 in trunk).<br />
<br />
Functionality includes: getting tweets using the Search API, tweeting, getting username info, authenticating using PIN/OOB or preset credentials (consumerkey+secret,authtoken+secret).<br />
<br />
The twitter console demo, fpctwit, also demonstrates the Streaming API to process and show Tweets and deletion messages.<br />
<br />
There is a plurk console demo that demonstrates the functionality in the plurk library.<br />
<br />
The plurk and Twitter libraries use the included OAuth1 unit that provides OAuth1 authentication. This authentication mechanism is also used for other service providers. <br />
<br />
The Lazarus demo application, imaginatively named fpctwitGUI, is shown in the Lazarus Application Gallery at [[Lazarus_Application_Gallery#fpctwitGUI|fpctwitGUI]]<br />
<br />
=== Greyhound ===<br />
[https://github.com/mdbs99/Greyhound Greyhound] is a tiny ORM-ish for Free Pascal. It is fast, clean and simple to use.<br />
<br />
=== GTK2forpascal ===<br />
Mattias Gaertner's [http://sourceforge.net/projects/gtk2forpascal/ gtk2forpascal project] is developing the bindings for pascal to use the gtk2 libraries (gimp tool kit). Supported Languages are [[Free Pascal]] and Kylix and the bindings are intended to work under Linux, FreeBSD and Win32. These bindings are now also part of the packages supplied with fpc.<br />
<br />
=== Habari ActiveMQ Client / Habari OpenMQ Client ===<br />
[https://www.habarisoft.com/ Habari ActiveMQ Client] is a library (and components) for Delphi(tm) 6 to 2009 and Free Pascal which provides easy access to [http://activemq.apache.org/ Apache ActiveMQ], the most popular and powerful open source Message Broker.<br />
With Habari ActiveMQ Client, applications can connect to Apache ActiveMQ servers, subscribe to queues and topics, send and receive messages and objects, and work with transactions. The library follows the specification of the [http://en.wikipedia.org/wiki/Java_Message_Service JMS API] for Message Oriented Middleware. The communication layer supports Synapse and Internet Direct (Indy) for Lazarus.<br />
<br />
[https://www.habarisoft.com/ Habari OpenMQ Client] is a library for Delphi(tm) 6 to 2009 and Free Pascal which provides easy access to the [https://mq.dev.java.net/about.html Open Message Queue (OpenMQ)] Message Broker, a very compact, fast and easy to use message queue system. OpenMQ is part of the GlassFish(tm) application server for the Java(tm) platform. The library follows the specification of the [http://en.wikipedia.org/wiki/Java_Message_Service JMS] API for Message Oriented Middleware. The communication layer supports Synapse and Internet Direct (Indy) for Lazarus.<br />
<br />
=== Indy for lazarus ===<br />
Begun only a short while ago, this project has as an ambition to port the 119 Indy components from Delphi/Kylix to FPC/Lazarus.<br />
See [http://indy4lazarus.sourceforge.net/ Indy for Lazarus project] and a <br />
[http://indy4lazarus.sourceforge.net/images/img1_1.jpg screenshot].<br />
<br />
=== Internet Tools ===<br />
The [http://www.benibela.de/sources_en.html#internettools Internet Tools] are a set of units, which should contain everything you need to interact with the www. Includes html parsers with a sax and dom-like interfaces, an XPath 2 / XQuery interpreter, CSS 3 selectors, pattern-matching xml templates, and a http/s connection wrapper around synapse/wininet. Compare the [[Internet Tools | examples here]].<br />
<br />
=== KControls ===<br />
[[KControls]] is a set of powerful components for Delphi and Lazarus. Main components are: KGrid/KDbGrid - grid components, KMemo - rich edit component, KHexEditor - hexadecimal editor. Freeware with source.<br />
<br />
=== LazAutoUpdate ===<br />
[[LazAutoUpdater|Laz Auto Update]] is a visual drop-in component for the Lazarus/FPC IDE to make updating your application easier and simpler.<br />
It is aimed at Lazarus Windows developers who host their project in SourceForge.<br />
*Drop-in the component, set one property (your sourceforge project name) and call these simple methods:<br />
If LazAutoUpdate.NewVersionAvailable then...<br />
LazAutoUpdate.DownloadNewVersion<br />
LazAutoUpdate.UpdateToNewVersion<br />
*..and in your form.activate code:<br />
LazAutoUpdate.ShowWhatsNewIfAvailable<br />
*You (the developer) have plenty of control over how the component behaves, yet it is simple to use.<br />
*End-users see the updating process as simple and transparent<br />
<br />
=== Lazarus xPL Libraries ===<br />
[http://glh33.free.fr glh33 Home Automation] is a complete set of tools and foundation library developped in Lazarus for portability purpose under Linux and Windows. xPL Hub, sender, logger, weather listener, pascalscript.... Source code available on the xPL project's google code repository.<br />
<br />
=== LazReport ===<br />
[[LazReport Documentation|LazReport]] is a group of components to add reporting capabilities to applications, it uses a visual designer to create banded reports and includes a report engine with interpreter to run user scripts and a report previewer, report designer can be invoked at runtime.<br />
<br />
LazReport is based on FreeReport 2.32 and thanks to Fast Reports Inc. it's available under modified LGPL, the same license as the Lazarus LCL.<br />
<br />
{{Note| Since Lazarus 0.9.23 revision 11950, LazReport source code is<br />
already included in Lazarus/components/lazreport directory. }}<br />
<br />
===movControl===<br />
movControl allows customizing the GUI (the position and dimension of GUI controls), during execution, by final users. The programer, component user, must place it on the form and make some settings with the Object Inspector. At the application execution, the end user will be able to move or re-size the components of this sheet as desired. [http://www.meddeb.net/movcontrol movControl web site].<br />
<br />
=== PasLibVLC (old) ===<br />
<br />
[https://bitbucket.org/matthieugiroux/paslibvlc Here is old PasLibVLC].<br />
<br />
=== PUMA Repository ===<br />
The [[PUMA Repository]] (Pascal Units for Medical Applications) is a collection of Pascal units for health informatics. It is compatible with a range of Pascal dialects including Lazarus / Free Pascal, Delphi and winsoft Pocket Studio.<br />
<br />
=== Synapse ===<br />
The [http://www.ararat.cz/synapse/ Synapse Project] by Lukas Gebauer provides a serial port and synchronous TCP/IP Library.<br />
<br />
=== Synaser ===<br />
Library for serial communication (Linux, Windows) from the author of Synapse.<br />
homepage: http://www.ararat.cz/synapse/ (same as Synapse)<br />
<br />
=== The Icebox ===<br />
A lot of useful Lazarus/FPC related information and components can be found on Tony Maro's [https://web.archive.org/web/20070717061637/http://tony.maro.net/ Icebox site] (archived link). His TMPack [https://web.archive.org/web/20031122081638/http://tony.maro.net/files/tmpack.tgz (archived download link)], Checkbook Tracker and RDP Frontend application [https://web.archive.org/web/20040110040003/http://tony.maro.net:80/files/rdp.tgz (archived download link)] are all excellent examples of the quality components and applications that Lazarus is capable of producing.<br />
<br />
=== The Light Pascal Toolkit (LPTK) ===<br />
The goal of the [http://lptk.sourceforge.net/ Light Pascal Toolkit] Project is to create a free object pascal toolkit for linux and windows GUI development. It looks pretty interesting... check out the [http://lptk.sourceforge.net/screenshots.php screenshots]!<br />
<br />
=== TRURL RPN Engine ===<br />
The RPN Engine of the [http://trurl.sf.net TRURL project] is a free library that may be used as a foundation for virtual calculators with Reversed Polish Notation (RPN). Precompiled demo applications are available, see [[Lazarus Application Gallery#TRURL|Lazarus Application Gallery]].<br />
<br />
=== TTreeListView === <br />
The [http://www.benibela.de/components_en.html#treelistview tree list view] is the combination of a TTreeView and a TListView, i.e. a tree with columns. It is custom drawn and therefore completely platform independent. (Windows, Linux gtk2, 32/64bit. Didn't test mac/qt through)<br />
<br />
=== VirtualDBTreeEx ===<br />
[https://liberlog.fr/Virtual-DB-Tree-Ex VirtualDBTreeEx] is a selection interface entirely made with data.<br />
<br />
=== VGScene ===<br />
[http://www.ksdev.com VGScene] speeds the development of all graphical application, providing: a graphical editor integrated in IDE, graphical objects, simplify animation, advanced windows and controls, maximum performance, skinning engine, bitmap effects. VGScene can be used as development tools for standard, multimedia, SCADA, GIS, CAD and KIOSK applications. Support Windows, Mac OS X and Linux. For more info see [http://www.ksdev.com www.ksdev.com].<br />
<br />
=== ZenGL ===<br />
[http://www.zengl.org ZenGL] is an open source library with tools, which helps to develop games and interactive application for different platforms.<br />
<br />
== Multimedia ==<br />
<br />
=== Audio X ===<br />
[http://www.ullihome.de Audio X] is a media management tool, that organizes and sorts your media without a database so everything is ever actual. A lot of audio formats are useable directly but you can also organize your LP or CD collection with it, it stores the data in XML Files so they are viewable also with a webbrowser ... <br />
<br />
=== Cactus Jukebox ===<br />
[http://www.cactusjukebox.org Cactus] is an audio player that comes with a database to organize your mp3 file collection. It is currently available for linux and win32. <br />
<br />
Since version 0.3 it supports managing and uploading files on a mobile player.<br />
<br />
===Copy And Images Traduce===<br />
<br />
It is a software that copy files and transform pictures renamed by year, so month. With that, you can create a centralized show in one directory.<br />
<br />
[https://bitbucket.org/matthieugiroux/extended/downloads/CopyAndImages32.zip Windows 32 version] or [https://bitbucket.org/matthieugiroux/extended/downloads/CopyAndImages64.zip 64].<br />
<br />
[https://bitbucket.org/matthieugiroux/extended/downloads/CopyAndImages32.tar.gz Linux 32 version] or [https://bitbucket.org/matthieugiroux/extended/downloads/CopyAndImages64.tar.gz 64].<br />
<br />
[https://bitbucket.org/matthieugiroux/extended/src/d849620044c32c92d100db2f478ba208e064883d/demos/TraduceCopy/?at=default Sources]<br />
<br />
=== CPickSniff ===<br />
[http://sourceforge.net/projects/cpicksniff2/ CPickSniff] is a multiplatform color picker.<br />
<br />
=== gdvdslides ===<br />
[http://rimrocksoftware.com/node/2 gdvdslides] is a Linux graphical user interface for the command line program dvd-slideshow, which allows you to create a video from a set of video clips, JPEG image files and audio files. gdvdslides supports slide transitions, title slides, background images and multiple audio tracks. It also allows cropping, Ken Burns effect and scrolling slide effects. gdvdslides comes with complete documentation and tutorial.<br />
<br />
=== GLScript ===<br />
[http://glscript.sourceforge.net GLScript] is a simple, free, open-source scripting language for developing 3D games and animations. (GL stands for Graphics Library, I.E. Graphics Library Scripting) There are currently plans to have a code-converter to make scripts compilable with lazarus/fpc and other languages to make a standalone executable from your creation.<br />
<br />
=== Greenfish Icon Editor Pro ===<br />
[http://greenfishsoftware.blogspot.hu/2012/07/greenfish-icon-editor-pro.html Greenfish Icon Editor Pro] is an open source pixelgraphic editor for creating icons, cursors, animations, pixel art, etc.<br />
<br />
=== hgdc-x ===<br />
hgdc-x is a cross-platform desktop client for the Hackathon Günther Daemon music player project. It's Github repository can be found at (https://github.com/tristan2468/hgdc-x). It requires a correctly installed and configured hgd server. The official github repository for the server can be found at (https://github.com/vext01/hgd).<br />
<br />
=== KSP Sound Player ===<br />
[https://code.google.com/p/kspnew/ KSP] is an easy in use yet powerful audio player supporting multiple file formats and features like dynamic playlists, bookmarking or network streaming. It also used to be hosted on [http://ksplayer.com this site].<br />
<br />
=== LazAudioPlayer ===<br />
[https://sourceforge.net/projects/lazaudioplayer/ LazAudioPlayer] is a simple mp3 player.<br />
<br />
[[Image:lazaudioplayer.jpeg|350px]]<br />
<br />
Features:<br />
<br />
* logarithmic volume adjustment with loudness<br />
* professional 31 band graphic equalizer<br />
* stereo width control<br />
* echo volume control<br />
* playlist viewer<br />
* user defined equalizer settings<br />
* FFT display<br />
<br />
=== LazPaint ===<br />
[http://sourceforge.net/projects/lazpaint/ LazPaint] is an image manipulation application.<br />
<br />
=== LazPlayer ===<br />
[https://sourceforge.net/projects/lazplayer/ LazPlayer] is a simple mp3 player.<br />
<br />
[[Image:lazplayer.PNG]]<br />
<br />
Features:<br />
<br />
* logarithmic volume adjustment with loudness<br />
* 10 band graphic equalizer<br />
* stereo width control<br />
* playlist viewer<br />
* loop ans shuffle mode <br />
* intelligent playing favorite tracks<br />
<br />
=== miXimum ===<br />
[https://sites.google.com/site/fiensprototyping miXimum] is the DJ's best friend.<br />
miXimum plays and mixes wav, mp*, ogg and mod audio files.<br />
On WINDOWS, LINUX and MAC OSX.<br />
<br />
[[File:miximum1.jpg]]<br />
<br />
=== Music Player by Freebyte.com ===<br />
Music Player by Freebyte.com is a freeware no-frills music player designed for Linux. It supports MP3, Wav, OGG and AIFF files. Created by [http://www.freebyte.com Freebyte.com] using Lazarus, Free Pascal and the Bass audio library on Ubuntu 10.x<br />
<br />
Program home page: http://www.freebyte.com/music_player/<br />
<br />
=== OggBase ===<br />
[http://sourceforge.net/projects/oggbase/ OggBase] is a Free Pascal/Lazarus program for managing your Ogg-Vorbis files in a Database.<br />
<br />
=== Pi Vision ===<br />
[https://github.com/local-vision/Pi-Vision Pi Vision] is a graphical user interface for the [[Lazarus on Raspberry Pi|Raspberry Pi]] camera module.<br />
<br />
=== PicturesToExe Mac OS X Slideshows ===<br />
[http://www.wnsoft.com WnSoft] is using Lazarus IDE to develop FPC-based slideshow viewer for Mac OS X, and planned PicturesToExe for OSX.<br />
<br />
=== Rename My TV Series 2 ===<br />
[https://www.tweaking4all.com/home-theatre/rename-my-tv-series-v2/ Rename My TV Series (RMTV)] is a free application to assist in renaming TV series episodes, based on data from [https://www.thetvdb.com/ TheTVDB]. This is the successor to "Name My TV series".<br />
<br />
The application is available for Windows (32bit), Linux (64bit) and macOS (64bit and signed). For Linux and macOS, the so called Dark Theme is supported.<br />
<br />
A wide range of video formats is supported for resolution detection ([https://ffmpeg.org/ ffprobe]) and file renaming. Additional files like subtitles, posters, series and episode information (and more) are supported as well - which can be downloaded automatically as well (with the exception of subtitles).<br />
<br />
<br />
[[Image:renamemytvseries-windows-linux-macos.png|800px|center]]<br />
<br />
=== SubzBor ===<br />
[https://github.com/m-audio91/SubzBor SubzBor] is a free and open source Linux and Windows utility to cut subtitles. basically it's a GUI for FFmpeg and MKVToolNix but support for internal subtitle readers and writers are adding. supports srt ass ssa vtt smi stl sub sup and more. Source code available under GNU GPL 3.0 license.<br />
<br />
=== Tonopol-Trainer ===<br />
[http://sourceforge.net/projects/tonopoltrainer/files/ sourceforge] is an music-analyzer and trainer for musicans like best-practice, but many more functions. Source available. <br />
<br />
[[image:tptrainer.png|800px]]<br />
<br />
=== Web Player Creator ===<br />
<br />
Static HTML5 and Flash auto creating structure with support of OGG, MP3, WMA. You can add text in each directory. You can also delete structure or converted files if you want.<br />
<br />
[http://www.devenircreatif.com/Music/Wilhelm%20FURTW%C3%84NGLER/index.htm Démo]<br />
<br />
[https://bitbucket.org/matthieugiroux/lazarus-html-5-static-web-audio-player-creator-for-best/downloads Download]<br />
<br />
=== WinFF ===<br />
[http://www.winff.org WinFF] is a GUI for the command line video converter, FFMPEG. It will convert most any video file that FFmpeg will convert. WinFF does multiple files in multiple formats at one time. You can for example convert mpeg's, flv's, and mov's, all into avi's all at once. WinFF is available for Windows 95, 98 , ME, NT, XP, VISTA, and Debian, Ubuntu, Redhat based GNU/Linux distributions.<br />
<br />
=== Lpro ===<br />
[https://xn--90abhbolvbbfgb9aje4m.xn--p1ai/%D1%83%D1%82%D0%B8%D0%BB%D0%B8%D1%82%D1%8B/%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0/lpro-%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0-%D0%BB%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D0%B9-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC.html Lpro] - Program for checking the licenses of installed programs. It displays the license, distribution conditions, approximate cost (if the program is paid) and a freely available replacement (if any). In the English version, some functions are disabled. This is due to the fact that English is not my native language. Further development of the English version is in question. If there is a great interest in the English version, and there will be assistants, then the English version is likely to be updated regularly. Project for [https://sourceforge.net/projects/lpro-english-version/ sourceforge].<br />
<br />
== Games ==<br />
'''Main article''': [[Games]]<br />
=== 30 Seconds Free Software ===<br />
[http://code.google.com/p/30seconds 30 Seconds] is a software package that creates cards for the [http://en.wikipedia.org/wiki/30_Seconds_(game) 30 Seconds] board game. It also has a playing interface if you want to play on your laptop / PC (and hopefully soon WinCE devices). <br />
<br />
=== Bomber Kat ===<br />
Commercial game developed with FPC for iOS (both arm and arm64 platforms are supported). <br />
<br />
[[ZenGL]] based. Lazarus has been used as a primary IDE.<br />
<br />
Link: [https://itunes.apple.com/app/bomber-kat/id1109783786?ls=1&mt=8 App Store]<br />
<br />
=== Castle Game Engine ===<br />
[[Castle Game Engine]] ([http://castle-engine.sourceforge.net/ project page]) is a 3D open-source game engine. The engine was developed from the beginning using Free Pascal (we have also Lazarus components) in nice and clean ObjectPascal code. We support many 3D model formats, including [http://castle-engine.sourceforge.net/vrml_x3d.php VRML/X3D], Collada, 3DS and many others. Tools and games using the engine include: <br />
* [http://castle-engine.sourceforge.net/view3dscene.php view3dscene - 3D model viewer, VRML/X3D browser], <br />
* [http://castle-engine.sourceforge.net/castle.php The Castle - FPS game in a dark fantasy world], <br />
* [http://castle-engine.sourceforge.net/darkest_before_dawn.php Darkest Before the Dawn - small scary 3D game for standalone and Android (also on Google Play)]<br />
<br />
=== Daring Apprentice ===<br />
[http://daringapprentice.wikispaces.com Daring Apprentice] is a 3d [http://www.wizards.com/magic/ Magic: The Gathering] tabletop. It uses GLScene, and lNet.<br />
<br />
=== Dreams of a Geisha ===<br />
Take a journey through the magical and wonderful world of Geisha. Help Ichisumi in this incredible adventure to reopen the temples of Geisha and restore a world of beauty and passion. Dive into this engaging Match 3 game with beautiful scenery and relaxing music. Overcome obstacles, collect puzzle pieces, and be prepared to solve challenging puzzles in [http://www.dreamsofageisha.com Dreams of a Geisha]!<br />
* Fantastic gameplay<br />
* Exciting action<br />
* Restore a wonderful world!<br />
<br />
Powered by Lazarus FPC, [http://www.zengl.org/ ZenGL], [http://www.phoenixlib.net/ PhoenixLib], [http://www.lua.org/ LUA] and [http://www.codeandweb.com/texturepacker TexturePacker].<br />
<br />
[[File:Dreams of a Geisha - Screenshot 1.jpg|border|270px]]<br />
[[File:Dreams of a Geisha - Screenshot 2.jpg|border|270px]]<br />
[[File:Dreams of a Geisha - Screenshot 3.jpg|border|270px]]<br />
<br />
Demo Version Available for<br />
[http://www.bigfishgames.com/download-games/12814/dreams-of-a-geisha/index.html Windows]<br />
[http://www.bigfishgames.com/download-games/13045/mac/dreams-of-a-geisha/index.html Mac]<br />
[http://itunes.apple.com/us/app/dreams-of-a-geisha/id460180656?mt=8 iPhone]<br />
[http://itunes.apple.com/us/app/dreams-of-a-geisha-hd/id459801505?mt=8 iPad]<br />
<br />
Developed by [http://www.greensaucegames.com Green Sauce Games] and Released by [http://www.bigfishgames.com Big Fish Games]<br />
<br />
=== Game Maker ===<br />
[http://www.yoyogames.com/gamemaker Game Maker] allows you to make computer games using easy to learn drag-and-drop actions. You can create professional looking games within very little time. You can make games with backgrounds, animated graphics, music and sound effects, and even 3D games! And when you've become more experienced, there is a built-in programming language, which gives you the full flexibility of creating games with Game Maker. What is best, is the fact that Game Maker can be used free of charge.<br />
<br />
Originally written in Delphi, Lazarus/Free Pascal was used to port it from Win32 to Mac OS X and could be used in future for Linux and other platforms.<br />
<br />
=== Juegos Iniciales ===<br />
[http://juegosenlazaruscostarricenses.com Juegos Iniciales] are a small collection of 3D tutorial games in<br />
Lazarus, SDL and FreePascal. In 2016, there were only four games:<br />
[http://origamisiniciales.juegosenlazaruscostarricenses.com Origamis Iniciales], <br />
[http://bloquesiniciales.juegosenlazaruscostarricenses.com Bloques Iniciales], <br />
[http://nudosiniciales.juegosenlazaruscostarricenses.com Nudos Iniciales],<br />
[http://palitos-iniciales.juegosenlazaruscostarricenses.com Palitos Iniciales].<br />
<br />
=== LazGobang ===<br />
[http://www.fpccn.com/read.php?tid=1399 LazGobang] is a Gobang game, powered by lazarus. <br />
[http://www.fpccn.com/attachment/photo/Mon_1106/31_c35013086418153b1581bc663bece.png Screen Shot1], <br />
[http://www.fpccn.com/attachment/photo/Mon_1106/31_49501308641990eaa7dd3b88e869e.png Screen Shot2], <br />
[http://www.fpccn.com/attachment/photo/Mon_1106/31_f197130864204448e6b393130adb6.png Screen Shot3].<br />
<br />
[http://files.cnblogs.com/lazarus/LazGobang.rar Download it].<br />
<br />
=== LBP Level Logger ===<br />
[http://code.google.com/p/lbplevellogger/ LBP Level Logger] is a small system tray application designed to log [http://www.littlebigplanet.com/ LittleBigPlanet] level statistics from [http://lbp.me/ lbp.me] over time for graphing/visualisation. It is written in Free Pascal/Lazarus.<br />
[[File:lbplevellogger-screenshot.png]]<br />
<br />
=== Mundo Medieval 3D MMORPG ===<br />
Featuring a virtual world of more than 1.000.000 m2, plus caves and hell sceneries, 17 NPCs, 21 kinds of monsters, including 7 bosses, 58 different items and 100 quests, this is a really large game made with Freepascal/Lazarus. The project is 100% Free Software, both code and media are licensed under GPL. The project sites are [http://www.gamemundo.com/ http://www.gamemundo.com/] and [http://sourceforge.net/projects/gamemundo/ http://sourceforge.net/projects/gamemundo/].<br />
<br />
<br />
[[File:Mundo - Screenshot 1.png|border|270px]]<br />
[[File:Mundo - Screenshot 2.png|border|270px]]<br />
[[File:Mundo - Screenshot 3.png|border|270px]]<br />
<br />
=== Pnigin (a Pengo Remake) ===<br />
Pnigin is an advanced remake of the 80's arcade classic Pengo.<br />
<br />
The project was made from scratch, using all original artwork and music. The project used Delphi 5 personal, Lazarus and Free Pascal for development.<br />
<br />
As the project is currently in a beta stage, there is no working demo yet. It is expected that a playable demo is released in summer 2008.<br />
<br />
=== Retro Ski Run ===<br />
[https://sourceforge.net/projects/retroskirun/ Retro Ski Run] is a simple ski game for Windows 32/64bit and Linux 32/64-bit.<br />
<br />
[[Image:ss_rsrStartScreen.jpg]]<br />
<br />
=== Slot Cars - The Video Game ===<br />
“Slot Cars – The Video Game“ is an Indie, Racing, Simulation game with a tracks editor.<br />
<br />
<center>[[Image:SlotCarsTheVideoGame SS 02.jpg]]</center><br />
<br />
With “Slot Cars – The Video Game“ you can create<sup>*</sup> and edit<sup>*</sup> your own tracks and then play with these, also with a friend in a local split screen<sup>**</sup>.<br />
<br />
It is also possible to save<sup>**</sup> and reload<sup>**</sup> your creations.<br />
<br />
You can listen your own “shuffled music” in menu or in game, just copying MP3 into the relative directories<sup>*</sup>.<br />
<br />
<sup>* See manual for detail.</sup><br />
<br />
<sup>** Only in Full version.</sup><br />
<br />
“Slot Cars – The Video Game” use GLScene (so, OpenGL) for graphics, OpenAL for 3D audio and Newton Game Dynamics to manage real time physics.<br />
Nothing is pre-calculated.<br />
<br />
Powered by '''Lazarus''' & '''GLScene'''.<br />
<br />
Final graphics and local multiplayer (splitscreen):<br />
<br />
[http://www.youtube.com/watch?v=JL1W7jfym-4 About graphics and multiplayer]<br />
<br />
Official Trailer:<br />
<br />
[http://www.youtube.com/watch?v=-m8v2txY2Ck About gameplay]<br />
<br />
Here two videos also:<br />
<br />
[http://www.youtube.com/watch?v=x9w261bvzzw About gameplay]<br />
<br />
[http://www.youtube.com/watch?v=PNal6vb5m9Y About editor and gameplay]<br />
<br />
You can find info and the DEMO to download [http://www.kjow.net HERE]<br />
<br />
=== ZWordQuiz ===<br />
ZWordQuiz is the remake of the famous Windows CE Software KWordQuiz.<br />
With ZWordQuiz you can use the dictionaries in the format kvtml KWordQuiz to train your memory.<br />
<br/><br />
Developer by Jonathan<br />
<br/><br />
[http://www.magicdev.org/zwordquiz_en WebSite]<br />
<br />
== Web ==<br />
<br />
=== ExtPascal ===<br />
[http://extpascal.googlecode.com ExtPascal] is an Ext JS wrapper. It lets you use the ExtJS from Object Pascal commands issued by the server. That brings the structure and strict syntax of the Object Pascal for programming the web browser.<br />
<br />
=== FoxWhois ===<br />
[https://foxwhois.com/en/ FoxWhois] is a bulk domains checker. Does not require installation. There are free (foxwhois free) and paid (foxwhois pro) version<BR> <br />
FoxWhois free scans .COM, .RU/.SU/.РФ domains for availability and whois data. FoxWhois pro has more advanced functionality<BR><br />
The software is multilingual (via i18n): currently supports English and Russian languages.<br />
<br />
=== TeamBBS ===<br />
[https://bergertime.eu TeamBBS] is a modern bulletin board system. Installed in 10 minutes, it might be the forum for classes or clubs. Content can be text, images or links.<BR> <br />
If everything is said, TeamBBS builds a conclusion and is uninstalled in 5 minutes. Location- and Online- views deliver "community spirit". <BR><br />
Source code included (German/English). Please join us, we need a French and Italian version.<br />
<br />
== Education and Scientific ==<br />
<br />
=== Albireo ===<br />
[http://albireo.gotozero.de Albireo] is a small-footprint astronomy software for hobby and amateur astronomers. Albireo can be used as an observation documentation and object identification tool. <br />
It should be working on any MS Windows based PC.<br />
<br />
[[Image:Albireo.jpg|500px|Dynamic Star Map]]<br />
<br />
=== Ancestromania ===<br />
<br />
<br />
[http://ancestromania.net Ancestromania] is a fully LGPL genealogy software. It is user-friendly. You can import and export to Gedcom. You can export to Geneanet and to a web site. There is a great graphical tree, with fast classic trees. There are a lot of following documents.<br />
<br />
[http://genealogie.liberlog.fr/Family-trees Ancestroweb] creates a [http://matthieu.giroux.free.fr/genealogie/default.htm static genealogy's web site]. It is french, but can be translated easily. It is part of Ancestromania.<br />
<br />
[[File:Ancestromania.jpg|830px]][[File:2012-04 Ancestroweb.jpg|380px]][[File:2012-05 Ancestroweb carte.jpg|300px]]<br />
<br />
=== ApertaLetra ===<br />
[http://wp.me/pWoqh-28 ApertaLetra] is a text editor colorful and cheerful, where available, without leaving the context of software: formatting, new / open / save, cut / copy / paste and print. [http://sourceforge.net/projects/apletra Sourceforge page]<br />
<br />
=== ApertaQuem ===<br />
[http://wp.me/pWoqh-3s ApertaQuem] is an electronic ballot box for mock elections. Is available to create any candidate with photo from the webcam or file. Exclusive use for school environments. [http://sourceforge.net/projects/apertaquem/ Sourceforge page]<br />
<br />
=== CityCAT ===<br />
[http://www.ncl.ac.uk/ceser/researchprogramme/integratedsystemsdemonstrationscities/citycaturbanfloodmodel/ CityCAT] (City Catchment Analysis Tool), developed at Newcastle University, is a unique software tool for modelling, analysis and visualisation of surface water flooding. It enables rapid assessment of combined pluvial and fluvial flood risk and effects of different flood alleviation measures.<br />
<br />
=== EzberIM ===<br />
[http://mehmetulukaya.wordpress.com/kelime-ezberim-kullanim-klavuzu/ EzberIM 1.4f] Kelime EzberIM provides you with a simple and efficient way to memorize the translations of words in various languages. Test your skills and improve your vocabulary with the help of this reliable and handy piece of software in an easy and interactive manner.[http://sourceforge.net/projects/ezberim/files/ezberim/ezberim-setup.exe/download EzberIM Download]<br />
<br />
[[Image:program_cevap_rapor.JPG|500px]]<br />
<br />
Also added some feautes for example picture samples, it gives a sentence with a picture also you can copy your pictures into directory.<br />
<br />
[[Image:Show_Pictures_As_Sample.png|500px]]<br />
<br />
Final feaute is make a sentence with mixed words:<br />
<br />
[[Image:make_sentences_new.png|500px]]<br />
<br />
=== FREE!ship Plus in Lazarus ===<br />
[https://github.com/markmal/freeship-plus-in-lazarus FREE!ship Plus in Lazarus] is further development of the ''FREE!ship Plus'' (by http://www.hydronship.net ) Windows program based on the free source code FREE!ship v3.x under GNU GPL license. This ''FREE!ship Plus'' application is migrated into free open source Lazarus / Free Pascal environment to promote further development in various platforms and for various platforms (OS and architectures).<br />
<br />
[[Image:FreeShip+qt.png|500px]]<br />
<br />
''FREE!ship Plus'' is designed for the full parametric analysis of resistance and power prediction for a ship and other calculations of hydrodynamics of vessels and underwater vehicles. ''FREE!ship Plus'' allows the designer to simulate and analyze condition of balance of a complex completely hull - rudders - keels - engine - propellers in different regimes and of service conditions of a ship. The analyzable system includes a hull, appendages, a propeller and the engine (i.e. resistance, power, a thrust and a torque), and also various service conditions (heaving, a wind, a shallow-water effect, a regime of tow / pushing, etc...).<br />
<br />
=== GroundCAD ===<br />
[http://www.groundcad.com GroundCAD] is new 2D CAD software for land surveying.<br />
working under windows,linux and mac os.<br />
GroundCAD supports many standard formats like : <br />
Ascii file(txt/csv),Autodesk dxf(ascii R12),Leica(gsi 8/16),Sokkia(sdr33) <br />
Topcon(fc4/gts7/xml/landxml),Google(kml) ...<br />
<br />
[[File:groundcad.jpg|500px]]<br />
[[File:layermanager.jpg|500px]]<br />
[[File:main-window-linux32.png|500px]]<br />
<br />
=== Harmonux ===<br />
[http://wiki.freepascal.org/User:MaxBorges Harmonux 0.1.4] Harmonic Analysis. Enter a table and get the harmonic function for the table. With the graphic of the points of the table and the function. Open Source GNU/GPL, pre-compiled for Linux and Windows.<br />
[[File:hamonux14.png|500px|thumb|center]]<br />
<br />
=== Jubarte ===<br />
[http://jubartecalc.googlepages.com/ Jubarte] aims to create a complete application suite to calculate and analyse the viability of telecommunication links. Jubarte is able to calculate links using Radio, Optical Fiber and Satellites, in the newer versions capabilities to calculate auxiliary systems is being added. Jubarte is being developped in Lazarus enviroment and exist binaries for Windows, Linux and OSX.<br />
<br />
===LibreAquarium===<br />
[http://www.libreaquarium.org] LibreAquarium is a GPLv3 aquarium management system for Windows, Linux and Mac with a Simulation Model System that tries to predict the pollutants evolution using the recorded analytics, the algae risk and many other features (Tasks control, Expenses, Analitics, Statistics). LibreAquarium has been made with a quality design in order to make easier the user experience. <br />
<br />
=== Manuscript4u ===<br />
[http://sourceforge.net/projects/manuscript4u/ Manuscript4u] is an open source project to read and search on the original languages of the Bible and on the translations. <br />
<br />
[[File:manuscript4u.png|500px|thumb|center|Manuscript4u: Bible search on original languages]]<br />
<br />
It has unique and easy way to do research on words in Greek and Hebrew. Learn the meaning of the word without dictionaries by the way that word was translated.<br />
<br />
In parallel, the original Hebrew/Aramaic (Old Testament) or Greek (New Testament) with your preferred translation.<br />
<br />
It comes with Bibles in Hebrew/Greek and English, Portuguese, Spanish but you can download scores of other translations. The Bible files can be downloaded from the UnboundBible site in many languages and converted to the format used by the program with an included conversion program. Pre compiled for Linux and Windows. <br />
<br />
Multi-language support. Currently English and Portuguese.<br />
<br />
Strong's dictionary for the Greek with one click.<br />
<br />
Links to sites like "The Blue Letter Bible" with further details about the word with one click.<br />
<br />
=== Master Maths ===<br />
[http://www.mastermaths.co.za Master Maths] specialises in computer based training and maths. The 3rd incarnation of our flagship product is developed using Lazarus, Firebird, [http://tiopf.sourceforge.net/ tiOPF v2] and the [http://fpgui.sourceforge.net/ fpGUI Toolkit]. The product has two parts. A GUI Administration application and a CGI Learner Browser (used to view and mark the teaching modules). The Learner Browser uses Adobe Flash extensively. The complete product runs under Linux and Windows.<br />
<br />
=== Morse Machine ===<br />
[http://downloads.tech-pro.net/morse-machine_tpmm01.html Morse Machine] is an implementation of "A Fully Automatic Morse Code Teaching Machine" first described in a May 1977 QST article of the same name by Ward Cunningham using Lazarus. The program teaches Morse code by sending a character and waiting for you to type what you heard on the keyboard. It grades your score and adds new characters when it sees that you are ready. The program is released under the GNU GPL version 2. Due to its use of the sound card, this implementation is for the Windows platform.<br />
<br />
=== MRIcroGL ===<br />
[http://www.mccauslandcenter.sc.edu/mricrogl/ MRIcroGL] is an opensource project that uses the graphics card (using OpenGL) to visualize and volume render medical images. It is hosted on the [http://www.nitrc.org/projects/mricrogl/ National Institutes of Health (NIH) Neuroimaging Informatics Tools and Resources Clearinghouse (NITRC)]. It can view images saved in NIfTI (.nii, .nii.gz, .hdr/.img), Bio-Rad Pic (.pic), NRRD, Philips (.par/.rec), ITK MetaImage (.mhd, .mha), AFNI (.head/.brik), Freesurfer (.mgh, .mgz), and many DICOM (extensions vary) formats. It is available for Windows, Linux and Mac OS X.<br />
<br />
[[Image:Shell.png|320px]]<br />
<br />
=== MRIcron ===<br />
[http://www.mricro.com/mricron/ MRIcron] is an opensource project that allows users to visualize and volume render medical images (MRI, CT, PET). It includes tools for lesion mapping, non parametric statistical analysis ([http://www.mricro.com/npm/ npm]), and conversion from the medical DICOM format to the scientific NIfTI format ([http://www.mricro.com/mricron/dcm2nii.html dcm2nii]). It is available for Windows, Linux and Mac OS X.<br />
<br />
[[Image:mricron.jpg|320px]]<br />
<br />
=== Nest-o-Patch ===<br />
[https://sourceforge.net/projects/nestopatch/?source=navbar Nest-o-Patch], software for the analysis of patch-clamp, two-electrode-voltage clamp and other electrophysiological data. Directly works with files created by HEKA Pulse or Patch-Master data aquisition software or with CSV and text files. Designed mostly for the analysis of single channel recordings, was nevertheless successfully used for whole-cell data analysis. Several academic papers were published with the use of this software.<br />
<br />
[[File:nest-o-patch trace.png|500px]] [[File:nest-o-patch amplitude histogram.png|380px]] [[File:nest-o-patch levels analysis.png|340px]] <br />
<br />
=== OctaveGUI ===<br />
[http://code.google.com/p/octave-gui/ OctaveGUI] is a(nother) GUI frontend for GNU Octave.<br />
<br />
=== OpenSIMPLY ===<br />
[http://opensimply.org Project homepage] OpenSIMPLY is an open source free simulation software based on discrete event simulation approach.<br />
<br />
The concept is suitable for a person of a different programming and simulation experience. Both style of simulation: blocks simulation and Simula-like simulation are available. Simula-models with some adaptation can be used as well.<br />
<br />
The project is supplied with full documentation (HTML and CHM formats), insight help (pop-up hints) and tutorial with executable examples.<br />
<br />
OpenSIMPLY can be used as a network simulation software, traffic simulation software and as a computer simulation software for educational purposes. <br />
<br />
The project contains the Simply Memory Manager. <br />
<br />
[http://opensimply.org Learn more]<br />
<br />
[[File:tutorial_demo_animation_s.gif|OpenSIMPLY tutorial demonstration example]]<br />
<br />
=== ProofTools ===<br />
[http://creativeandcritical.net/prooftools/ ProofTools] automatically and graphically generates semantic tableaux, also known as proof trees, semantic trees and analytic tableaux, generally used to test whether a formula is a logical truth, or whether a proof/argument is deductively valid. ProofTools can generate proof trees for propositional, predicate and (normal) modal logic. It is available for Windows, Linux and Mac OS X.<br />
<br />
[[File:ProofTools.png|ProofTools screenshot]]<br />
<br />
=== SignWriter ===<br />
[http://www.egyptologysoftware.com/software.html Signwriter] is an Ancient Egyptian Hieroglyphic Word Processor and Language tool. It is designed for creating and editing texts stored in MdC format and would be of interest to students, professionals, and anyone with an interest in the Ancient Egyptian Language.<br />
<br />
===SimSEE===<br />
[http://iie.fing.edu.uy/simsee/simsee SimSEE] is a platform for Simulation of Systems of Electrical Energy. Using SimSEE we can simulate the optimal operation of systems with hydroelectrical plants, hydro-reservoirs, fuel fired plants, wind farms and interconnections with other countries. The platform has a very sophisticated tool for modelling stochastic processes like river inflows, fuel prices, wind speed, etc. The software was developed in Spanish but we are working to support other languages (help is welcome).<br />
<br />
===SimThyr===<br />
[http://simthyr.sourceforge.net/ SimThyr] is a simulation program for the pituitary thyroid feedback control that is based on a parametrically isomorphic model of the overall system. It aims in a better insight into the dynamics of thyrotropic feedback. Applications of this program cover research, including development of hypotheses, and education of students in biology and medicine, nurses and patients.<br />
<br />
=== Skychart / Cartes du Ciel ===<br />
[http://www.ap-i.net/skychart Skychart] is a free software to draw a map of the night sky for the amateur astronomer from a bunch of stars and nebulae catalogs. It shows the position of the planets, simulates an eclipse and more. <br />
<br />
=== SPINA ===<br />
[http://spina.medical-cybernetics.de/en/ SPINA] is software for determining constant structure-parameters of endocrine feedback control systems from hormone levels obtained in vivo. The first version of this cybernetic approach allows for evualuating the functional status of the thyroid gland.<br />
<br />
=== SysLinea ===<br />
[http://wiki.freepascal.org/User:MaxBorges SysLinea 0.1.2] Solves Linear Systems and calculates Linear and Non linear Regression. It gives the Pearson and Spearman coefficients of correlation and the t-test. Open Source GNU/GPL, pre-compiled for Linux and Windows.<br />
[[File:syslinea12.png|500px|thumb|center|SysLinea 1.2 - Linear regression and non linear regression]]<br />
<br />
=== Turbo Circuit ===<br />
[[Turbo Circuit]] is a circuit drawing tool written in Lazarus / Free Pascal.<br />
<br />
=== Unified Life Models ===<br />
[http://www.biologie.ens.fr/~legendre/ulm/ulm.html ULM (Unified Life Models)] is an open-source software enabling the simulation and analysis of deterministic and stochastic discrete time dynamical systems for population dynamics modeling. It works natively on Windows, Linux and macOS.<br />
<br />
Models are described using a simple declaration language, close to the mathematical formulation. The system can be studied interactively by means of simple commands, producing convenient graphics and numerical results.<br />
<br />
[[Image:screenshot_ulm.png|320px]]<br />
<br />
=== Virtual Moon Atlas ===<br />
[http://ap-i.net/avl/en/start Virtual Moon Atlas] is software for lunar observation and study. It uses GLscene to give a realistic view of the Moon at any given location and time. The computations are done with the JPL ephemeris for extensive precision. It includes the most complete lunar formation database and picture library. The binary distribution is available for Windows, Mac and Linux.<br />
<br />
=== Xoctave ===<br />
[http://www.xoctave.com/ Xoctave] is a Human interface to GNU Octave. Xoctave encapsulates GNU Octave uses pipes and provides extra useful tools to make GNU Octave more easier to use. XOctave is written in Pascal using Lazarus front-end and Free Pascal (aka FPK Pascal) libraries. It uses synedit for syntax highlighting, and uses the Lazarus Component Library (LCL) is a set of visual and non-visual component classes over a Widget toolkit-dependent layer with multi-language support (English-Turkish)<br />
<br />
=== ZCAD ===<br />
[http://sourceforge.net/projects/zcad/?source=directory ZCAD] is a simple CAD program with support for file formats DXF.<br />
<br />
[[Image:Zcad.png|400px]]<br />
[[File:simplecad.PNG|400px]]<br />
<br />
== Management, Accounting and other Business Software ==<br />
<br />
=== AddressBook ===<br />
[http://www.cnblogs.com/lazarus/articles/2051659.html AddressBook] using the Sqlite store data, Support for Simplified Chinese, Traditional Chinese, English three languages. Support the list shows, support to add, delete, right-click pop-up list menu to delete, change, check; Support importing csv, export csv file; import file format to export csv files can fill in; Contact the system into the same name as the default if there is to add a new record; Encoding exported file system based on user language encoding decisions; support the dynamic selection of countries or companies and added;<br />
support the department or group of dynamic selection and add; support the phonetic code or short code quick search contacts. For example: the Monkey King of the alphabet code, SWK. may enter the code in the alphabet Jane S, Sun will contact all the names are listed; [http://pic002.cnblogs.com/images/2011/300662/2011052008585591.png Screen Shot]<br />
<br />
=== Bilancio Facile ===<br />
[http://www.magicdev.org/bilanciofacile Bilancio Facile] is a simple application to manage the family budget.<br/> <br />
<br />
Developed by Jonathan.<br />
<br />
[[Image:winprev.jpg|Screen shot]]<br />
<br />
=== BRP-Software ===<br />
[http://www.brp-software.com/ BRP-Software] is a powerful and extremely flexible ERP System, that uses the Firebird database as backend. The first major release is in use with several different database structures to handle the needs of different business types. We have seperate databases for container logistics, laser cut metal production, software distribution and computershops. All databases use the same base application written in Lazarus.<br />
<br />
BRP Software is currently only focusing on the German speaking market, but it is developed for international usage. We plan to publish an international version in second half of 2013. There is a special free version already called Personal edition available now. This has only one restriction: it can not be used with more than one network user. This version includes the computershop database out of the box.<br />
<br />
[[File:BRP.gif]]<br />
<br />
=== Contact Contacts ===<br />
[http://www.trustfm.net/GeneralTools/SoftwareContactContacts.php Contact Contacts] is a free of charge portable and secure '''organizer''' that supports bulk emails and SMS.<br />
<br />
All data is stored '''securely''' into an encrypted database.<br />
<br />
The '''documentation''' is located [http://www.trustfm.net/GeneralTools/SoftwareContactContacts.php?page=ContactContactsTutorial here]<br />
<br />
[[Image:ContactContactsWin7.png]]<br />
<br />
=== DB2 Security Script importer ===<br />
[https://bitbucket.org/reiniero/db2securityscript/ DB2 Security script] is a script that runs on the DB2 database system and outputs audit/security-relevant information.<br />
<br />
Accompanying this script is a conversion program, OutputParser, that converts the script dump to a Microsoft Access database, Firebird embedded database, Microsoft Excel file, DBF, CSV etc. <br />
<br />
Although the program is fairly trivial, it shows:<br />
* how to use [[fpXMLXSDExport]] and [[FPSpreadsheet]] for output<br />
* how to create [[MS Access]] files programmatically<br />
* how to export datasets to another database<br />
* and some text processing/recognition and field creation on the input side.<br />
<br />
[[Image:DB2ParserCSVExport.png]]<br />
<br />
=== Eleman ===<br />
[http://www.linuxprogramlama.com/index.php?page=11 Eleman] is a accounting program with personnel, stock and billing capabilities. It is using firebird, zeosdbo and GPL licensed.<br />
<br />
=== ExVan ===<br />
[http://www.cforce.gr/sales.htm ExVan] is a WinCE/Win32 mobile invoicing program with batch data transfer for Greek ERP systems or standalone use.<br />
<br />
=== FXGest ===<br />
[http://www.magicdev.org/fxgest] is a simple application to manage the company budget. Based on Bilancio facile engine<br/> <br />
<br />
Developed by Jonathan.<br />
<br />
[[Image:cliente.jpg|Screen shot]]<br />
<br />
=== Gestinux ===<br />
[http://gestinux.net/mediawiki/index.php/Main_Page Gestinux] is a small accounting and invoicing software, to enter moves and import in various formats, to reconcile, and to print usual reports. You can produce quotes, order sand invoices, record customer payments. It is translated into english, spanish and italian from french, and can easily be translated to other languages. It is possible to setup specific reports for various countries. It runs on Linux, Windows and OS/X, using MySql, MariaDb and PostgreSQL.<br />
<br />
=== opsi ===<br />
[http://opsi.org/ opsi] is an open source Client Management System for Windows clients and is based on Linux servers.<br />
Key features:<br />
<br />
* Automatic OS installation (unattended or image based)<br />
* Automatic software distribution and patch management<br />
* Hardware and software inventories<br />
* multiple location support<br />
<br />
opsi server runs on Debian, Ubuntu, OpenSuse, SLES, CentOS, UCS and RHEL.<br />
We use Lazarus for the component opsi-winst which is the script driven generic setup program which does all the installations and system manipulations on the windows boxes.<br />
<br />
=== OutKafe ===<br />
[http://www.outkastsolutions.co.za/outkast/index.php?option=com_openwiki&Itemid=45&id=outkafe OutKafe] is a next-generation free and open source cybercafe management suite. It currently is running hundreds of cybercafe's at businesses, schools and other establishments around the world.<br />
<br />
=== PlanB ===<br />
[http://roberts.bplaced.net PlanB] is a Vehicle management program written using to Lazarus (Free Pascal) and MySQL Community Edition .<br />
<br />
Features :<br />
* Management of Mileage Log , Service , Registration , Mandatory Insurance documents .<br />
* Statistics : global , driver , company , mileage log , average fuel consumption, visited places.<br />
* Graphs : driver, vehicle .<br />
* Reminders for : oil , tachograph , fire extinguisher , leasing , driver health check , driver skills check , registration.<br />
* Unlimited number of Vehicle Groups ( example : Private, Company, Warehouse, VIP , etc. ) and Vehicles.<br />
* One window user interface , intelligently grouped together for easy everyday usage.<br />
* Can handle various Regional Settings without problems.<br />
* 100% UTF-8 (aka Unicode)<br />
* Handles multiple users at the same time. Items are locked when modifying to prevent database corruption.<br />
* Simple user rights : <br />
** administrator : unlimited access to program features<br />
** user : the one doing all the work , cannot add new users, view program statistics or unlock locked items.<br />
** guest : can only view statistics<br />
* Can export almost every table to EXCEL (2003 level) even without Excel being installed. <br />
* Can automatically resize tables to correct size to fit data being displayed,almost every table supports quick search.<br />
* Can print out every report to printer , or export to PDF . With Mileage Log Stats it can even mass export all vehicles in selected group to Excel file.<br />
* Uses MySQL Community Edition which is absolutely FREE.<br />
* Was written with Lazarus 1.2.2 using only FREE components.<br />
* Logs usage stats<br />
* Multilingual , right now : English, Hungarian, Serbian(Latin), German is supported .<br />
* All program related settings are stored in config files NOT in registry.<br />
* Tested on Windows XP,7,8,8.1 . (Windows 9x series not supported)<br />
<br />
Images :<br />
<br />
[[Image:planB1.png|715px|358px]]<br><br />
[[Image:planB2.png|320px|180px]]<br />
[[Image:planB3.png|320px|180px]]<br />
[[Image:planB4.png|320px|180px]]<br />
[[Image:planB5.png|320px|180px]]<br />
[[Image:planB6.png|320px|180px]]<br />
[[Image:planB7.png|320px|180px]]<br />
[[Image:planB8.png|320px|180px]]<br />
[[Image:planB9.png|320px|180px]]<br />
[[Image:planB10.png|320px|180px]]<br />
[[Image:planB11.png|320px|180px]]<br />
[[Image:planB12.png|320px|180px]]<br />
[[Image:planB13.png|320px|180px]]<br />
[[Image:planB14.png|320px|180px]]<br />
[[Image:planB15.png|320px|180px]]<br />
[[Image:planB16.png|320px|180px]]<br />
[[Image:planB17.png|320px|180px]]<br />
[[Image:planB18.png|320px|180px]]<br />
[[Image:planB19.png|320px|180px]]<br />
[[Image:planB20.png|320px|180px]]<br />
[[Image:planB21.png|320px|180px]]<br />
[[Image:planB22.png|320px|180px]]<br />
[[Image:planB23.png|320px|180px]]<br />
[[Image:planB24.png|320px|180px]]<br />
[[Image:planB25.png|320px|180px]]<br />
[[Image:planB26.png|320px|180px]]<br />
[[Image:planB27.png|320px|180px]]<br />
[[Image:planB28.png|320px|180px]]<br />
[[Image:planB29.png|320px|180px]]<br />
[[Image:planB30.png|320px|180px]]<br />
[[Image:planB31.png|320px|180px]]<br />
[[Image:planB32.png|320px|180px]]<br />
[[Image:planB33.png|320px|180px]]<br />
<br />
=== Postcode ===<br />
[https://bitbucket.org/reiniero/postcode/overview Postcode] is an open source program that looks up Dutch postcodes and adresses.<br />
It can look up postcodes when given street/street number/city and it can give the address when given a street number and postcode. Additionally, you can let it read in a CSV file or other delimited file and let it add missing information.<br />
<br />
Windows and Dutch language (source code commented in English).<br />
Uses a Firebird (embedded) database filled with postcode/address data from the Dutch government. <br />
<br />
Demonstrates use of <br />
* [[CsvDocument]] to read/write delimited files<br />
* drag and drop text content from other applications<br />
* regex library<br />
* Firebird stored procedures<br />
* database normalization<br />
* use of read-only transactions<br />
[[Image:ScreenshotPostcode.png|Postcode screenshot]]<br />
<br />
=== [http://free-erp.net/ Promet-ERP] ===<br />
[http://free-erp.net/ Promet-ERP] is a Small Business ERP System / Project management Solution / Mail Program / Document Management System. It can be used with most [http://free-erp.net/wiki/Promet-ERP/Databases major Database Systems] and on all major platforms (Windows, Linux, Mac OS X).<br><br />
[[Image:mainscreen windows.jpg|150x200px]][[Image:kalendar_windows.jpg|150x200px]][[Image:wiki_windows.jpg|150x200px]][[Image:mainscreen_linux.png|150x200px]][[Image:kalendar_linux.png|150x200px]][[Image:wiki_linux.png|150x200px]]<br />
<br />
=== Rednaxel RNGE3 ===<br />
[http://rednaxel.com/software/ RNGE3] is a Small-Medium Business ERP System (with WMS module) for brazilian companies. It emits Nota Fiscal Eletronica, the government-mandated electronic invoice.<br />
[[File:sshot-fat2.png]]<br />
<br />
=== RiXtoR ===<br />
[http://pietrobua.com/web/en/project/?name=rixtor RiXtoR] is a Point of Sale program specially designed for restaurants, working on both Windows and GNU/Linux Systems<br />
<br />
=== SilentCoder's Site ===<br />
[http://www.silentcoder.co.za silentcoder.co.za DireqCafe] is a complete and full full featured internet cafe solution for LTSP. A number of other useful lazarus programs can be found on A.J. Venter's site.<br />
<br />
=== TreePad Lite for Linux ===<br />
TreePad Lite for Linux is a freeware personal information manager.<br />
TreePad Lite can help you manage, store, edit, organize and browse any type of textual data, such as: notes, emails, articles, links, telephone extensions, addresses, scraps pasted from the Web, etc. Suitable for Linux. Created by [http://www.freebyte.com Freebyte.com] using Lazarus and Free Pascal on Ubuntu 10.x.<br />
<br />
Program home page: http://www.treepad.com/linux/treepadlite/<br />
<br />
=== TruckBites ===<br />
[http://www.truckbites.com TruckBites] is a business management software for independent trucking companies and owner/operators (for the USA.) Written under contract by [[user:Tonymaro | Tony Maro]] for both Linux and Windows for "Partners in Trucking, LLC". Still under development, anticipated release in the next few months.<br />
<br />
=== TurboCash plugins===<br />
[http://www.turbocash.net/wiki/index.php?title=Developer:Lazarus Open Source Accounting software] apparently allows writing plugins using Lazarus/FPC.<br />
The program itself is still written in Delphi: [http://sourceforge.net/projects/turbocash/ description on Sourceforge]<br />
<br />
=== WGVW ===<br />
[http://ceware.de/wgvw/ WGVW] is a freeware program for househould management. It includes capture of income and expenses (cash book) as well as recurrent items (recurring income/expenses). Apart from that it is possible to digitize documents and save account data. The program uses a Firebird database.<br />
<br />
=== Wireless Orders for Mini Bar Cafe ===<br />
Win32 TCP/IP Application Server, Win32 TCP/IP Client, WinCE TCP/IP Client.<br />
Using Lazarus and lNet we develop wireless ordering system for Mini Bar - Cafe.<br />
Print receipts directly to Cash Mashine.<br />
<br />
More Info ( http://www.cforce.gr/orders.htm )<br />
Demo ( http://www.cforce.gr/downloads/setupwodemo.exe )<br />
<br />
== Utilities and Miscellaneous ==<br />
<br />
=== Adnan Dictionary ===<br />
[http://sourceforge.net/projects/adnandict/ Adnan dictionary] is a light and open source dictionary based on the arabeyes.org database. It is available for both windows and linux and intends arab users.<br />
<br />
=== Advanced Password Generator ===<br />
[https://sourceforge.net/projects/apwg/ Advanced Password Generator] is a lightweight password generator tool to protect your security with randomly generated password. It runs on Windows and Linux. No installation required. This tool has GUI and command line version. Command line version is ideal for scripting. <br />
[[File:scrnsht1.png]]<br />
<br />
=== ApplePi-Baker 2 ===<br />
[https://www.tweaking4all.com/software/macosx-software/applepi-baker-v2/ ApplePi-Baker] is a free macOS application (64-bit and signed) to create backups and do restores of disk drives. Restore can even be done to multiple disks at once. <br />
The application utilizes [https://www.libarchive.org/ libarchive] to support a wide range of archive and compression formats (7Zip, BZip, dd, GZip, IMG, ISO, Jar, LZip, Rar, Tar, Tar BZip2, Tar GZip, Tar LZip, Tar XZ, XZ and Zip). <br />
<br />
Further more, ApplePi-Baker fully relies on Apple DiskArbitration API calls and callbacks, is build comfort Apple’s [https://developer.apple.com/library/archive/documentation/Security/Conceptual/SecureCodingGuide/Articles/AccessControl.html Elevating Privileges Safely] and utilizes the so called [https://www.tweaking4all.com/software-development/lazarus-development/macos-smjobbless-elevated-privileges-lazarus-pascal/ SMJobBless - Privileged Helper Tool]. <br />
<br />
Additional extensive disk information can be viewed, and extra disk functions is included. For Raspberry Pi users, the option to enable SSH and create NOOBS disk are included as well. <br />
Dark Theme, Bouncing Dock icon, notifications and progress indication in the dock are supported as well.<br />
<br />
[[Image:applepi-baker-progress.png|800px|center]]<br />
<br />
=== AksiIDE ===<br />
[http://www.aksiide.com AksiIDE] is a light freeware multi-platform text editor written in Lazarus.<br />
very useful for PHP developers.<br />
<br />
It has these features:<br />
* PHP Project Wizard<br />
* Portable Version Available<br />
* Live View Browser<br />
* Project Management<br />
* Class Generator<br />
* Integrated With Database Explorer (mysql + postgresql)<br />
* Database Browser<br />
* FTP Explorer<br />
* File Explorer<br />
* Code Explorer with Function List<br />
* Code Snippet<br />
* PHP Source Minifier<br />
* PHP Source Formatter<br />
* Syntax Checker<br />
* Multi Workspace Layout<br />
<br />
[[File:Aksi_IDE.jpeg|600px]]<br />
<br />
=== AlFileSearch ===<br />
[http://www.aldimsoft.ru/alfilesearch AlFileSearch] Simple file search utility which is able to quickly find files and folders on your PC running under Windows 10, 8, 7... It is able to sort out files and folders according to their properties (e.g. Modified Date). The results window supports Windows Explorer functionality: icons, context menus.<br />
<br />
=== Bar Generator ===<br />
[https://sourceforge.net/projects/bargenerator/ Bar Generator] is a simple QR, AZTEC and Data Matrix code generator.<br />
<br />
=== Becape ===<br />
[https://sourceforge.net/projects/becape/ Becape] is an open source backup tool aimed to personal/desktop usage. It does incremental backups and stores the backup info in a sqlite database allowing to restore the exact state of the backed files at a chosen date. It's fully written in Lazarus/Free Pascal.<br />
<br />
=== BioTray ===<br />
[https://sites.google.com/site/biotray/ BioTray], your Biorhythm in traybar.<br />
Biorhythm means rhythm of life.<br />
Our live is directed by emotional, intellectual and physical rhythms who begin at our birth.<br />
You will see on your traybar 4 new icons. They are : the emotional, the intellectual, the physical and the intuitive icon.<br />
How more the icon is filled, how big is your power. <br />
On WINDOWS, LINUX and MAC OSX.<br />
<br />
In traybar :<br />
<br />
[[File:biotray1.jpg]]<br />
<br />
[[File:biotray2.jpg]]<br />
<br />
=== CamMirror ===<br />
[http://www.cnblogs.com/lazarus/articles/2053748.html CamMirror] Using the camera as a mirror, it can be switched to several resolutions such as 320*240,640*480,800*600,1024*768 and full screen by clicking the tray icon menus. Windows only. <br />
<br />
=== CheckRide ===<br />
[https://bitbucket.org/reiniero/checkride/ CheckRide] is an open source remote control tool. It lets you take over the screen and keyboard of a remote computer. The helped person only needs to run the program, no firewall/router changes necessary. The helper does need to forward a port in her router.<br />
Features:<br />
* No configuration required for client, just click and be helped<br />
* Helper can use the tool to create a custom version of CheckRide that connects to her server. This way, the helped party only needs to download and run one program. Alternatively, the helper can distribute a configuration file for the same purpose.<br />
* Supports Windows UAC<br />
* Encrypted connection<br />
* Uses UltraVNC and stunnel programs to provide remote control and encryption<br />
* Supports Windows helped persons and helpers on Windows (CheckRideHelper.exe) and Linux (stunnel/vncviewer), probably OSX, too.<br />
* Can be used for free, both commercially and non-commercially. CheckRide wrapper is MIT licensed freeware: it can also be incorporated in commercial programs.<br />
<br />
Technical details: it uses an UltraVNC winvnc reverse connection and stunnel to create an encrypted connection. You can realize this by just using stunnel and vncviewer, so the helper side should be usable on Linux and OSX, too. For now, CheckRide itself has only been compiled on Windows; it will need some changes for other operating systems.<br />
<br />
Free Pascal techniques that are used:<br />
* Controlling external programs<br />
* Installing/deinstalling Windows services<br />
* "Poor man's resource": adding [[paszlib|zip]] files after exe with configuration data, UltraVNC, stunnel details<br />
* [[paszlib|Zipping/unzipping]] files<br />
* Using a manifest to request Administrator privileges/elevation<br />
* Handling command line options; multiple configuration mechanisms (embedded config file, config file in application directory, command line options)<br />
<br />
More details: see [https://bitbucket.org/reiniero/checkride/wiki/Home CheckRide wiki].<br />
<br />
Screenshots: [[Lazarus_Application_Gallery#CheckRide]]<br />
<br />
=== Convertor ===<br />
[https://hdrz.github.io/convertor/ Convertor] is a unit converter with a slightly different GUI. It aims to be as minimal and unobtrusive as possible, yet easy to use. It has many unit categories and units, and the units are defined in XML file which can be upgraded with no recompilation of the program.<br />
<br />
[[File:conv-min-layout.png]]<br />
<br />
=== CoreNet ISP Management ===<br />
[http://www.turbog.com/2012/04/24/corebil-net-isp-management/ CoreNet ISP Management] is a fully ISP management software package. It is a freeware Windows application.<br />
<br />
=== Convert POs ===<br />
<br />
[https://bitbucket.org/matthieugiroux/convertpos Lazarus project], whose fusion an original po file and the traduced po file. You can save your po language file after.<br />
<br />
=== CQRLOG ===<br />
[http://www.sourceforge.net/projects/cqrlog/ CQRLOG] [https://www.cqrlog.com/ CQRLOG] is an advanced ham radio logger based on MySQL database. Provides radio and rotor control based on hamlib libraries (currently support of 140+ radio types and models), DX cluster connection, HamQTH/QRZ callbook, a grayliner, online log upload (HamQTH, ClubLog, HRDLog), a most accurate country resolution algorithm based on country tables developed by OK1RR, LoTW/eQSL, membership tracking, bandmap and much more. CQRLOG is strongly focused on easy operation and maintenance.<br />
<br />
[[File:cqrlog.png|800px]]<br />
<br />
=== CudaText Editor ===<br />
<br />
[[CudaText]] is advanced code editor for Win, Linux, OS X.<br />
<br />
[[File:cudatext.png]]<br />
<br />
=== Cut Your Time (CYT) ===<br />
[http://www.trustfm.net/GeneralTools/SoftwareCutYourTime.php Cut your time] is '''portable''' cross platform application for '''Windows''' and '''Linux''' that allows you to create reminders (alarms).<br />
<br />
The documentation for this application can be found [http://www.trustfm.net/GeneralTools/SoftwareCutYourTime.php?page=CutYourTimeTutorial here]<br />
<br />
[[File:CutYourTime.png]]<br />
<br />
=== dbmaker ===<br />
[http://www.rgsoftware.de dbmaker] is a database application using TDbf and LazReport. Its user interface language is german.<br />
<br />
=== Dedalu ===<br />
[http://dedalu.sourceforge.net/ Dedalu] is a collection of small and simple projects developed in Lazarus by Giuseppe Ridinò (aka Pepecito). They are games, editors, utilities, etc.<br />
<br />
=== Dexed ===<br />
[https://bbasile.github.io/dexed/ dexed], formerly known as Coedit, is a small, open-source, cross-platform IDE for the [http://dlang.org/ D language].<br />
It features:<br />
* full featured project format and advanced project editor.<br />
* compile and run directly from the UI.<br />
* instant run (without saving, script-like).<br />
* synchronized edition in a block.<br />
* D2 syntax highlighter, folding, identifier markup.<br />
* module symbol list.<br />
* static libraries manager.<br />
* search and replace.<br />
* user-defined tools powered by a string interpolation system.<br />
* [https://github.com/Hackerpilot/DCD D Completion Daemon] integration for completion proposal and source code hints.<br />
* mini file browser.<br />
<br />
[[Image:coedit.linux.kde.png|640px]]<br />
<br />
[[Image:coedit.win7.png|640px]]<br />
<br />
=== Diacrit ===<br />
[http://www.sandrila.co.uk/diacrit/ Diacrit] is a utility to help with access to Unicode characters, choose the language you want. click the character button and paste into your application. Diacrit was first written in Turbo Pascal for Windows back in 1996, migrated to Delphi, and now upgraded to FP/Lazarus.<br />
<br />
=== Double Commander ===<br />
[http://sourceforge.net/projects/doublecmd/ Double Commander] is a cross platform open source file manager with two panels side by side. It is inspired by Total Commander and features some new ideas. <br />
<br />
=== Etiket ===<br />
[http://www.linuxprogramlama.com/index.php?page=12 Etiket] is a Label design and print tool. GPL licensed.<br />
<br />
=== ExPress ===<br />
[http://code.google.com/p/express-gui ExPress] is a GUI wrapper for UPX (Ultimate Packer for eXecutables).<br />
<br />
=== fenixsql ===<br />
[http://fblib.altervista.org fenixsql] is a simple admin tool for firebird sql database<br />
<br />
=== FileRecovery ===<br />
[http://www.grauonline.de/cmsimple2_6/en/?Solutions:Data_recovery_software FILERECOVERY] is a cross platform application to recover lost and deleted files and formatted disks. It supports all common file systems (FAT/NTFS/EXT2/3/ISO9660/HFS+) and comes with Mac Universal (Intel and PPC) and PC binaries. The application was originally written in Delphi and ported to FreePascal and Lazarus in 2010 and successfully shows that is it possible to develop system applications using modern development tools and the Pascal language.<br />
<br />
=== Fit Easily ===<br />
[http://fiteasily.com Fit Easily] is an online service for building the model of some experimental data, fitting its parameters and storing the results together with the data. Both of the cgi and the core was coded with Lazarus.<br />
<br />
=== fpcup ===<br />
[[fpcup]] is a tool that gets the current version of Free Pascal Compiler (FPC) and Lazarus IDE from their subversion repositories and compiles/installs them. It also compiles and installs whatever packages you want to install.<br />
It also creates a shortcut on your desktop that points to the new Lazarus installation.<br />
<br />
Meant to be used side by side with other FPC/Lazarus installations (it creates a separate primary config path directory for the new Lazarus installation, so it doesn't interfere with existing Lazarus installs)<br />
<br />
It's open source software, please see the code for the license.<br />
Runs on Windows and Linux; experimental support for OSX, FreeBSD.<br />
Run fpcup --help for command line options.<br />
<br />
See: [https://bitbucket.org/reiniero/fpcup fpcup repository and executables site]<br />
<br />
=== Free Pascal Operating System ===<br />
Interested in developing an OS with Free Pascal? This project can be used as a starting point (though incomplete and YOU ARE WELCOME to complete it :-)). Download it [http://code.google.com/p/fpos here](http://code.google.com/p/fpos).<br />
<br />
Another interesting project developed with Free Pascal called TORO can be found at: [http://toro.sourceforge.net TORO:] (http://toro.sourceforge.net).<br />
<br />
=== Golfml Applications ===<br />
[http://code.google.com/p/golfml/wiki/Welcome?tm=6 Golfml Applications] are aimed at golfers and golf course managers. The purpose of [http://code.google.com/p/golfml/ GolfML] is to provide a XML-based file format for the exchange of golf-related data. CourseWriter is an application for easily authoring golfml files and editing them. Golfml Reader is to display and test golfml data files. USGA/EGA Calculator has various golf handicapping functions, and uses golfml data files. Executables for Linux 64 and 32 bit and Windows 64 and 32-bit. Source code for all applications.<br />
<br />
=== GTK-Fireadmin ===<br />
A GTK based Firebird Administration tool using Firebird Objects and Lazarus Components is available [http://sourceforge.net/projects/gtkfireadmin/ here].<br />
<br />
=== Hagen - cross platform html generator ===<br />
<br />
<br />
[http://buch.im-ned.de/hagen Hagen] is a open source (lgpl) cross platform html generator (or client side cms). It supports the web developer by generating a website and writing the pages. For that purpose Hagen will automate as much tasks as it can.<br />
<br />
Features:<br />
<br />
*project management <br />
**variables, functions and settings <br />
**template based and (page) divisions <br />
**source files (.source) for content <br />
*editor <br />
**syntax highlighting <br />
**Markdown <br />
**search over all pages <br />
**insert colors, images, tables and references <br />
*repository <br />
**for data exchange <br />
**for templates <br />
*automation <br />
**automate menu generating <br />
**internal and user defined variables and funktions <br />
**printing page <br />
**generates whole website<br />
<br />
=== Heat Wizard ===<br />
[http://heatwizard.berlios.de/Heat_Wizard.html Heat Wizard] is a command line and GUI tool for the conversion of the voltage of a thermocouple to a temperature and vice versa (for Win32, Mac OS X, and Linux).<br />
<br />
=== Hexy ===<br />
A cross-platform tool for embedded C developers. It automatically converts binary files into C header files containing hexadecimal arrays for integration into embedded projects. The GitHub repo is at (https://github.com/tristan2468/Hexy).<br />
<br />
=== HJSplit for Linux ===<br />
HJSplit for Linux is a freeware file splitter. HJSplit supports file sizes of over 100 Gigabytes, Split, Join/Recombine, MD5 checksums, file-compare and "run without install". Suitable for Linux. Created by [http://www.freebyte.com Freebyte.com] using Lazarus and Free Pascal on Ubuntu 10.x.<br />
<br />
Program home page: http://www.hjsplit.org/linux/<br />
<br />
=== Incredimail to EML ===<br />
[http://www.dominion-it.co.za/development Incredimail2EML] is a util to convert Incredimail to EML format with attachments. The program will also try and continue converting even if it runs into a corrupt mailbox or messages. All messages are created in sub folders that represent the mailbox in Incredimail.<br />
<br />
[[Image:incredimail2eml.png|350px]]<br />
<br />
Program home page: http://www.dominion-it.co.za/development/incredimal_to_eml<br />
<br />
=== ISA Digital Osciloscope ===<br />
A graphical interface for a digital osciloscope. The osciloscope itself is an ISA card with a probe to measure waves. It works on both Windows and Linux. There is some information on how it is being built on [[Hardware Access]]. The full documentation (in English and Portuguese), screenshots and the source code of project can be downloaded [http://eletronicalivre.incubadora.fapesp.br/portal/english/oscilloscope/ here].<br />
<br />
=== JavaneseChess ===<br />
[https://bitbucket.org/leledumbo/javanese-chess JavaneseChess] is a Javanese chess game implementation. Available for Desktop platforms and Android (not feature complete yet).<br />
<br />
=== Kamouflage ===<br />
<strike>[http://wiki.lazarus.freepascal.org/User:Beli0135 Kamouflage] - Camouflage files into images <br />
</strike>. : 17-08-2018 http://www.varnus.com/ server not found<br />
<br />
=== LazEdit ===<br />
[[LazEdit]] is a simple text editor with tabbed document interface, supporting various syntax highlighters.<br />
It also has built-in functions for editing HTML.<br />
<br />
=== LazFileSplitter ===<br />
[http://br.geocities.com/antoniog123456/ LazFileSplitter] is a utility to split and merge big files.<br />
<br />
=== LazUpdater ===<br />
{{Warning|Does not seem to be maintained. A working alternative is fpcup}}<br />
From their web site: [http://forge.lazarusforum.de/projects/lazupdater/ LazUpdater] is a front-end for "svn" and "make" commands with some useful features to install or configure FPC and Lazarus.<br />
Once it's configured you update and rebuild FPC and Lazarus by just one click.<br />
With profiles you can manage different installations.<br />
Written for Linux, Windows, OSX.<br />
<br />
Licence: GPL v3<br />
<br />
=== LazVisual ===<br />
[http://br.geocities.com/antoniog123456/ LazVisual] is an external tool to include resources on executable file and set application icon.<br />
<br />
=== Mep LA ===<br />
[http://software.viamep.com/mepla/ Mep LA] is a simple and fast text editor. Key features: working with txt and html/php files, replacement and some customizable scripts with shortcuts. You can configure replacement and run it with a click or keyboard combination.<br />
<br />
=== MouseWiggler ===<br />
[https://bitbucket.org/leledumbo/mousewiggler MouseWiggler] is a simple application to periodically send message to make mouse move to prevent screen saver from executing (could be useful in a limited environment like a computer lab with auto logoff :p). The wiggle might not be visible because I give no delay between two messages to move the mouse from its current position to somewhere else and back.<br />
<br />
=== MUTerm (Rs232 Terminal) ===<br />
[http://mehmetulukaya.wordpress.com/2012/09/18/muterm-yazilimi-yuklenmeye-hazir/ MUTerm 0.1.1] <br />
MUTerm is a Com Port communication tool for external devices like as Modbus RTU , ASCII etc.<br />
Also you can write your communication routine witwh pascal script.<br />
[http://mehmetulukaya.files.wordpress.com/2012/09/main_screen.jpg Main Screen Shot]<br />
<br />
Additionally some TCP functions (client and server) added yet. <br />
It can be work with internet or localnetwork Modbus TCP or Http.<br />
[http://mehmetulukaya.files.wordpress.com/2012/09/tcp_screen.jpg TCP Connection Screen]<br />
<br />
[https://mehmetulukaya.files.wordpress.com/2016/04/ekran-gc3b6rc3bcntc3bcsc3bc-2016-04-08-091320.png Server screen]<br />
<br />
[[Image:tcp_screen.JPG|500px]]<br />
<br />
MUTerm created with by Lazarus 1.0~1.6 Linux and Windows<br />
[https://sourceforge.net/projects/muterm/files/muterm/ MUTerm Download]<br />
<br />
=== MyNotex ===<br />
[http://sites.google.com/site/mynotex/ MyNotex] is a free software for Gnu/Linux useful to take and to manage textual notes.<br />
<br />
[[Image:Screenshot_of_MyNotex_1.2.0_-_en.png|700px]]<br />
<br />
=== Nom ===<br />
[https://github.com/MFernstrom/nom Nom] is an open source command tool by Marcus Fernström for [http://openbd.org/ OpenBD] CFML projects.<br />
<pre><br />
<-. (`-')_ <-. (`-') <br />
\( OO) ) .-> \(OO )_ <br />
,--./ ,--/ (`-')----. ,--./ ,-.)<br />
| \ | | ( OO).-. '| `.' |<br />
| . '| |)( _) | | || |'.'| |<br />
| |\ | \| |)| || | | |<br />
| | \ | ' '-' '| | | | Version 0.1.6<br />
`--' `--' `-----' `--' `--'<br />
<br />
nom -c Create a new OpenBD project<br />
nom --create Creates a folder and installs the latest OpenBD version<br />
<br />
nom -r Runs the project with Jetty<br />
nom --run<br />
<br />
nom --open Used with -r/--run to open the browser when the server is ready<br />
<br />
nom --deploy Deploys application with target, only Heroku implemented at the moment<br />
nom --heroku Deployment target - Requires you to be logged into Heroku CLI tools<br />
and have a [Heroku] section with a ProjectName=appname in the Nomolicious file<br />
<br />
nom -h Shows this wonderful help<br />
nom --help<br />
<br />
nom -i Downloads and installs a CFLib UDF to WEB-INF/customtags/cflib/.cfc with the same function name<br />
nom --install Example: nom -i IsWeekend. It's then available as a cfc from CFML<br />
<br />
nom -s Creates nomolicious.ini file for the current project<br />
nom --setup<br />
<br />
nom -p Show information about the current project<br />
nom --project<br />
</pre><br />
=== NotePas ===<br />
[http://code.google.com/p/notepas/ NotePas] is an open source multi-platform text editor written in Lazarus. It can be compiled for multiple platforms and widget sets.<br />
<br />
[[Image:notepas_-_code_folding.png]]<br />
<br />
[[Image:notepas_-_codefilter.png]]<br />
<br />
=== P.SEN ===<br />
[http://ancestorsoftware.co.nf/?page_id=14 P.SEN] is a utility to allow sending and receiving TCP and UDP packets and is available for Windows and Linux. It’s designed to be very easy to use while still providing enough features for power users to do what they need. It is completely free (no ads / no bundleware) and opensource. Some knowledge of a basic network protocols is a prerequisite to using it. Beyond that, P.SEN was designed to be very easy to use.<br />
<br />
[[Image:P_SEN_003.png|400px]]<br />
<br />
=== PasDoc ===<br />
[[PasDoc]] ([http://pasdoc.sourceforge.net/ webpage]) is an open-source documentation generator for ObjectPascal source code. It reads documentation from comments in your source code (an option to read it from an external file is also available), and generates nice docs in HTML, LaTeX or other formats. We have a console program, and a cross-platform GUI version using Lazarus.<br />
<br />
=== PasMonTray ===<br />
[http://pasmontray.sourceforge.net/ PasMonTray] is an open-source CPU and memory usage monitor that sits in the system tray. Uses [[TrayIcon]] and various Win32 api calls.<br />
<br />
=== PasViz ===<br />
[http://www.galapagossoftware.com/developer-tools/pasviz PasViz] is a developer utility for automatically generating unit dependency diagrams based on pascal source code. This project is tested on Mac OS X and Windows, and should work on Linux with very minor adjustments. Requires GraphViz (or other software that can view .dot files) for viewing the graphs.<br />
<br />
=== Project PouchHiker ===<br />
[http://www.pouchhiker.com PouchHiker] is written in Lazarus, using KOL-CE and lNet.<br />
PouchHiker lets you connect and participate in the gps-carpool network (www.gps-carpool.net).<br />
<br />
=== Project Theseus ===<br />
Tom Lisjac's [http://theseus.sourceforge.net Project Theseus] is using Lazarus and FPC for creating a rapid deployment and distribution system for Linux called [http://theseus.sourceforge.net/index.php?wiki=EpikBuilder Epik-Builder]. [http://theseus.sourceforge.net/index.php?wiki=EpikStopwatch EpikStopwatch] and [http://theseus.sourceforge.net/index.php?wiki=EpikBrowser EpikBrowser] are also Lazarus based projects that are currently under development. <br />
<br />
=== recALL ===<br />
[http://keit.co/p/recall recALL] is free and portable multifunctional password recovery and auditing solution for Windows - instantly finds and recovers passwords from more than 200 popular applications (FTP, E-mail clients, Instant Messengers, Browsers, etc) and recovering licenses from over 2800 programs. Entirely written in Free Pascal and Lazarus.<br />
<br />
=== QFront ===<br />
[http://www.ullihome.de QFront] is a platform independent frontend for the CPU Emulator QEmu<br />
<br />
=== QueryIt ===<br />
[http://www.cnblogs.com/lazarus/articles/2072143.html QueryIt] includes two functions; one is an AddressBook, another is an URL Collector. [http://images.cnblogs.com/cnblogs_com/lazarus/303383/r_screen_01.png Screen Shot-01]<br />
[http://images.cnblogs.com/cnblogs_com/lazarus/303383/r_screen_02.png Screen Shot-02]<br />
[http://images.cnblogs.com/cnblogs_com/lazarus/303383/r_screen_03.png Screen Shot-03]<br />
[http://images.cnblogs.com/cnblogs_com/lazarus/303383/r_screen_04.png Screen Shot-04]<br />
[http://images.cnblogs.com/cnblogs_com/lazarus/303383/r_screen_05.png Screen Shot-05]<br />
[http://images.cnblogs.com/cnblogs_com/lazarus/303383/r_screen_06.png Screen Shot-06]<br />
<br />
=== Seksi Commander ===<br />
[http://radekc.regnet.cz/ Seksi Commander] is a GPL File manager for Linux developed in Lazarus and Free Pascal.<br />
Integrated bin, text, hex viewer (own component) and editor based on SynEdit.<br />
<br />
=== SFS Technology ===<br />
[http://code.google.com/p/sfs-technology/ SFS-Technology] solves dependency problems on a Debian/Ubuntu/Linux Tiger operating system. <br />
<br />
=== Shell for Gammu (Mobile Phone Tool) ===<br />
The [http://www.petersieg.de/gammush Gammush Site] offers hardcopies and downloads for this<br />
application. Gammush is a shell for gammu.exe. It allows to backup/restore your phone data,<br />
get, edit, put logos, set date+time, send sms messages etc.<br />
<br />
=== Siages ===<br />
[http://siages.solis.coop.br/ Siages] is an ERP application made with Lazarus.<br />
<br />
=== SimpleGit ===<br />
<br />
[http://soft-practice.com/apps/simplegit SimpleGit] is a cross platform user interface for the popular configuration management system '''git''' for Linux, Mac and Windows. SimpleGit doesn't use any of the language of git, it just explains changes, conflicts and resolutions in simple ways with no learning curve between platforms interacting with a hub like GitHub, GitLab or Stash to make using Git easy.<br />
<br />
[[Image:win clone repository.png|320px|Clone a repo on Windows]]<br />
[[Image:linux make change.png|280px|Make a change on Linux]]<br />
[[Image:mac resolve conflict.png|280px|Resolve a conflict on Mac]]<br />
<br />
=== Spacegetti ===<br />
<br />
Update: It might be awhile until I update it again.<br />
<br />
[[File:Screen_Shot_02-14-18_at_05.13_PM.PNG|640px]]<br />
<br />
[[File:Screen_Shot_02-15-18_at_09.29_AM.jpg|640px]]<br />
<br />
[[File:Screen_Shot_02-15-18_at_09.30_AM_001.jpg|640px]]<br />
<br />
[[File:Screen_Shot_02-15-18_at_09.30_AM.jpg|640px]]<br />
<br />
[[File:Screen_Shot_02-15-18_at_09.29_AM_001.jpg|640px]]<br />
<br />
Grabs Web images at set intervals and makes them the Windows desktop.<br />
<br />
*Sources include<br />
<br />
**G16 Full Disk Natural Color<br />
**G16 Full Disk GeoColor<br />
**G16 Full Disk Band 13 (10.3um)<br />
**G16 CONUS Natural Color<br />
**G16 CONUS GeoColor<br />
**G16 CONUS Band 13 (10.3um)<br />
**H8 Full Disk Natural Color<br />
**H8 Full Disk GeoColor<br />
**H8 Full Disk Band 13 (10.3um)<br />
**SDO : 512<br />
**SDO : 1024<br />
**SDO : 2048<br />
**SDO : 4096<br />
**NASA Astronomy Picture of the Day<br />
**NASA Earth Observatory Image of the Day<br />
**NASA Image of the Day<br />
**Real-Time Sky Map (www.skymaponline.net)<br />
**Verse of the Day (www.heartlight.org)<br />
<br />
Also has a built-in telescope calculator<br />
<br />
<br />
[https://drive.google.com/open?id=0B_Jndzk4GdzJWi1rczBEZzhUYTA Download]<br />
<br />
More info at <br />
[https://www.cloudynights.com/topic/589056-i-wrote-a-free-program-that-changes-the-windows-wallpaper-to-geos-16-earth-color-and-sdo-sun-images-every-10-minutes-depending-on-what-you-select/ Astronomy Forum Thread]<br />
<br />
=== Sun Simulator ===<br />
The [http://www.benibela.de/tools_en.html#sunsimulator sun simulator] changes the gamma/brightness/color setting depending on the time and date. It is supposed to synchronize the color of the display to the color of the sun light outside, but before it can do that, you have to manually set your preferred color for some fixed times (e.g. noon, dawn, night). (Windows only)<br />
<br />
=== tomboy-ng notes ===<br />
A note taking app that works and syncronises between Linux, Windows and MacOS. It will also Sync to Tomdroid on Android. It features a rich text markup, printing, spell check, backup and snapshot capability. Import and export (plain text, RFT, MarkDown). It has Tomboy's automatic linking between notes, searching abilities, NoteBooks and a similar interface.<br />
<br />
Inspired by the original Tomboy Notes but without its hard (to impossible) dependencies on GTK and Mono is a great example of just how good FPC/Lazarus really is.<br />
<br />
https://github.com/tomboy-notes/tomboy-ng<br />
<br />
[[File:tomboy-ng-1.png]]<br />
<br />
=== Transmission Remote GUI ===<br />
[http://transgui.sourceforge.net// Transmission Remote GUI] is a feature rich cross platform front-end to remotely control a Transmission Bit-Torrent client daemon via its RPC protocol. Transmission Remote GUI is faster and has more functionality than the build-in Transmission web interface.<br />
<br />
=== Turbo Dictionary ===<br />
[http://www.turbog.com/2012/04/18/turbo-dictionary/ Turbo Dictionary] is a It is a english to turkish dictionary. It is a GPL licensed software.<br />
<br />
=== Turbo Postman ===<br />
[http://www.turbog.com/2012/04/18/turbo-postman/ Turbo Postman] is a It is a mass mail sending tool. You can use a text formatted file or a MySQL database for mail sending list. It is a GPL licensed software.<br />
<br />
=== Turbo Talker ===<br />
[http://www.turbog.com/2012/04/18/turbo-talker/ Turbo Talker] is a Network messaging tool with DES encryption support. You can configure port number and 8 byte DES key. It is peer-to-peer application. It is licensed under GPL license.<br />
<br />
=== Ubuntu Control Center ===<br />
Ubuntu Control Center or UCC is an application inspired by Mandriva Control Center and aims to centralize and organize in a simple and intuitive form the main configuration tools for Ubuntu distribution. UCC uses all the native applications already bundled with Ubuntu, but it also utilize some third-party apps like "Hardinfo", "Boot-up Manager", "GuFW" and "Font-Manager".<br />
<br />
=== Virtual Magnifying Glass ===<br />
[http://magnifier.sourceforge.net/ Virtual Magnifying Glass] is designed for visually-impaired and others who need to magnify a part of the screen. Unlike most similar programs it does not open a separate window for the magnification but instead puts a movable magnifying glass on screen. The project was converted from Visual Studio .NET to Lazarus and now offers a Linux version. Mac OS X and Pocket PC versions are planned.<br />
<br />
=== WandS ===<br />
[http://sourceforge.net/projects/wands/ WandS] (Wake and Shutdown) is a program for webmasters or sysadmins for taking control of servers at datacenters. With WandS, you can shutdown or wake up any server or server group at any time through SSH or SMB.<br />
<br />
=== Wi(n)XtaP ===<br />
[http://www.freewebs.com/bpsoftware/ Wi(n)Xtap] (formed by the words Windows XP Vista) was a program created for early versions of Lazarus. This program allowed the creation of the .manifest file so to set up a graphical theme to your application and it allowed the user to define a customized icon. This program is useless since 0.9.24 because those features have been implemented into the IDE itself. Stable releases of Wi(n)XtaP where the 4.0 beta, 5.0, 6.0 and the latest 6.1 (fixes of 6.0). Further plans to expand its capabilities are temporally blocked.<br />
<br />
=== WikiHelp ===<br />
[http://www.ullihome.de WikiHelp] is a small tool that generates HTML pages from a Wiki. It downloads the content automatically and convert the WikiText pages into HTML. Most WikiText features are useable including images, tables and so on.<br />
<br />
=== Win32 API Manager ===<br />
The [http://www.benibela.de/tools_en.html#apim API Manager] is a very old program giving a GUI for Win32 API functions. It can do everything there is an API function for, e.g. list all processes, change their priority or kill them; list all windows and change their attributes (e.g. change a password, edit to a normal, readable edit) ... It was originally written with D4 for Win98, but I ported it to Lazarus and added support for NT-platform functions. So, it should still work nowadays.<br />
<br />
=== WindSirf ===<br />
The [http://windsurfer.me.uk WindSirf] application reads and displays files from the GTS-31 GPS. Initially it is aimed at windsurfers, but may expand its capabilities. The initial release is for Win 32 only.<br />
<br />
=== Xidel ===<br />
A platform independent [http://videlibri.sourceforge.net/xidel.html command line tool] to download webpages and extract data from them, using XPath 2 / XQuery expressions, CSS 3 selectors or custom pattern-matching templates. It is kind of an example for my [[Projects_using_Lazarus#Internet_Tools | internet tools]].<br />
<br />
'''If your Lazarus project should be listed here, please edit this page and add it!'''<br />
<br />
[[Category:Lazarus]]<br />
[[Category:Promotion]]<br />
[[Category: Software written in Free Pascal]]<br />
[[Category: Software created with Lazarus]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Games&diff=125045Games2019-06-18T09:22:04Z<p>Ñuño Martínez: Added (and updated) links to wiki pages Game Engine and Game Framework.</p>
<hr />
<div>{{Infobox game development}}<br />
<br />
==Games==<br />
<br />
Games written with Free Pascal. Currently active projects commercial, closed or open source. Some more also [[Projects using Lazarus#Games]].<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Open Source<br />
! Notes<br />
|- <br />
| Darkest Before the Dawn<br />
| http://castle-engine.sourceforge.net/darkest_before_dawn.php [https://play.google.com/store/apps/details?id=net.sourceforge.castleengine.darkestbeforedawn Google Play (Android version)]<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Castle<br />
| http://castle-engine.sourceforge.net/castle.php<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Diablo Roguelike<br />
| [http://diablo.chaosforge.org/ doom.chaosforge.org] [http://sourceforge.net/projects/diablorl/ Sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| Doom Roguelike<br />
| [http://doom.chaosforge.org/ doom.chaosforge.org]<br />
| {{No}}<br />
|<br />
|- <br />
| Escape from the Universe<br />
| https://play.google.com/store/apps/details?id=com.catastrophe.games.escape.universe.space.shooter<br />
| {{No}}<br />
| Using Castle Game Engine<br />
|-<br />
| HedgeWars<br />
| [http://www.hedgewars.org/ www.hedgewars.org]<br />
| {{Yes}}<br />
| <br />
|- <br />
| Project "W"<br />
| [http://www.pascalgamedevelopment.com/showthread.php?3594-Projekt-quot-W-quot PascalGameDevelopment.com ]<br />
| {{No}}<br />
|<br />
|- <br />
| Scrabble 3D<br />
| [http://sourceforge.net/projects/scrabble/ sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| UltraStar Deluxe<br />
| [http://sourceforge.net/projects/ultrastardx/ sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| Minimon 3D<br />
| [http://www.minimon3d.com http://www.minimon3d.com]<br />
| {{No}}<br />
|<br />
|- <br />
| Mountains of Fire<br />
| http://castle-engine.sourceforge.net/mountains_of_fire.php<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Shu<br />
| [http://sourceforge.net/projects/rr-rr sourceforge.net]<br />
| {{Yes}}<br />
| Interesting looking RPG - in progress<br />
|- <br />
| Project Helena<br />
| [https://sourceforge.net/projects/projecthelena/ sourceforge.net]<br />
| {{Yes}}<br />
| A game by Eugene Loza<br />
|- <br />
| Asteroids vs You<br />
| [https://github.com/dimsa/ShadowEngine/ github.com], [https://play.google.com/store/apps/details?id=com.ShadowEngine.AsteroidsVsYou Google Play (Android version)]<br />
| {{Yes}}<br />
| Open Source Demo Game for SO Engine<br />
|}<br />
<br />
==Notable games written in Pascal==<br />
Here's a list of notable games made in Pascal or Object Pascal.<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name<br />
! Site<br />
! License<br />
! Source available<br />
! Notes<br />
|-<br />
| Peg Solitaire<br />
| [[Peg Solitaire tutorial]]<br />
| Public Domain<br />
<br />
There's no license note, so I'm wondering. It may be ''Creative Commons'' as well.<br />
| {{Yes}}<br />
| A step-by-step explanation of how to build a [http://en.wikipedia.org/wiki/Peg_solitaire Peg Solitaire] using Lazarus.<br />
|-<br />
| Hedgewars<br />
| [http://www.hedgewars.org/ www.hedgewars.org]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| {{Yes}}<br />
| A well known [https://en.wikipedia.org/wiki/Worms_%28series%29 Worms] clone.<br />
|-<br />
| [https://en.wikipedia.org/wiki/List_of_minor_Apogee_Software_video_games#Beyond_the_Titanic Beyond the Titanic]<br />
| [http://legacy.3drealms.com/downloads.html#titanic Download page at 3DReams website]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| {{Yes}}<br />
| An early game by Apogee.<br />
|- <br />
| Darkest Before the Dawn<br />
|<br />
[https://play.google.com/store/apps/details?id=net.sourceforge.castleengine.darkestbeforedawn Google Play]<br />
[https://github.com/castle-engine/darkest-before-dawn GitHub]<br />
[http://castle-engine.sourceforge.net/darkest_before_dawn.php Sourceforge]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| {{Yes}}<br />
| First game using [[Castle Game Engine]] in Android.<br />
|- <br />
| Ultrastar Deluxe (USDX)<br />
| [https://github.com/UltraStar-Deluxe/USDX GitHub]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| {{Yes}}<br />
|A karaoke game, basically an OSS Singstar clone<br />
|-<br />
| Mundo<br />
| [https://sourceforge.net/projects/gamemundo/ SourceForge]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| {{Yes}}<br />
| Maybe the first [https://en.wikipedia.org/wiki/Massively_multiplayer_online_role-playing_game MMORPG] written in Pascal.<br />
|}<br />
<br />
==Pascal Ported Games==<br />
This list contains games written in other languages ported to Pascal. Note that most them were written for [[Delphi]] but may be they can be compiled/ported to Free Pascal too.<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! License<br />
! Notes<br />
|-<br />
| Delphi Doom<br />
| [http://sourceforge.net/projects/delphidoom/ Sourceforge]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
|<br />
|- <br />
| Quake to Delphi<br />
| [http://sourceforge.net/projects/delphiquake/ Sourceforge] <br />
[http://www.geocities.ws/jimmyvalavanis/applications/delphiquake.html Geocities]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| Sourcefoge is the active one. The old-site appears to be quite dead now. Though the source code can still be downloaded.<br />
|-<br />
| Quake II Delphi (Quake 2 Delphi)<br />
| [http://www.sulaco.co.za/quake2/ www.sulaco.co.za]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| <br />
|-<br />
| C-evo<br />
| [http://www.c-evo.org/ www.c-evo.org]<br />
| Public Domain<br />
| The game is inspired by Civilization 2 game. It was spotted on [http://forum.lazarus.freepascal.org/index.php/topic,7914.0.html the forum] back in 2009. The engine used is not the original Civilization II engine. So as long as graphical resources are different, it's quite good TBS engine.<br />
|}<br />
<br />
==Game lists==<br />
You can find more games in the next links:<br />
<br />
* [[Projects using Lazarus#Games|Games]] section at page [[Projects using Lazarus]].<br />
* [http://forum.lazarus.freepascal.org/index.php/topic,39425.0.html Games from the Lazarus Graphics Contest]<br />
* [http://www.sourcecodeonline.com/sources/delphi/games.html Delphi games]<br />
* [http://www.pascalgamedevelopment.com/showthread.php?4519-The-great-list-of-Pascal-Games The great list of Pascal Games]<br />
<br />
Available [[Game Engine|game engines]] and [[Game framework|game frameworks]] also include examples and game demos.<br />
<br />
[[Category:Games]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Game_framework&diff=124043Game framework2019-04-01T09:25:10Z<p>Ñuño Martínez: Added "ZenGL" and "Steam Wrapper"</p>
<hr />
<div>{{Infobox game development}}<br />
<br />
A '''game framework''' is a library designed to help game development. It usually defines [https://en.wikipedia.org/wiki/Application_programming_interface APIs] to deal with [[Graphics libraries|graphics]], sound, user input, data files, etc. In most cases it defines a high-level API that allows [[cross-platform]] development.<br />
<br />
Main difference between game frameworks and [[Game Engine|game engines]] is that the later also implements the game loop, as well as complex data structures (maps, actors...), data containers and tools.<br />
<br />
==Game frameworks==<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Usage<br />
! License<br />
! Notes<br />
|-<br />
| [[FPC_and_Allegro|Allegro]]<br />
| [http://liballeg.org/ liballeg.org]<br />
| [http://allegro-pas.sourceforge.net/ Bindings Allegro-pas]<br />
| Allegro 1-4: Beerware, Allegro 5: zlib<br />
| Allegro is a cross-platform library mainly aimed at video game and multimedia programming. It handles common, low-level tasks such as creating windows, accepting user input, loading data, drawing images, playing sounds, etc. and generally abstracting away the underlying platform.<br />
|-<br />
| Phoenix<br />
| [https://code.google.com/p/phoenixlib/ code.google.com]<br />
| FPC/Delphi<br />
|<br />
| A set of Delphi 7+ and Freepascal components and classes to help in creating hardware accelerated 2D and 3D games.<br />
|-<br />
| [[GLScene]]<br />
| [http://glscene.sourceforge.net/ sourceforge.net] <br />
| FPC/Delphi<br />
| Mozilla Public License<br />
| GLScene is a free OpenGL-based library for the Delphi programming language, C++ and Free Pascal. It provides visual components and objects allowing description and rendering of 3D scenes.<br />
|-<br />
| SFML<br />
| [https://www.sfml-dev.org/ https://www.sfml-dev.org] <br />
| FPC/Lazarus [https://github.com/DJMaster/csfml-fpc SFML headers] [https://github.com/CWBudde/PasSFML PasSFML(OOP)]<br />
|<br />
| SFML is a simple, fast, cross-platform and object-oriented multimedia API. It provides access to windowing,<br />
graphics, audio and network. <br />
|-<br />
| SDL<br />
| [http://www.libsdl.org www.libsdl.org] <br />
| [http://sourceforge.net/projects/sdl2fpc/?source=directory SDL2 bindings for FPC] [https://sourceforge.net/projects/lazsdl2/ Laz2SDL] [https://github.com/ev1313/Pascal-SDL-2-Headers SDL2 Headers] <br />
|<br />
| Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, <br />
and graphics hardware via OpenGL and Direct3D<br />
|-<br />
| [[ZenGL]]<br />
| [http://www.zengl.org/ www.zengl.org] <br />
| FPC/Delphi<br />
| [http://www.zengl.org/license.html Zlib]<br />
| Cross-platform game development library written in Pascal, designed to provide necessary functionality for rendering 2D-graphics, <br />
handling input, sound output, etc.<br />
|}<br />
<br />
==Other libraries for games==<br />
Libraries that aren't to create games but are usefult. <br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Usage<br />
! License<br />
! Notes<br />
|-<br />
| [[Steam Wrapper]]<br />
| [https://github.com/thecocce/steamwrapper https://github.com/thecocce/steamwrapper] <br />
| FPC/Delphi<br />
|<br />
| Cross-platform game development wrapper written in Pascal, designed to provide necessary functionality for rendering 2D-graphics, <br />
handling input, sound output, etc.<br />
|}<br />
<br />
==See also==<br />
* [[Graphics libraries]]<br />
* [[Game Engine|Game engine]]<br />
<br />
<br />
[[Category:Game Development]] [[Category:Games]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Game_Engine&diff=124042Game Engine2019-04-01T09:24:47Z<p>Ñuño Martínez: /* Game Engines */ "ZenGL" and "Steam Wrapper" moved th the "Game framework" page.</p>
<hr />
<div>{{Game_Engine}}<br />
{{Infobox game development}}<br />
<br />
A '''game engine''' is a software development environment designed to create [[Games|games]]. It distinguish from [[Game framework|game libraries]] in that:<br />
* Implements the ''game loop'', resource managers and other complex subsystems as networking communications, user interfaces and configuration systems.<br />
* Implements complex data structures, such as maps, particle systems and actors.<br />
* Implements tools as editors and data managers.<br />
All these subsystems would affect in gameplay aspects as movement, scoring or even genre. You can read this [http://en.wikipedia.org/wiki/Game_engine Wikipedia page] for more information.<br />
<br />
== Game Engines ==<br />
Here's a list of game engines that are Pascal/Delphi based or have Pascal binding libraries.<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Usage<br />
! Notes<br />
|-<br />
| [[Castle Game Engine]] <br />
| [https://castle-engine.sourceforge.io/ castle-engine.sourceforge.io] <br />
| FPC<br />
| 2D & 3D, all platforms supported<br />
|-<br />
| Quad-Engine<br />
| [http://quad-engine.com/ quad-engine.com] <br />
| Delphi/FPC/C#/C++<br />
| v0.9.0 (Diamond) 2018-01-15<br />
|-<br />
| TERRA Game Engine <br />
| [https://github.com/Relfos/TERRA-Engine github.com/Relfos/TERRA-Engine]<br />
| Delphi/FPC/Oxygene<br />
| 2D & 3D, all platforms supported<br />
|-<br />
| [[nxPascal]]<br />
| [https://github.com/Zaflis/nxpascal github.com]<br />
| FPC/Delphi<br />
| For now only OpenGL is supported. No android or other mobile support yet.<br />
|-<br />
| g2mp<br />
| [https://github.com/MrDan2345/g2mp github.com]<br />
| FPC<br />
| Ideologically replaced Dan Jet X, multiplatform, editor- and code-based development <br />
|-<br />
| Andorra 2D<br />
| [http://andorra.sourceforge.net/ sourceforge.net]<br />
| Delphi<br />
| Last update 2008<br />
|-<br />
| CAST II Game Engine<br />
| [http://www.casteng.com/ http://www.casteng.com/]<br />
| Delphi<br />
| Alive? last update 2011<br />
|-<br />
| Delphi X <br />
| [http://www.micrel.cz/Dx/ www.micrel.cz/Dx]<br />
| Delphi<br />
|<br />
|-<br />
| Afterwarp<br />
| [http://www.afterwarp.net/ www.afterwarp.net]<br />
| FPC/Delphi<br />
| <br />
|-<br />
| Brtech1<br />
| [http://www.pascalgamedevelopment.com/showthread.php?13795-Brtech1 PascalGameDevelopment.com]<br />
| FPC<br />
| Not really available as an engine or library. Many videos can be found on youtube though. <br />
|-<br />
| GameMaker: Studio<br />
| [http://www.yoyogames.com/ www.yoyogames.com] <br />
| N/A <br />
| Yes, it's not really a game engine library. But it's a game engine and studio written in Delphi. Special Pascal proud. <br />
|-<br />
| MinGRo<br />
| [https://www.sf.net/p/mingro SourceForge]<br />
| FPC<br />
| Designed for old-school style games. Still work in progress. Build with [[FPC_and_Allegro|Allegro.pas]].<br />
|-<br />
| ZGameEditor<br />
| [http://www.zgameeditor.org/ www.zgameeditor.org] <br />
| FPC/Delphi<br />
| use OpenGL for graphics and a real time synthesizer for audio<br />
|-<br />
| SO Engine<br />
| [https://github.com/dimsa/ShadowEngine github.com] <br />
| Delphi/FMX<br />
| Small Crossplatform (Win, Android, iOs) indy engine with formatters, animations, intersections and etc.<br />
|-<br />
| DGLE<br />
| [https://github.com/DGLE-HQ/DGLE github.com] <br />
| Delphi/FPC/C#/C++<br />
| Powerful free open source cross-platform game engine.<br />
|}<br />
<br />
==Physics Engines==<br />
These engines simulate the physical world (collisions, trajectories etc). Not really game engines per se, but could certainly be used in games.<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Usage<br />
! Notes<br />
|-<br />
| TundAx<br />
| [https://github.com/JordiCorbilla/thundax-delphi-physics-engine github.com]<br />
| FPC/Delphi<br />
| <br />
|-<br />
| Newton<br />
| [http://www.saschawillems.de/ www.saschawillems.de]<br />
| [http://www.saschawillems.de/?page_id=76 Bindings]<br />
| <br />
|-<br />
| Box2D-Delphi<br />
| [https://code.google.com/p/box2d-delphi/ code.google.com] <br />
| FPC/Delphi<br />
| This is Delphi implementation of [http://code.google.com/p/box2d/ Box2d] library<br />
|-<br />
| Kraft<br />
| [https://github.com/BeRo1985/kraft github.com]<br />
| FPC/Delphi<br />
| Pascal native physics engine by Benjamin Rosseaux. <br />
|-<br />
| PAPPE - PAscal Powerful Physics Engine<br />
| [https://sourceforge.net/projects/pappe/ sourceforge.net]<br />
| FPC/Delphi<br />
| Pascal native physics engine by Benjamin Rosseaux. The engine was deprecated by Kraft<br />
|}</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Game_Engine&diff=121106Game Engine2018-11-14T10:09:23Z<p>Ñuño Martínez: Changed a bit the mention to "networking communications", as it isn't a requisite.</p>
<hr />
<div>{{Game_Engine}}<br />
{{Infobox game development}}<br />
<br />
{{Warning|This page needs to be fixed and actualized:<br />
* Games should be in the new [[Games]] page.<br />
}}<br />
<br />
A '''game engine''' is a software development environment designed to create [[Games|games]]. It distinguish from [[Game framework|game libraries]] in that:<br />
* Implements the ''game loop'', resource managers and other complex subsystems as networking communications, user interfaces and configuration systems.<br />
* Implements complex data structures, such as maps, particle systems and actors.<br />
* Implements tools as editors and data managers.<br />
All these subsystems would affect in gameplay aspects as movement, scoring or even genre. You can read this [http://en.wikipedia.org/wiki/Game_engine Wikipedia page] for more information.<br />
<br />
== Game Engines ==<br />
Here's a list of game engines that are Pascal/Delphi based or have Pascal binding libraries.<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Usage<br />
! Notes<br />
|-<br />
| [[Castle Game Engine]] <br />
| [https://castle-engine.sourceforge.io/ castle-engine.sourceforge.io] <br />
| FPC<br />
|<br />
|-<br />
| Quad-Engine<br />
| [http://quad-engine.com/ quad-engine.com] <br />
| Delphi/FPC/C#/C++<br />
| v0.9.0 (Diamond) 2018-01-15<br />
|-<br />
| TERRA Game Engine <br />
| [https://github.com/Relfos/TERRA-Engine github.com/Relfos/TERRA-Engine]<br />
| Delphi/FPC/Oxygene<br />
| 2D & 3D, all platforms supported<br />
|-<br />
| [[nxPascal]]<br />
| [https://github.com/Zaflis/nxpascal github.com]<br />
| FPC/Delphi<br />
| For now only OpenGL is supported. No android or other mobile support yet.<br />
|-<br />
| g2mp<br />
| [https://github.com/MrDan2345/g2mp github.com]<br />
| FPC<br />
| Ideologically replaced Dan Jet X, multiplatform, editor- and code-based development <br />
|-<br />
| Andorra 2D<br />
| [http://andorra.sourceforge.net/ sourceforge.net]<br />
| Delphi<br />
| <br />
|-<br />
| CAST II Game Engine<br />
| [http://www.casteng.com/ http://www.casteng.com/]<br />
| Delphi<br />
| Alive? last update 2011<br />
|-<br />
| Delphi X <br />
| [http://www.micrel.cz/Dx/ www.micrel.cz/Dx]<br />
| Delphi<br />
|<br />
|-<br />
| Afterwarp<br />
| [http://www.afterwarp.net/ www.afterwarp.net]<br />
| FPC/Delphi<br />
| <br />
|-<br />
| Brtech1<br />
| [http://www.pascalgamedevelopment.com/showthread.php?13795-Brtech1 PascalGameDevelopment.com]<br />
| FPC<br />
| Not really available as an engine or library. Many videos can be found on youtube though. <br />
|-<br />
| GameMaker: Studio<br />
| [http://www.yoyogames.com/ www.yoyogames.com] <br />
| N/A <br />
| Yes, it's not really a game engine library. But it's a game engine and studio written in Delphi. Special Pascal proud. <br />
|-<br />
| MinGRo<br />
| [https://www.sf.net/p/mingro SourceForge]<br />
| FPC<br />
| Designed for old-school style games. Still work in progress. Build with Allegro.pas.<br />
|-<br />
| ZGameEditor<br />
| [http://www.zgameeditor.org/ www.zgameeditor.org] <br />
| FPC/Delphi<br />
| use OpenGL for graphics and a real time synthesizer for audio<br />
|-<br />
| SO Engine<br />
| [https://github.com/dimsa/ShadowEngine github.com] <br />
| Delphi/FMX<br />
| Small Crossplatform (Win, Android, iOs) indy engine with formatters, animations, intersections and etc.<br />
|-<br />
| DGLE<br />
| [https://github.com/DGLE-HQ/DGLE github.com] <br />
| Delphi/FPC/C#/C++<br />
| Powerful free open source cross-platform game engine.<br />
|-<br />
| [[Steam Wrapper]]<br />
| [https://github.com/thecocce/steamwrapper https://github.com/thecocce/steamwrapper] <br />
| FPC/Delphi<br />
| Cross-platform game development wrapper written in Pascal, designed to provide necessary functionality for rendering 2D-graphics, <br />
handling input, sound output, etc.<br />
|-<br />
| [[ZenGL]]<br />
| [http://www.zengl.org/ www.zengl.org] <br />
| FPC/Delphi<br />
| Cross-platform game development library written in Pascal, designed to provide necessary functionality for rendering 2D-graphics, <br />
handling input, sound output, etc.<br />
|}<br />
<br />
==Physics Engines==<br />
These engines simulate the physical world (collisions, trajectories etc). Not really game engines per se, but could certainly be used in games.<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Usage<br />
! Notes<br />
|-<br />
| TundAx<br />
| [https://github.com/JordiCorbilla/thundax-delphi-physics-engine github.com]<br />
| FPC/Delphi<br />
| <br />
|-<br />
| Newton<br />
| [http://www.saschawillems.de/ www.saschawillems.de]<br />
| [http://www.saschawillems.de/?page_id=76 Bindings]<br />
| <br />
|-<br />
| Box2D-Delphi<br />
| [https://code.google.com/p/box2d-delphi/ code.google.com] <br />
| FPC/Delphi<br />
| This is Delphi implementation of [http://code.google.com/p/box2d/ Box2d] library<br />
|-<br />
| Kraft<br />
| [https://github.com/BeRo1985/kraft github.com]<br />
| FPC/Delphi<br />
| Pascal native physics engine by Benjamin Rosseaux. <br />
|-<br />
| PAPPE - PAscal Powerful Physics Engine<br />
| [https://sourceforge.net/projects/pappe/ sourceforge.net]<br />
| FPC/Delphi<br />
| Pascal native physics engine by Benjamin Rosseaux. The engine was deprecated by Kraft<br />
|}<br />
<br />
==Games==<br />
''Main article: [[Games]]''<br />
<br />
Games written with Free Pascal. Currently active projects commercial, closed or open source. Some more [[Projects_using_Lazarus#Games|here]].<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Open Source<br />
! Notes<br />
|- <br />
| Darkest Before the Dawn<br />
| http://castle-engine.sourceforge.net/darkest_before_dawn.php [https://play.google.com/store/apps/details?id=net.sourceforge.castleengine.darkestbeforedawn Google Play (Android version)]<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Castle<br />
| http://castle-engine.sourceforge.net/castle.php<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Diablo Roguelike<br />
| [http://diablo.chaosforge.org/ doom.chaosforge.org] [http://sourceforge.net/projects/diablorl/ Sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| Doom Roguelike<br />
| [http://doom.chaosforge.org/ doom.chaosforge.org]<br />
| {{No}}<br />
|<br />
|- <br />
| Escape from the Universe<br />
| https://play.google.com/store/apps/details?id=com.catastrophe.games.escape.universe.space.shooter<br />
| {{No}}<br />
| Using Castle Game Engine<br />
|-<br />
| HedgeWars<br />
| [http://www.hedgewars.org/ www.hedgewars.org]<br />
| {{Yes}}<br />
| <br />
|- <br />
| Project "W"<br />
| [http://www.pascalgamedevelopment.com/showthread.php?3594-Projekt-quot-W-quot PascalGameDevelopment.com ]<br />
| {{No}}<br />
|<br />
|- <br />
| Scrabble 3D<br />
| [http://sourceforge.net/projects/scrabble/ sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| UltraStar Deluxe<br />
| [http://sourceforge.net/projects/ultrastardx/ sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| Minimon 3D<br />
| [http://www.minimon3d.com http://www.minimon3d.com]<br />
| {{No}}<br />
|<br />
|- <br />
| Mountains of Fire<br />
| http://castle-engine.sourceforge.net/mountains_of_fire.php<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Shu<br />
| [http://sourceforge.net/projects/rr-rr sourceforge.net]<br />
| {{Yes}}<br />
| Interesting looking RPG - in progress<br />
|- <br />
| Project Helena<br />
| [https://sourceforge.net/projects/projecthelena/ sourceforge.net]<br />
| {{Yes}}<br />
| A game by Eugene Loza<br />
|- <br />
| Asteroids vs You<br />
| [https://github.com/dimsa/ShadowEngine/ github.com], [https://play.google.com/store/apps/details?id=com.ShadowEngine.AsteroidsVsYou Google Play (Android version)]<br />
| {{Yes}}<br />
| Open Source Demo Game for SO Engine<br />
|}</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Games&diff=121105Games2018-11-14T09:59:57Z<p>Ñuño Martínez: /* Game lists */ Adding link to "Projects using Lazarus".</p>
<hr />
<div>{{Infobox game development}}<br />
<br />
==Games written in Pascal==<br />
Here's a list of notable games made in Pascal or Object Pascal.<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name<br />
! Site<br />
! License<br />
! Source available<br />
! Notes<br />
|-<br />
| Peg Solitaire<br />
| [[Peg Solitaire tutorial]]<br />
| Public Domain<br />
<br />
There's no license note, so I'm wondering. It may be ''Creative Commons'' as well.<br />
| {{Yes}}<br />
| A step-by-step explanation of how to build a [http://en.wikipedia.org/wiki/Peg_solitaire Peg Solitaire] using Lazarus.<br />
|-<br />
| Hedgewars<br />
| [http://www.hedgewars.org/ www.hedgewars.org]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| {{Yes}}<br />
| A well known [https://en.wikipedia.org/wiki/Worms_%28series%29 Worms] clone.<br />
|-<br />
| [https://en.wikipedia.org/wiki/List_of_minor_Apogee_Software_video_games#Beyond_the_Titanic Beyond the Titanic]<br />
| [http://legacy.3drealms.com/downloads.html#titanic Download page at 3DReams website]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| {{Yes}}<br />
| An early game by Apogee.<br />
|- <br />
| Darkest Before the Dawn<br />
|<br />
[https://play.google.com/store/apps/details?id=net.sourceforge.castleengine.darkestbeforedawn Google Play]<br />
[https://github.com/castle-engine/darkest-before-dawn GitHub]<br />
[http://castle-engine.sourceforge.net/darkest_before_dawn.php Sourceforge]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| {{Yes}}<br />
| First game using [[Castle Game Engine]] in Android.<br />
|- <br />
| Ultrastar Deluxe (USDX)<br />
| [https://github.com/UltraStar-Deluxe/USDX GitHub]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| {{Yes}}<br />
|A karaoke game, basically an OSS Singstar clone<br />
|-<br />
| Mundo<br />
| [https://sourceforge.net/projects/gamemundo/ SourceForge]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| {{Yes}}<br />
| Maybe the first [https://en.wikipedia.org/wiki/Massively_multiplayer_online_role-playing_game MMORPG] written in Pascal.<br />
|}<br />
<br />
==Pascal Ported Games==<br />
This list contains games written in other languages ported to Pascal. Note that most them were written for [[Delphi]] but may be they can be compiled/ported to Free Pascal too.<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! License<br />
! Notes<br />
|-<br />
| Delphi Doom<br />
| [http://sourceforge.net/projects/delphidoom/ Sourceforge]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
|<br />
|- <br />
| Quake to Delphi<br />
| [http://sourceforge.net/projects/delphiquake/ Sourceforge] <br />
[http://www.geocities.ws/jimmyvalavanis/applications/delphiquake.html Geocities]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| Sourcefoge is the active one. The old-site appears to be quite dead now. Though the source code can still be downloaded.<br />
|-<br />
| Quake II Delphi (Quake 2 Delphi)<br />
| [http://www.sulaco.co.za/quake2/ www.sulaco.co.za]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| <br />
|-<br />
| Civilization 2<br />
| [http://www.c-evo.org/ www.c-evo.org]<br />
| Public Domain<br />
| It was spotted on [http://forum.lazarus.freepascal.org/index.php/topic,7914.0.html the forum] back in 2009. The engine used is not the original Civilization II engine. So as long as graphical resources are different, it's quite good TBS engine.<br />
|}<br />
<br />
==Game lists==<br />
You can find more games in the next links:<br />
<br />
* A brief list at the [[Game Engine]] wiki page.<br />
* [[Projects using Lazarus#Games|Games]] section at page [[Projects using Lazarus]].<br />
* [http://forum.lazarus.freepascal.org/index.php/topic,39425.0.html Games from the Lazarus Graphics Contest]<br />
* [http://www.sourcecodeonline.com/sources/delphi/games.html Delphi games]<br />
* [http://www.pascalgamedevelopment.com/showthread.php?4519-The-great-list-of-Pascal-Games The great list of Pascal Games]<br />
<br />
Available [[Game Engine|Game Engines]] also include examples and game demos.<br />
<br />
[[Category:Games]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Projects_using_Free_Pascal&diff=121104Projects using Free Pascal2018-11-14T09:56:40Z<p>Ñuño Martínez: /* Games */ Link to Games wikipage</p>
<hr />
<div>{{Projects using Lazarus}}<br />
<br />
==See also==<br />
<br />
* [[Lazarus Application Gallery]] <br />
* [[Components and Code examples]]<br />
* [[FPC_Applications/Projects_Gallery]]<br />
* [[Operating Systems written in FPC]]<br />
* [[Using the Lazarus-ccr SVN repository]]<br />
* [[Case Studies]]<br />
* [https://lazarusccr.github.io/apps/ Lazarus Apps Showcase on GitHub]<br />
<br />
== Components and Libraries ==<br />
<br />
=== 5dpo ===<br />
[[5dpo]] Component Library is a set of components developed by the [http://www.fe.up.pt/~robosoc 5dpo Robotic Soccer Team]. It provides a visual serial port (TSdpoSerial) implementation of [[Projects_using_Lazarus#Synaser|Synaser]], an IEEE1394 camera (TSdpoVideo1394) component, an [http://linux-uvc.berlios.de/ UVC video] driver component (TSdpoVideo4L2) for webcams, a Gtk fast painting form (TSdpoFastForm) and a Joystick (TSdpoJoystick) component.<br />
<br />
=== ACBr ===<br />
[https://sourceforge.net/projects/acbr/ Project ACBr] Suite Components facing Commercial Automation. Working with ECF, TEF, NF-e, CT-e, MDF-e, SPED, NFS-e targeted to Brazilian Software. [http://www.projetoacbr.com.br/forum/index.php Fórum ACBr]. GNU Library or Lesser General Public License version 2.0 (LGPLv2).<br />
<br />
=== Alcinoe ===<br />
<br />
Alcinoe is a set of components written in assembly language x86.<br />
[https://liberlog.fr/Alcinoe Here is Alcinoe for Lazarus].<br />
<br />
=== Audorra ===<br />
[http://audorra.sourceforge.net Audorra] is a digital audio library for Delphi and Free Pascal. Using a flexible plugin architecture, it allows you to exchange the audio backend (e.g. WaveOut, OpenAL), add protocol classes (e.g. file, http) and decoders. <br />
<br />
=== BrasLib ===<br />
[http://br.groups.yahoo.com/group/BrasLib-devel/ BrasLib] is a new report component for Lazarus under development by Brazilian programmers. <br />
<br />
=== Brook Framework ===<br />
<br />
[[Brook Framework]] is the Free Pascal framework for web applications. It's complete: simple actions or configurable actions for database access, advanced routing features, wizard for Lazarus, support for i18n, high compatibility with [[JSON]] structures, easy and elegant REST implementation, plugins etc...<br />
<br />
=== CUPS ===<br />
[http://cups4lazarus.sourceforge.net/ CUPS for Lazarus] is bindings for Pascal to use the CUPS (Common UNIX Printing System) libraries. With some dialogs for select printer, setup printer, setup printer jobs.<br />
<br />
{{Note|This package is deprecated, Cups for Lazarus is now integrated in Printers4Lazarus package which is included with Lazarus. --[[User:Jesusrmx|jesusrmx]] 2006 }}<br />
<br />
=== DXScene ===<br />
<br />
[http://www.ksdev.com DXScene] is a 3D hardware accelerated graphics library. It increases the speed of the development of all graphical applications. It provides: a 3D and 2D graphical editor integrated in IDE, 3D shapes and transformation, 2D graphical objects, simplify animation, advanced windows and controls, maximum performance, skinning engine, bitmap effects, 3DS file converter. DXScene can be used as development tool for standard, multimedia, SCADA, GIS, CAD and KIOSK applications. It support Windows, Mac OS X and Linux. For more info see [http://www.ksdev.com www.ksdev.com].<br />
<br />
=== Extended, Man/XML Frames ===<br />
<br />
[http://www.extended.in Extended] components are data and ini customized components. It contains relationships management components to use with your data software and for [https://bitbucket.org/matthieugiroux/virtualdbtreeex-interface-with-checks-entirely-created-with/src VirtualDbTreeEx]. There are also invisible components for pictures' translation, extracting and copying. There is also an update component with its ini creating project. With Extended you can create reports quickly from data, Virtual Trees or tdbgrids.<br />
<br />
Extended uses now GPL license.<br />
<br />
[https://bitbucket.org/matthieugiroux/manframes-rad-rich-management-framework-with-main-and-child Man Frames] are management components for tables. Some data or property forms can manage some kinds of Datasets. A prepared software with user management and functions management lets you [http://en.wikipedia.org/wiki/Model-driven_engineering#Tools quickly create a management software with an engine, without creating source]. It depends on [https://bitbucket.org/matthieugiroux/extended Extended] components. <br />
<br />
[https://bitbucket.org/matthieugiroux/very-rapid-applications-management-development-framework XML Frames], a [http://www.vrad.fr VRAD] Framework, lets you create a management software from [https://fr.wikipedia.org/wiki/Business_Process_Model_and_Notation BPMN 2 XML] files. On Windows, Linux and Mac OSX. Free components are now with GPL license.<br />
<br />
[https://bitbucket.org/matthieugiroux/very-rapid-applications-management-development-framework/downloads/demos-windows.zip Windows Demo] and [https://bitbucket.org/matthieugiroux/very-rapid-applications-management-development-framework/downloads/demos-firebird.tar.gz Other OSes Demos].<br />
<br />
[[File:2010-10_extended.png|380px]][[File:2010-10 xmlframes.png|350px]]<br />
<br />
=== ExtPascal ===<br />
<br />
Old ExtPascal can be found [http://extpascal.com here], [https://github.com/farshadmohajeri/extpascal here] and [https://bitbucket.org/matthieugiroux/extpascal/downloads/ here].<br />
<br />
=== Eye-Candy Controls ===<br />
[[Eye-Candy Controls]] - set of visual controls written for Lazarus. More than twenty advanced controls.<br />
<br />
=== FlashEngine ===<br />
[http://www.ksdev.com FlashEngine] is a set of components for Delphi, C++ Builder and Lazarus which add extra features to Adobe Flash (ActiveX or Netscape plugin)- such as loading from any sources, grab real 32-RGBA frames, real transparency playing. It supports Windows and Mac OS X. For more info see [http://www.ksdev.com www.ksdev.com].<br />
<br />
=== Fortes Report ===<br />
[http://www.fortesreport.fr Fortes Report] for Lazarus is [https://bitbucket.org/matthieugiroux/fortes/downloads/ here].<br />
<br />
=== fpctwit ===<br />
[https://bitbucket.org/reiniero/fpctwit fpctwit] is a plurk, Twitter and OAuthv1 library with example programs (console and GUI). It's a framework that implements the [http://en.wikipedia.org/wiki/Oauth Oauthv1] authorization protocol.<br />
<br />
The OAuth library (and the Twitter and plurk libraries using that) uses the Synapse network units for easy communication, but can easily be adapted for other network layers. It supports OAuthv1 secure authentication and SSL/TLS encryption.<br />
<br />
The library uses modified fpJSON units to allow getting UTF8 data out of the JSON data with Tweets returned from Twitter (for FPC trunk, the FPC units are used as Michael Van Canneyt added support for UTF8 in trunk).<br />
<br />
Functionality includes: getting tweets using the Search API, tweeting, getting username info, authenticating using PIN/OOB or preset credentials (consumerkey+secret,authtoken+secret).<br />
<br />
The twitter console demo, fpctwit, also demonstrates the Streaming API to process and show Tweets and deletion messages.<br />
<br />
There is a plurk console demo that demonstrates the functionality in the plurk library.<br />
<br />
The plurk and Twitter libraries use the included OAuth1 unit that provides OAuth1 authentication. This authentication mechanism is also used for other service providers. <br />
<br />
The Lazarus demo application, imaginatively named fpctwitGUI, is shown in the Lazarus Application Gallery at [[Lazarus_Application_Gallery#fpctwitGUI|fpctwitGUI]]<br />
<br />
=== Greyhound ===<br />
[https://github.com/mdbs99/Greyhound Greyhound] is a tiny ORM-ish for Free Pascal. It is fast, clean and simple to use.<br />
<br />
=== GTK2forpascal ===<br />
Mattias Gaertner's [http://sourceforge.net/projects/gtk2forpascal/ gtk2forpascal project] is developing the bindings for pascal to use the gtk2 libraries (gimp tool kit). Supported Languages are [[Free Pascal]] and Kylix and the bindings are intended to work under Linux, FreeBSD and Win32. These bindings are now also part of the packages supplied with fpc.<br />
<br />
=== Habari ActiveMQ Client / Habari OpenMQ Client ===<br />
[https://www.habarisoft.com/ Habari ActiveMQ Client] is a library (and components) for Delphi(tm) 6 to 2009 and Free Pascal which provides easy access to [http://activemq.apache.org/ Apache ActiveMQ], the most popular and powerful open source Message Broker.<br />
With Habari ActiveMQ Client, applications can connect to Apache ActiveMQ servers, subscribe to queues and topics, send and receive messages and objects, and work with transactions. The library follows the specification of the [http://en.wikipedia.org/wiki/Java_Message_Service JMS API] for Message Oriented Middleware. The communication layer supports Synapse and Internet Direct (Indy) for Lazarus.<br />
<br />
[https://www.habarisoft.com/ Habari OpenMQ Client] is a library for Delphi(tm) 6 to 2009 and Free Pascal which provides easy access to the [https://mq.dev.java.net/about.html Open Message Queue (OpenMQ)] Message Broker, a very compact, fast and easy to use message queue system. OpenMQ is part of the GlassFish(tm) application server for the Java(tm) platform. The library follows the specification of the [http://en.wikipedia.org/wiki/Java_Message_Service JMS] API for Message Oriented Middleware. The communication layer supports Synapse and Internet Direct (Indy) for Lazarus.<br />
<br />
=== Indy for lazarus ===<br />
Begun only a short while ago, this project has as an ambition to port the 119 Indy components from Delphi/Kylix to FPC/Lazarus.<br />
See [http://indy4lazarus.sourceforge.net/ Indy for Lazarus project] and a <br />
[http://indy4lazarus.sourceforge.net/images/img1_1.jpg screenshot].<br />
<br />
=== Internet Tools ===<br />
The [http://www.benibela.de/sources_en.html#internettools Internet Tools] are a set of units, which should contain everything you need to interact with the www. Includes html parsers with a sax and dom-like interfaces, an XPath 2 / XQuery interpreter, CSS 3 selectors, pattern-matching xml templates, and a http/s connection wrapper around synapse/wininet. Compare the [[Internet Tools | examples here]].<br />
<br />
=== KControls ===<br />
[[KControls]] is a set of powerful components for Delphi and Lazarus. Main components are: KGrid/KDbGrid - grid components, KMemo - rich edit component, KHexEditor - hexadecimal editor. Freeware with source.<br />
<br />
=== LazAutoUpdate ===<br />
[[LazAutoUpdater|Laz Auto Update]] is a visual drop-in component for the Lazarus/FPC IDE to make updating your application easier and simpler.<br />
It is aimed at Lazarus Windows developers who host their project in SourceForge.<br />
*Drop-in the component, set one property (your sourceforge project name) and call these simple methods:<br />
If LazAutoUpdate.NewVersionAvailable then...<br />
LazAutoUpdate.DownloadNewVersion<br />
LazAutoUpdate.UpdateToNewVersion<br />
*..and in your form.activate code:<br />
LazAutoUpdate.ShowWhatsNewIfAvailable<br />
*You (the developer) have plenty of control over how the component behaves, yet it is simple to use.<br />
*End-users see the updating process as simple and transparent<br />
<br />
=== Lazarus xPL Libraries ===<br />
[http://glh33.free.fr glh33 Home Automation] is a complete set of tools and foundation library developped in Lazarus for portability purpose under Linux and Windows. xPL Hub, sender, logger, weather listener, pascalscript.... Source code available on the xPL project's google code repository.<br />
<br />
=== LazReport ===<br />
[[LazReport Documentation|LazReport]] is a group of components to add reporting capabilities to applications, it uses a visual designer to create banded reports and includes a report engine with interpreter to run user scripts and a report previewer, report designer can be invoked at runtime.<br />
<br />
LazReport is based on FreeReport 2.32 and thanks to Fast Reports Inc. it's available under modified LGPL, the same license as the Lazarus LCL.<br />
<br />
{{Note| Since Lazarus 0.9.23 revision 11950, LazReport source code is<br />
already included in Lazarus/components/lazreport directory. }}<br />
<br />
===movControl===<br />
movControl allows customizing the GUI (the position and dimension of GUI controls), during execution, by final users. The programer, component user, must place it on the form and make some settings with the Object Inspector. At the application execution, the end user will be able to move or re-size the components of this sheet as desired. [http://www.meddeb.net/movcontrol movControl web site].<br />
<br />
=== PasLibVLC (old) ===<br />
<br />
[https://bitbucket.org/matthieugiroux/paslibvlc Here is old PasLibVLC].<br />
<br />
=== PUMA Repository ===<br />
The [[PUMA Repository]] (Pascal Units for Medical Applications) is a collection of Pascal units for health informatics. It is compatible with a range of Pascal dialects including Lazarus / Free Pascal, Delphi and winsoft Pocket Studio.<br />
<br />
=== Synapse ===<br />
The [http://www.ararat.cz/synapse/ Synapse Project] by Lukas Gebauer provides a serial port and synchronous TCP/IP Library.<br />
<br />
=== Synaser ===<br />
Library for serial communication (Linux, Windows) from the author of Synapse.<br />
homepage: http://www.ararat.cz/synapse/ (same as Synapse)<br />
<br />
=== The Icebox ===<br />
A lot of useful Lazarus/FPC related information and components can be found on Tony Maro's [http://tony.maro.net/ Icebox site] (link expired). His TMPack, Checkbook Tracker and RDP Frontend application are all excellent examples of the quality components and applications that Lazarus is capable of producing.<br />
<br />
=== The Light Pascal Toolkit (LPTK) ===<br />
The goal of the [http://lptk.sourceforge.net/ Light Pascal Toolkit] Project is to create a free object pascal toolkit for linux and windows GUI development. It looks pretty interesting... check out the [http://lptk.sourceforge.net/screenshots.php screenshots]!<br />
<br />
=== TTreeListView === <br />
The [http://www.benibela.de/components_en.html#treelistview tree list view] is the combination of a TTreeView and a TListView, i.e. a tree with columns. It is custom drawn and therefore completely platform independent. (Windows, Linux gtk2, 32/64bit. Didn't test mac/qt through)<br />
<br />
=== VirtualDBTreeEx ===<br />
[https://liberlog.fr/Virtual-DB-Tree-Ex VirtualDBTreeEx] is a selection interface entirely made with data.<br />
<br />
=== VGScene ===<br />
[http://www.ksdev.com VGScene] speeds the development of all graphical application, providing: a graphical editor integrated in IDE, graphical objects, simplify animation, advanced windows and controls, maximum performance, skinning engine, bitmap effects. VGScene can be used as development tools for standard, multimedia, SCADA, GIS, CAD and KIOSK applications. Support Windows, Mac OS X and Linux. For more info see [http://www.ksdev.com www.ksdev.com].<br />
<br />
=== ZenGL ===<br />
[http://www.zengl.org ZenGL] is an open source library with tools, which helps to develop games and interactive application for different platforms.<br />
<br />
== Multimedia ==<br />
<br />
=== Audio X ===<br />
[http://www.ullihome.de Audio X] is a media management tool, that organizes and sorts your media without a database so everything is ever actual. A lot of audio formats are useable directly but you can also organize your LP or CD collection with it, it stores the data in XML Files so they are viewable also with a webbrowser ... <br />
<br />
=== Cactus Jukebox ===<br />
[http://www.cactusjukebox.org Cactus] is an audio player that comes with a database to organize your mp3 file collection. It is currently available for linux and win32. <br />
<br />
Since version 0.3 it supports managing and uploading files on a mobile player.<br />
<br />
===Copy And Images Traduce===<br />
<br />
It is a software that copy files and transform pictures renamed by year, so month. With that, you can create a centralized show in one directory.<br />
<br />
[https://bitbucket.org/matthieugiroux/extended/downloads/CopyAndImages32.zip Windows 32 version] or [https://bitbucket.org/matthieugiroux/extended/downloads/CopyAndImages64.zip 64].<br />
<br />
[https://bitbucket.org/matthieugiroux/extended/downloads/CopyAndImages32.tar.gz Linux 32 version] or [https://bitbucket.org/matthieugiroux/extended/downloads/CopyAndImages64.tar.gz 64].<br />
<br />
[https://bitbucket.org/matthieugiroux/extended/src/d849620044c32c92d100db2f478ba208e064883d/demos/TraduceCopy/?at=default Sources]<br />
<br />
=== CPickSniff ===<br />
[http://sourceforge.net/projects/cpicksniff2/ CPickSniff] is a multiplatform color picker.<br />
<br />
=== gdvdslides ===<br />
[http://rimrocksoftware.com/node/2 gdvdslides] is a Linux graphical user interface for the command line program dvd-slideshow, which allows you to create a video from a set of video clips, JPEG image files and audio files. gdvdslides supports slide transitions, title slides, background images and multiple audio tracks. It also allows cropping, Ken Burns effect and scrolling slide effects. gdvdslides comes with complete documentation and tutorial.<br />
<br />
=== GLScript ===<br />
[http://glscript.sourceforge.net GLScript] is a simple, free, open-source scripting language for developing 3D games and animations. (GL stands for Graphics Library, I.E. Graphics Library Scripting) There are currently plans to have a code-converter to make scripts compilable with lazarus/fpc and other languages to make a standalone executable from your creation.<br />
<br />
=== Greenfish Icon Editor Pro ===<br />
[http://greenfishsoftware.blogspot.hu/2012/07/greenfish-icon-editor-pro.html Greenfish Icon Editor Pro] is an open source pixelgraphic editor for creating icons, cursors, animations, pixel art, etc.<br />
<br />
=== hgdc-x ===<br />
hgdc-x is a cross-platform desktop client for the Hackathon Günther Daemon music player project. It's Github repository can be found at (https://github.com/tristan2468/hgdc-x). It requires a correctly installed and configured hgd server. The official github repository for the server can be found at (https://github.com/vext01/hgd).<br />
<br />
=== KSP Sound Player ===<br />
[https://code.google.com/p/kspnew/ KSP] is an easy in use yet powerful audio player supporting multiple file formats and features like dynamic playlists, bookmarking or network streaming. It also used to be hosted on [http://ksplayer.com this site].<br />
<br />
=== LazAudioPlayer ===<br />
[https://sourceforge.net/projects/lazaudioplayer/ LazAudioPlayer] is a simple mp3 player.<br />
<br />
[[Image:lazaudioplayer.jpeg|350px]]<br />
<br />
Features:<br />
<br />
* logarithmic volume adjustment with loudness<br />
* professional 31 band graphic equalizer<br />
* stereo width control<br />
* echo volume control<br />
* playlist viewer<br />
* user defined equalizer settings<br />
* FFT display<br />
<br />
=== LazPaint ===<br />
[http://sourceforge.net/projects/lazpaint/ LazPaint] is an image manipulation application.<br />
<br />
=== LazPlayer ===<br />
[https://sourceforge.net/projects/lazplayer/ LazPlayer] is a simple mp3 player.<br />
<br />
[[Image:lazplayer.PNG]]<br />
<br />
Features:<br />
<br />
* logarithmic volume adjustment with loudness<br />
* 10 band graphic equalizer<br />
* stereo width control<br />
* playlist viewer<br />
* loop ans shuffle mode <br />
* intelligent playing favorite tracks<br />
<br />
=== miXimum ===<br />
[https://sites.google.com/site/fiensprototyping miXimum] is the DJ's best friend.<br />
miXimum plays and mixes wav, mp*, ogg and mod audio files.<br />
On WINDOWS, LINUX and MAC OSX.<br />
<br />
[[File:miximum1.jpg]]<br />
<br />
=== Music Player by Freebyte.com ===<br />
Music Player by Freebyte.com is a freeware no-frills music player designed for Linux. It supports MP3, Wav, OGG and AIFF files. Created by [http://www.freebyte.com Freebyte.com] using Lazarus, Free Pascal and the Bass audio library on Ubuntu 10.x<br />
<br />
Program home page: http://www.freebyte.com/music_player/<br />
<br />
=== OggBase ===<br />
[http://sourceforge.net/projects/oggbase/ OggBase] is a Free Pascal/Lazarus program for managing your Ogg-Vorbis files in a Database.<br />
<br />
=== Pi Vision ===<br />
[https://github.com/local-vision/Pi-Vision Pi Vision] is a graphical user interface for the [[Lazarus on Raspberry Pi|Raspberry Pi]] camera module.<br />
<br />
=== PicturesToExe Mac OS X Slideshows ===<br />
[http://www.wnsoft.com WnSoft] is using Lazarus IDE to develop FPC-based slideshow viewer for Mac OS X, and planned PicturesToExe for OSX.<br />
<br />
=== SubzBor ===<br />
[https://github.com/m-audio91/SubzBor SubzBor] is a free and open source Linux and Windows utility to cut subtitles. basically it's a GUI for FFmpeg and MKVToolNix but support for internal subtitle readers and writers are adding. supports srt ass ssa vtt smi stl sub sup and more. Source code available under GNU GPL 3.0 license.<br />
<br />
=== Tonopol-Trainer ===<br />
[http://sourceforge.net/projects/tonopoltrainer/files/ sourceforge] is an music-analyzer and trainer for musicans like best-practice, but many more functions. Source available. <br />
<br />
[[image:tptrainer.png|800px]]<br />
<br />
=== Web Player Creator ===<br />
<br />
Static HTML5 and Flash auto creating structure with support of OGG, MP3, WMA. You can add text in each directory. You can also delete structure or converted files if you want.<br />
<br />
[http://www.devenircreatif.com/Music/Wilhelm%20FURTW%C3%84NGLER/index.htm Démo]<br />
<br />
[https://bitbucket.org/matthieugiroux/lazarus-html-5-static-web-audio-player-creator-for-best/downloads Download]<br />
<br />
=== WinFF ===<br />
[http://www.winff.org WinFF] is a GUI for the command line video converter, FFMPEG. It will convert most any video file that FFmpeg will convert. WinFF does multiple files in multiple formats at one time. You can for example convert mpeg's, flv's, and mov's, all into avi's all at once. WinFF is available for Windows 95, 98 , ME, NT, XP, VISTA, and Debian, Ubuntu, Redhat based GNU/Linux distributions.<br />
<br />
== Games ==<br />
'''Main article''': [[Games]]<br />
=== 30 Seconds Free Software ===<br />
[http://code.google.com/p/30seconds 30 Seconds] is a software package that creates cards for the [http://en.wikipedia.org/wiki/30_Seconds_(game) 30 Seconds] board game. It also has a playing interface if you want to play on your laptop / PC (and hopefully soon WinCE devices). <br />
<br />
=== Castle Game Engine ===<br />
[[Castle Game Engine]] ([http://castle-engine.sourceforge.net/ project page]) is a 3D open-source game engine. The engine was developed from the beginning using Free Pascal (we have also Lazarus components) in nice and clean ObjectPascal code. We support many 3D model formats, including [http://castle-engine.sourceforge.net/vrml_x3d.php VRML/X3D], Collada, 3DS and many others. Tools and games using the engine include: <br />
* [http://castle-engine.sourceforge.net/view3dscene.php view3dscene - 3D model viewer, VRML/X3D browser], <br />
* [http://castle-engine.sourceforge.net/castle.php The Castle - FPS game in a dark fantasy world], <br />
* [http://castle-engine.sourceforge.net/darkest_before_dawn.php Darkest Before the Dawn - small scary 3D game for standalone and Android (also on Google Play)]<br />
<br />
=== Daring Apprentice ===<br />
[http://daringapprentice.wikispaces.com Daring Apprentice] is a 3d [http://www.wizards.com/magic/ Magic: The Gathering] tabletop. It uses GLScene, and lNet.<br />
<br />
=== Dreams of a Geisha ===<br />
Take a journey through the magical and wonderful world of Geisha. Help Ichisumi in this incredible adventure to reopen the temples of Geisha and restore a world of beauty and passion. Dive into this engaging Match 3 game with beautiful scenery and relaxing music. Overcome obstacles, collect puzzle pieces, and be prepared to solve challenging puzzles in [http://www.dreamsofageisha.com Dreams of a Geisha]!<br />
* Fantastic gameplay<br />
* Exciting action<br />
* Restore a wonderful world!<br />
<br />
Powered by Lazarus FPC, [http://www.zengl.org/ ZenGL], [http://www.phoenixlib.net/ PhoenixLib], [http://www.lua.org/ LUA] and [http://www.codeandweb.com/texturepacker TexturePacker].<br />
<br />
[[File:Dreams of a Geisha - Screenshot 1.jpg|border|270px]]<br />
[[File:Dreams of a Geisha - Screenshot 2.jpg|border|270px]]<br />
[[File:Dreams of a Geisha - Screenshot 3.jpg|border|270px]]<br />
<br />
Demo Version Available for<br />
[http://www.bigfishgames.com/download-games/12814/dreams-of-a-geisha/index.html Windows]<br />
[http://www.bigfishgames.com/download-games/13045/mac/dreams-of-a-geisha/index.html Mac]<br />
[http://itunes.apple.com/us/app/dreams-of-a-geisha/id460180656?mt=8 iPhone]<br />
[http://itunes.apple.com/us/app/dreams-of-a-geisha-hd/id459801505?mt=8 iPad]<br />
<br />
Developed by [http://www.greensaucegames.com Green Sauce Games] and Released by [http://www.bigfishgames.com Big Fish Games]<br />
<br />
=== Game Maker ===<br />
[http://www.yoyogames.com/gamemaker Game Maker] allows you to make computer games using easy to learn drag-and-drop actions. You can create professional looking games within very little time. You can make games with backgrounds, animated graphics, music and sound effects, and even 3D games! And when you've become more experienced, there is a built-in programming language, which gives you the full flexibility of creating games with Game Maker. What is best, is the fact that Game Maker can be used free of charge.<br />
<br />
Originally written in Delphi, Lazarus/Free Pascal was used to port it from Win32 to Mac OS X and could be used in future for Linux and other platforms.<br />
<br />
=== Juegos Iniciales ===<br />
<br />
[http://juegosenlazaruscostarricenses.com Juegos Iniciales] are a small collection of 3D tutorial games in<br />
Lazarus, SDL and FreePascal. In 2016, there were only four games:<br />
[http://origamisiniciales.juegosenlazaruscostarricenses.com Origamis Iniciales], <br />
[http://bloquesiniciales.juegosenlazaruscostarricenses.com Bloques Iniciales], <br />
[http://nudosiniciales.juegosenlazaruscostarricenses.com Nudos Iniciales],<br />
[http://palitos-iniciales.juegosenlazaruscostarricenses.com Palitos Iniciales].<br />
<br />
=== LazGobang ===<br />
[http://www.fpccn.com/read.php?tid=1399 LazGobang] is a Gobang game, powered by lazarus. <br />
[http://www.fpccn.com/attachment/photo/Mon_1106/31_c35013086418153b1581bc663bece.png Screen Shot1], <br />
[http://www.fpccn.com/attachment/photo/Mon_1106/31_49501308641990eaa7dd3b88e869e.png Screen Shot2], <br />
[http://www.fpccn.com/attachment/photo/Mon_1106/31_f197130864204448e6b393130adb6.png Screen Shot3].<br />
<br />
[http://files.cnblogs.com/lazarus/LazGobang.rar Download it].<br />
<br />
=== LBP Level Logger ===<br />
[http://code.google.com/p/lbplevellogger/ LBP Level Logger] is a small system tray application designed to log [http://www.littlebigplanet.com/ LittleBigPlanet] level statistics from [http://lbp.me/ lbp.me] over time for graphing/visualisation. It is written in Free Pascal/Lazarus.<br />
[[File:lbplevellogger-screenshot.png]]<br />
<br />
=== Mundo Medieval 3D MMORPG ===<br />
<br />
Featuring a virtual world of more than 1.000.000 m2, plus caves and hell sceneries, 17 NPCs, 21 kinds of monsters, including 7 bosses, 58 different items and 100 quests, this is a really large game made with Freepascal/Lazarus. The project is 100% Free Software, both code and media are licensed under GPL. The project sites are [http://www.gamemundo.com/ http://www.gamemundo.com/] and [http://sourceforge.net/projects/gamemundo/ http://sourceforge.net/projects/gamemundo/].<br />
<br />
<br />
[[File:Mundo - Screenshot 1.png|border|270px]]<br />
[[File:Mundo - Screenshot 2.png|border|270px]]<br />
[[File:Mundo - Screenshot 3.png|border|270px]]<br />
<br />
=== Pnigin (a Pengo Remake) ===<br />
Pnigin is an advanced remake of the 80's arcade classic Pengo.<br />
<br />
The project was made from scratch, using all original artwork and music. The project used Delphi 5 personal, Lazarus and Free Pascal for development.<br />
<br />
As the project is currently in a beta stage, there is no working demo yet. It is expected that a playable demo is released in summer 2008.<br />
<br />
=== Slot Cars - The Video Game ===<br />
“Slot Cars – The Video Game“ is an Indie, Racing, Simulation game with a tracks editor.<br />
<br />
<center>[[Image:SlotCarsTheVideoGame SS 02.jpg]]</center><br />
<br />
With “Slot Cars – The Video Game“ you can create<sup>*</sup> and edit<sup>*</sup> your own tracks and then play with these, also with a friend in a local split screen<sup>**</sup>.<br />
<br />
It is also possible to save<sup>**</sup> and reload<sup>**</sup> your creations.<br />
<br />
You can listen your own “shuffled music” in menu or in game, just copying MP3 into the relative directories<sup>*</sup>.<br />
<br />
<sup>* See manual for detail.</sup><br />
<br />
<sup>** Only in Full version.</sup><br />
<br />
“Slot Cars – The Video Game” use GLScene (so, OpenGL) for graphics, OpenAL for 3D audio and Newton Game Dynamics to manage real time physics.<br />
Nothing is pre-calculated.<br />
<br />
Powered by '''Lazarus''' & '''GLScene'''.<br />
<br />
Final graphics and local multiplayer (splitscreen):<br />
<br />
[http://www.youtube.com/watch?v=JL1W7jfym-4 About graphics and multiplayer]<br />
<br />
Official Trailer:<br />
<br />
[http://www.youtube.com/watch?v=-m8v2txY2Ck About gameplay]<br />
<br />
Here two videos also:<br />
<br />
[http://www.youtube.com/watch?v=x9w261bvzzw About gameplay]<br />
<br />
[http://www.youtube.com/watch?v=PNal6vb5m9Y About editor and gameplay]<br />
<br />
You can find info and the DEMO to download [http://www.kjow.net HERE]<br />
<br />
=== Retro Ski Run ===<br />
[https://sourceforge.net/projects/retroskirun/ Retro Ski Run] is a simple ski game for Windows 32/64bit and Linux 32/64-bit.<br />
<br />
[[Image:ss_rsrStartScreen.jpg]]<br />
<br />
=== ZWordQuiz ===<br />
ZWordQuiz is the remake of the famous Windows CE Software KWordQuiz.<br />
With ZWordQuiz you can use the dictionaries in the format kvtml KWordQuiz to train your memory.<br />
<br/><br />
Developer by Jonathan<br />
<br/><br />
[http://www.magicdev.org/zwordquiz_en WebSite]<br />
=== Bomber Kat ===<br />
Commercial game developed with FPC for iOS (both arm and arm64 platforms are supported). <br />
<br />
[[ZenGL]] based. Lazarus has been used as a primary IDE.<br />
<br />
Link: [https://itunes.apple.com/app/bomber-kat/id1109783786?ls=1&mt=8 App Store]<br />
<br />
== Web ==<br />
<br />
=== ExtPascal ===<br />
[http://extpascal.googlecode.com ExtPascal] is an Ext JS wrapper. It lets you use the ExtJS from Object Pascal commands issued by the server. That brings the structure and strict syntax of the Object Pascal for programming the web browser.<br />
<br />
=== FoxWhois ===<br />
[https://foxwhois.com/en/ FoxWhois] is a bulk domains checker. Does not require installation. There are free (foxwhois free) and paid (foxwhois pro) version<BR> <br />
FoxWhois free scans .COM, .RU/.SU/.РФ domains for availability and whois data. FoxWhois pro has more advanced functionality<BR><br />
The software is multilingual (via i18n): currently supports English and Russian languages.<br />
<br />
=== TeamBBS ===<br />
[https://bergertime.eu TeamBBS] is a modern bulletin board system. Installed in 10 minutes, it might be the forum for classes or clubs. Content can be text, images or links.<BR> <br />
If everything is said, TeamBBS builds a conclusion and is uninstalled in 5 minutes. Location- and Online- views deliver "community spirit". <BR><br />
Source code included (German/English). Please join us, we need a French and Italian version.<br />
<br />
== Education and Scientific ==<br />
<br />
=== Albireo ===<br />
[http://albireo.gotozero.de Albireo] is a small-footprint astronomy software for hobby and amateur astronomers. Albireo can be used as an observation documentation and object identification tool. <br />
It should be working on any MS Windows based PC.<br />
<br />
[[Image:Albireo.jpg|500px|Dynamic Star Map]]<br />
<br />
=== Ancestromania ===<br />
<br />
<br />
[http://ancestromania.net Ancestromania] is a fully LGPL genealogy software. It is user-friendly. You can import and export to Gedcom. You can export to Geneanet and to a web site. There is a great graphical tree, with fast classic trees. There are a lot of following documents.<br />
<br />
[http://genealogie.liberlog.fr/Family-trees Ancestroweb] creates a [http://matthieu.giroux.free.fr/genealogie/default.htm static genealogy's web site]. It is french, but can be translated easily. It is part of Ancestromania.<br />
<br />
[[File:Ancestromania.jpg|830px]][[File:2012-04 Ancestroweb.jpg|380px]][[File:2012-05 Ancestroweb carte.jpg|300px]]<br />
<br />
=== ApertaLetra ===<br />
[http://wp.me/pWoqh-28 ApertaLetra] is a text editor colorful and cheerful, where available, without leaving the context of software: formatting, new / open / save, cut / copy / paste and print. [http://sourceforge.net/projects/apletra Sourceforge page]<br />
<br />
=== ApertaQuem ===<br />
[http://wp.me/pWoqh-3s ApertaQuem] is an electronic ballot box for mock elections. Is available to create any candidate with photo from the webcam or file. Exclusive use for school environments. [http://sourceforge.net/projects/apertaquem/ Sourceforge page]<br />
<br />
=== CityCAT ===<br />
[http://www.ncl.ac.uk/ceser/researchprogramme/integratedsystemsdemonstrationscities/citycaturbanfloodmodel/ CityCAT] (City Catchment Analysis Tool), developed at Newcastle University, is a unique software tool for modelling, analysis and visualisation of surface water flooding. It enables rapid assessment of combined pluvial and fluvial flood risk and effects of different flood alleviation measures.<br />
<br />
=== EzberIM ===<br />
[http://mehmetulukaya.wordpress.com/kelime-ezberim-kullanim-klavuzu/ EzberIM 1.4f] Kelime EzberIM provides you with a simple and efficient way to memorize the translations of words in various languages. Test your skills and improve your vocabulary with the help of this reliable and handy piece of software in an easy and interactive manner.[http://sourceforge.net/projects/ezberim/files/ezberim/ezberim-setup.exe/download EzberIM Download]<br />
<br />
[[Image:program_cevap_rapor.JPG|500px]]<br />
<br />
Also added some feautes for example picture samples, it gives a sentence with a picture also you can copy your pictures into directory.<br />
<br />
[[Image:Show_Pictures_As_Sample.png|500px]]<br />
<br />
Final feaute is make a sentence with mixed words:<br />
<br />
[[Image:make_sentences_new.png|500px]]<br />
<br />
=== FREE!ship Plus in Lazarus ===<br />
[https://github.com/markmal/freeship-plus-in-lazarus FREE!ship Plus in Lazarus] is further development of the ''FREE!ship Plus'' (by http://www.hydronship.net ) Windows program based on the free source code FREE!ship v3.x under GNU GPL license. This ''FREE!ship Plus'' application is migrated into free open source Lazarus / Free Pascal environment to promote further development in various platforms and for various platforms (OS and architectures).<br />
<br />
[[Image:FreeShip+qt.png|500px]]<br />
<br />
''FREE!ship Plus'' is designed for the full parametric analysis of resistance and power prediction for a ship and other calculations of hydrodynamics of vessels and underwater vehicles. ''FREE!ship Plus'' allows the designer to simulate and analyze condition of balance of a complex completely hull - rudders - keels - engine - propellers in different regimes and of service conditions of a ship. The analyzable system includes a hull, appendages, a propeller and the engine (i.e. resistance, power, a thrust and a torque), and also various service conditions (heaving, a wind, a shallow-water effect, a regime of tow / pushing, etc...).<br />
<br />
=== GroundCAD ===<br />
[http://www.groundcad.com GroundCAD] is new 2D CAD software for land surveying.<br />
working under windows,linux and mac os.<br />
GroundCAD supports many standard formats like : <br />
Ascii file(txt/csv),Autodesk dxf(ascii R12),Leica(gsi 8/16),Sokkia(sdr33) <br />
Topcon(fc4/gts7/xml/landxml),Google(kml) ...<br />
<br />
[[File:groundcad.jpg|500px]]<br />
[[File:layermanager.jpg|500px]]<br />
[[File:main-window-linux32.png|500px]]<br />
<br />
=== Harmonux ===<br />
[http://wiki.freepascal.org/User:MaxBorges Harmonux 0.1.4] Harmonic Analysis. Enter a table and get the harmonic function for the table. With the graphic of the points of the table and the function. Open Source GNU/GPL, pre-compiled for Linux and Windows.<br />
[[File:hamonux14.png|500px|thumb|center]]<br />
<br />
=== Jubarte ===<br />
[http://jubartecalc.googlepages.com/ Jubarte] aims to create a complete application suite to calculate and analyse the viability of telecommunication links. Jubarte is able to calculate links using Radio, Optical Fiber and Satellites, in the newer versions capabilities to calculate auxiliary systems is being added. Jubarte is being developped in Lazarus enviroment and exist binaries for Windows, Linux and OSX.<br />
<br />
===LibreAquarium===<br />
[http://www.libreaquarium.org] LibreAquarium is a GPLv3 aquarium management system for Windows, Linux and Mac with a Simulation Model System that tries to predict the pollutants evolution using the recorded analytics, the algae risk and many other features (Tasks control, Expenses, Analitics, Statistics). LibreAquarium has been made with a quality design in order to make easier the user experience. <br />
<br />
=== Manuscript4u ===<br />
[http://sourceforge.net/projects/manuscript4u/ Manuscript4u] is an open source project to read and search on the original languages of the Bible and on the translations. <br />
<br />
[[File:manuscript4u.png|500px|thumb|center|Manuscript4u: Bible search on original languages]]<br />
<br />
It has unique and easy way to do research on words in Greek and Hebrew. Learn the meaning of the word without dictionaries by the way that word was translated.<br />
<br />
In parallel, the original Hebrew/Aramaic (Old Testament) or Greek (New Testament) with your preferred translation.<br />
<br />
It comes with Bibles in Hebrew/Greek and English, Portuguese, Spanish but you can download scores of other translations. The Bible files can be downloaded from the UnboundBible site in many languages and converted to the format used by the program with an included conversion program. Pre compiled for Linux and Windows. <br />
<br />
Multi-language support. Currently English and Portuguese.<br />
<br />
Strong's dictionary for the Greek with one click.<br />
<br />
Links to sites like "The Blue Letter Bible" with further details about the word with one click.<br />
<br />
=== Master Maths ===<br />
[http://www.mastermaths.co.za Master Maths] specialises in computer based training and maths. The 3rd incarnation of our flagship product is developed using Lazarus, Firebird, [http://tiopf.sourceforge.net/ tiOPF v2] and the [http://fpgui.sourceforge.net/ fpGUI Toolkit]. The product has two parts. A GUI Administration application and a CGI Learner Browser (used to view and mark the teaching modules). The Learner Browser uses Adobe Flash extensively. The complete product runs under Linux and Windows.<br />
<br />
=== Morse Machine ===<br />
[http://downloads.tech-pro.net/morse-machine_tpmm01.html Morse Machine] is an implementation of "A Fully Automatic Morse Code Teaching Machine" first described in a May 1977 QST article of the same name by Ward Cunningham using Lazarus. The program teaches Morse code by sending a character and waiting for you to type what you heard on the keyboard. It grades your score and adds new characters when it sees that you are ready. The program is released under the GNU GPL version 2. Due to its use of the sound card, this implementation is for the Windows platform.<br />
<br />
=== MRIcroGL ===<br />
[http://www.mccauslandcenter.sc.edu/mricrogl/ MRIcroGL] is an opensource project that uses the graphics card (using OpenGL) to visualize and volume render medical images. It is hosted on the [http://www.nitrc.org/projects/mricrogl/ National Institutes of Health (NIH) Neuroimaging Informatics Tools and Resources Clearinghouse (NITRC)]. It can view images saved in NIfTI (.nii, .nii.gz, .hdr/.img), Bio-Rad Pic (.pic), NRRD, Philips (.par/.rec), ITK MetaImage (.mhd, .mha), AFNI (.head/.brik), Freesurfer (.mgh, .mgz), and many DICOM (extensions vary) formats. It is available for Windows, Linux and Mac OS X.<br />
<br />
[[Image:Shell.png|320px]]<br />
<br />
=== MRIcron ===<br />
[http://www.mricro.com/mricron/ MRIcron] is an opensource project that allows users to visualize and volume render medical images (MRI, CT, PET). It includes tools for lesion mapping, non parametric statistical analysis ([http://www.mricro.com/npm/ npm]), and conversion from the medical DICOM format to the scientific NIfTI format ([http://www.mricro.com/mricron/dcm2nii.html dcm2nii]). It is available for Windows, Linux and Mac OS X.<br />
<br />
[[Image:mricron.jpg|320px]]<br />
<br />
=== Nest-o-Patch ===<br />
[https://sourceforge.net/projects/nestopatch/?source=navbar Nest-o-Patch], software for the analysis of patch-clamp, two-electrode-voltage clamp and other electrophysiological data. Directly works with files created by HEKA Pulse or Patch-Master data aquisition software or with CSV and text files. Designed mostly for the analysis of single channel recordings, was nevertheless successfully used for whole-cell data analysis. Several academic papers were published with the use of this software.<br />
<br />
[[File:nest-o-patch trace.png|500px]] [[File:nest-o-patch amplitude histogram.png|380px]] [[File:nest-o-patch levels analysis.png|340px]] <br />
<br />
=== OctaveGUI ===<br />
[http://code.google.com/p/octave-gui/ OctaveGUI] is a(nother) GUI frontend for GNU Octave.<br />
<br />
=== OpenSIMPLY ===<br />
[http://opensimply.org Project homepage] OpenSIMPLY is an open source free simulation software based on discrete event simulation approach.<br />
<br />
The concept is suitable for a person of a different programming and simulation experience. Both style of simulation: blocks simulation and Simula-like simulation are available. Simula-models with some adaptation can be used as well.<br />
<br />
The project is supplied with full documentation (HTML and CHM formats), insight help (pop-up hints) and tutorial with executable examples.<br />
<br />
OpenSIMPLY can be used as a network simulation software, traffic simulation software and as a computer simulation software for educational purposes. <br />
<br />
The project contains the Simply Memory Manager. <br />
<br />
[http://opensimply.org Learn more]<br />
<br />
[[File:tutorial_demo_animation_s.gif|OpenSIMPLY tutorial demonstration example]]<br />
<br />
=== ProofTools ===<br />
[http://creativeandcritical.net/prooftools/ ProofTools] automatically and graphically generates semantic tableaux, also known as proof trees, semantic trees and analytic tableaux, generally used to test whether a formula is a logical truth, or whether a proof/argument is deductively valid. ProofTools can generate proof trees for propositional, predicate and (normal) modal logic. It is available for Windows, Linux and Mac OS X.<br />
<br />
[[File:ProofTools.png|ProofTools screenshot]]<br />
<br />
=== SignWriter ===<br />
[http://www.egyptologysoftware.com/software.html Signwriter] is an Ancient Egyptian Hieroglyphic Word Processor and Language tool. It is designed for creating and editing texts stored in MdC format and would be of interest to students, professionals, and anyone with an interest in the Ancient Egyptian Language.<br />
<br />
===SimSEE===<br />
[http://iie.fing.edu.uy/simsee/simsee SimSEE] is a platform for Simulation of Systems of Electrical Energy. Using SimSEE we can simulate the optimal operation of systems with hydroelectrical plants, hydro-reservoirs, fuel fired plants, wind farms and interconnections with other countries. The platform has a very sophisticated tool for modelling stochastic processes like river inflows, fuel prices, wind speed, etc. The software was developed in Spanish but we are working to support other languages (help is welcome).<br />
<br />
===SimThyr===<br />
[http://simthyr.sourceforge.net/ SimThyr] is a simulation program for the pituitary thyroid feedback control that is based on a parametrically isomorphic model of the overall system. It aims in a better insight into the dynamics of thyrotropic feedback. Applications of this program cover research, including development of hypotheses, and education of students in biology and medicine, nurses and patients.<br />
<br />
=== Skychart / Cartes du Ciel ===<br />
[http://www.ap-i.net/skychart Skychart] is a free software to draw a map of the night sky for the amateur astronomer from a bunch of stars and nebulae catalogs. It shows the position of the planets, simulates an eclipse and more. <br />
<br />
=== SPINA ===<br />
[http://spina.medical-cybernetics.de/en/ SPINA] is software for determining constant structure-parameters of endocrine feedback control systems from hormone levels obtained in vivo. The first version of this cybernetic approach allows for evualuating the functional status of the thyroid gland.<br />
<br />
=== SysLinea ===<br />
[http://wiki.freepascal.org/User:MaxBorges SysLinea 0.1.2] Solves Linear Systems and calculates Linear and Non linear Regression. It gives the Pearson and Spearman coefficients of correlation and the t-test. Open Source GNU/GPL, pre-compiled for Linux and Windows.<br />
[[File:syslinea12.png|500px|thumb|center|SysLinea 1.2 - Linear regression and non linear regression]]<br />
<br />
=== Turbo Circuit ===<br />
[[Turbo Circuit]] is a circuit drawing tool written in Lazarus / Free Pascal.<br />
<br />
=== Unified Life Models ===<br />
[http://www.biologie.ens.fr/~legendre/ulm/ulm.html ULM (Unified Life Models)] is an open-source software enabling the simulation and analysis of deterministic and stochastic discrete time dynamical systems for population dynamics modeling. It works natively on Windows, Linux and macOS.<br />
<br />
Models are described using a simple declaration language, close to the mathematical formulation. The system can be studied interactively by means of simple commands, producing convenient graphics and numerical results.<br />
<br />
[[Image:screenshot_ulm.png|320px]]<br />
<br />
=== Virtual Moon Atlas ===<br />
[http://ap-i.net/avl/en/start Virtual Moon Atlas] is software for lunar observation and study. It uses GLscene to give a realistic view of the Moon at any given location and time. The computations are done with the JPL ephemeris for extensive precision. It includes the most complete lunar formation database and picture library. The binary distribution is available for Windows, Mac and Linux.<br />
<br />
=== Xoctave ===<br />
[http://www.xoctave.com/ Xoctave] is a Human interface to GNU Octave. Xoctave encapsulates GNU Octave uses pipes and provides extra useful tools to make GNU Octave more easier to use. XOctave is written in Pascal using Lazarus front-end and Free Pascal (aka FPK Pascal) libraries. It uses synedit for syntax highlighting, and uses the Lazarus Component Library (LCL) is a set of visual and non-visual component classes over a Widget toolkit-dependent layer with multi-language support (English-Turkish)<br />
<br />
=== ZCAD ===<br />
[http://sourceforge.net/projects/zcad/?source=directory ZCAD] is a simple CAD program with support for file formats DXF.<br />
<br />
[[Image:Zcad.png|400px]]<br />
[[File:simplecad.PNG|400px]]<br />
<br />
== Management, Accounting and other Business Software ==<br />
<br />
=== AddressBook ===<br />
[http://www.cnblogs.com/lazarus/articles/2051659.html AddressBook] using the Sqlite store data, Support for Simplified Chinese, Traditional Chinese, English three languages. Support the list shows, support to add, delete, right-click pop-up list menu to delete, change, check; Support importing csv, export csv file; import file format to export csv files can fill in; Contact the system into the same name as the default if there is to add a new record; Encoding exported file system based on user language encoding decisions; support the dynamic selection of countries or companies and added;<br />
support the department or group of dynamic selection and add; support the phonetic code or short code quick search contacts. For example: the Monkey King of the alphabet code, SWK. may enter the code in the alphabet Jane S, Sun will contact all the names are listed; [http://pic002.cnblogs.com/images/2011/300662/2011052008585591.png Screen Shot]<br />
<br />
=== Bilancio Facile ===<br />
[http://www.magicdev.org/bilanciofacile Bilancio Facile] is a simple application to manage the family budget.<br/> <br />
<br />
Developed by Jonathan.<br />
<br />
[[Image:winprev.jpg|Screen shot]]<br />
<br />
=== BRP-Software ===<br />
[http://www.brp-software.com/ BRP-Software] is a powerful and extremely flexible ERP System, that uses the Firebird database as backend. The first major release is in use with several different database structures to handle the needs of different business types. We have seperate databases for container logistics, laser cut metal production, software distribution and computershops. All databases use the same base application written in Lazarus.<br />
<br />
BRP Software is currently only focusing on the German speaking market, but it is developed for international usage. We plan to publish an international version in second half of 2013. There is a special free version already called Personal edition available now. This has only one restriction: it can not be used with more than one network user. This version includes the computershop database out of the box.<br />
<br />
[[File:BRP.gif]]<br />
<br />
=== Contact Contacts ===<br />
[http://www.trustfm.net/GeneralTools/SoftwareContactContacts.php Contact Contacts] is a free of charge portable and secure '''organizer''' that supports bulk emails and SMS.<br />
<br />
All data is stored '''securely''' into an encrypted database.<br />
<br />
The '''documentation''' is located [http://www.trustfm.net/GeneralTools/SoftwareContactContacts.php?page=ContactContactsTutorial here]<br />
<br />
[[Image:ContactContactsWin7.png]]<br />
<br />
=== DB2 Security Script importer ===<br />
[https://bitbucket.org/reiniero/db2securityscript/ DB2 Security script] is a script that runs on the DB2 database system and outputs audit/security-relevant information.<br />
<br />
Accompanying this script is a conversion program, OutputParser, that converts the script dump to a Microsoft Access database, Firebird embedded database, Microsoft Excel file, DBF, CSV etc. <br />
<br />
Although the program is fairly trivial, it shows:<br />
* how to use [[fpXMLXSDExport]] and [[FPSpreadsheet]] for output<br />
* how to create [[MS Access]] files programmatically<br />
* how to export datasets to another database<br />
* and some text processing/recognition and field creation on the input side.<br />
<br />
[[Image:DB2ParserCSVExport.png]]<br />
<br />
=== Eleman ===<br />
[http://www.linuxprogramlama.com/index.php?page=11 Eleman] is a accounting program with personnel, stock and billing capabilities. It is using firebird, zeosdbo and GPL licensed.<br />
<br />
=== ExVan ===<br />
[http://www.cforce.gr/sales.htm ExVan] is a WinCE/Win32 mobile invoicing program with batch data transfer for Greek ERP systems or standalone use.<br />
<br />
=== FXGest ===<br />
[http://www.magicdev.org/fxgest] is a simple application to manage the company budget. Based on Bilancio facile engine<br/> <br />
<br />
Developed by Jonathan.<br />
<br />
[[Image:cliente.jpg|Screen shot]]<br />
<br />
=== Gestinux ===<br />
[http://gestinux.net/mediawiki/index.php/Main_Page Gestinux] is a small accounting and invoicing software, to enter moves and import in various formats, to reconcile, and to print usual reports. You can produce quotes, order sand invoices, record customer payments. It is translated into english, spanish and italian from french, and can easily be translated to other languages. It is possible to setup specific reports for various countries. It runs on Linux, Windows and OS/X, using MySql, MariaDb and PostgreSQL.<br />
<br />
=== opsi ===<br />
[http://opsi.org/ opsi] is an open source Client Management System for Windows clients and is based on Linux servers.<br />
Key features:<br />
<br />
* Automatic OS installation (unattended or image based)<br />
* Automatic software distribution and patch management<br />
* Hardware and software inventories<br />
* multiple location support<br />
<br />
opsi server runs on Debian, Ubuntu, OpenSuse, SLES, CentOS, UCS and RHEL.<br />
We use Lazarus for the component opsi-winst which is the script driven generic setup program which does all the installations and system manipulations on the windows boxes.<br />
<br />
=== OutKafe ===<br />
[http://www.outkastsolutions.co.za/outkast/index.php?option=com_openwiki&Itemid=45&id=outkafe OutKafe] is a next-generation free and open source cybercafe management suite. It currently is running hundreds of cybercafe's at businesses, schools and other establishments around the world.<br />
<br />
=== PlanB ===<br />
[http://roberts.bplaced.net PlanB] is a Vehicle management program written using to Lazarus (Free Pascal) and MySQL Community Edition .<br />
<br />
Features :<br />
* Management of Mileage Log , Service , Registration , Mandatory Insurance documents .<br />
* Statistics : global , driver , company , mileage log , average fuel consumption, visited places.<br />
* Graphs : driver, vehicle .<br />
* Reminders for : oil , tachograph , fire extinguisher , leasing , driver health check , driver skills check , registration.<br />
* Unlimited number of Vehicle Groups ( example : Private, Company, Warehouse, VIP , etc. ) and Vehicles.<br />
* One window user interface , intelligently grouped together for easy everyday usage.<br />
* Can handle various Regional Settings without problems.<br />
* 100% UTF-8 (aka Unicode)<br />
* Handles multiple users at the same time. Items are locked when modifying to prevent database corruption.<br />
* Simple user rights : <br />
** administrator : unlimited access to program features<br />
** user : the one doing all the work , cannot add new users, view program statistics or unlock locked items.<br />
** guest : can only view statistics<br />
* Can export almost every table to EXCEL (2003 level) even without Excel being installed. <br />
* Can automatically resize tables to correct size to fit data being displayed,almost every table supports quick search.<br />
* Can print out every report to printer , or export to PDF . With Mileage Log Stats it can even mass export all vehicles in selected group to Excel file.<br />
* Uses MySQL Community Edition which is absolutely FREE.<br />
* Was written with Lazarus 1.2.2 using only FREE components.<br />
* Logs usage stats<br />
* Multilingual , right now : English, Hungarian, Serbian(Latin), German is supported .<br />
* All program related settings are stored in config files NOT in registry.<br />
* Tested on Windows XP,7,8,8.1 . (Windows 9x series not supported)<br />
<br />
Images :<br />
<br />
[[Image:planB1.png|715px|358px]]<br><br />
[[Image:planB2.png|320px|180px]]<br />
[[Image:planB3.png|320px|180px]]<br />
[[Image:planB4.png|320px|180px]]<br />
[[Image:planB5.png|320px|180px]]<br />
[[Image:planB6.png|320px|180px]]<br />
[[Image:planB7.png|320px|180px]]<br />
[[Image:planB8.png|320px|180px]]<br />
[[Image:planB9.png|320px|180px]]<br />
[[Image:planB10.png|320px|180px]]<br />
[[Image:planB11.png|320px|180px]]<br />
[[Image:planB12.png|320px|180px]]<br />
[[Image:planB13.png|320px|180px]]<br />
[[Image:planB14.png|320px|180px]]<br />
[[Image:planB15.png|320px|180px]]<br />
[[Image:planB16.png|320px|180px]]<br />
[[Image:planB17.png|320px|180px]]<br />
[[Image:planB18.png|320px|180px]]<br />
[[Image:planB19.png|320px|180px]]<br />
[[Image:planB20.png|320px|180px]]<br />
[[Image:planB21.png|320px|180px]]<br />
[[Image:planB22.png|320px|180px]]<br />
[[Image:planB23.png|320px|180px]]<br />
[[Image:planB24.png|320px|180px]]<br />
[[Image:planB25.png|320px|180px]]<br />
[[Image:planB26.png|320px|180px]]<br />
[[Image:planB27.png|320px|180px]]<br />
[[Image:planB28.png|320px|180px]]<br />
[[Image:planB29.png|320px|180px]]<br />
[[Image:planB30.png|320px|180px]]<br />
[[Image:planB31.png|320px|180px]]<br />
[[Image:planB32.png|320px|180px]]<br />
[[Image:planB33.png|320px|180px]]<br />
<br />
=== Postcode ===<br />
[https://bitbucket.org/reiniero/postcode/overview Postcode] is an open source program that looks up Dutch postcodes and adresses.<br />
It can look up postcodes when given street/street number/city and it can give the address when given a street number and postcode. Additionally, you can let it read in a CSV file or other delimited file and let it add missing information.<br />
<br />
Windows and Dutch language (source code commented in English).<br />
Uses a Firebird (embedded) database filled with postcode/address data from the Dutch government. <br />
<br />
Demonstrates use of <br />
* [[CsvDocument]] to read/write delimited files<br />
* drag and drop text content from other applications<br />
* regex library<br />
* Firebird stored procedures<br />
* database normalization<br />
* use of read-only transactions<br />
[[Image:ScreenshotPostcode.png|Postcode screenshot]]<br />
<br />
=== [http://free-erp.net/ Promet-ERP] ===<br />
[http://free-erp.net/ Promet-ERP] is a Small Business ERP System / Project management Solution / Mail Program / Document Management System. It can be used with most [http://free-erp.net/wiki/Promet-ERP/Databases major Database Systems] and on all major platforms (Windows, Linux, Mac OS X).<br><br />
[[Image:mainscreen windows.jpg|150x200px]][[Image:kalendar_windows.jpg|150x200px]][[Image:wiki_windows.jpg|150x200px]][[Image:mainscreen_linux.png|150x200px]][[Image:kalendar_linux.png|150x200px]][[Image:wiki_linux.png|150x200px]]<br />
<br />
=== Rednaxel RNGE3 ===<br />
[http://rednaxel.com/software/ RNGE3] is a Small-Medium Business ERP System (with WMS module) for brazilian companies. It emits Nota Fiscal Eletronica, the government-mandated electronic invoice.<br />
[[File:sshot-fat2.png]]<br />
<br />
=== RiXtoR ===<br />
[http://pietrobua.com/web/en/project/?name=rixtor RiXtoR] is a Point of Sale program specially designed for restaurants, working on both Windows and GNU/Linux Systems<br />
<br />
=== SilentCoder's Site ===<br />
[http://www.silentcoder.co.za silentcoder.co.za DireqCafe] is a complete and full full featured internet cafe solution for LTSP. A number of other useful lazarus programs can be found on A.J. Venter's site.<br />
<br />
=== TreePad Lite for Linux ===<br />
TreePad Lite for Linux is a freeware personal information manager.<br />
TreePad Lite can help you manage, store, edit, organize and browse any type of textual data, such as: notes, emails, articles, links, telephone extensions, addresses, scraps pasted from the Web, etc. Suitable for Linux. Created by [http://www.freebyte.com Freebyte.com] using Lazarus and Free Pascal on Ubuntu 10.x.<br />
<br />
Program home page: http://www.treepad.com/linux/treepadlite/<br />
<br />
=== TruckBites ===<br />
[http://www.truckbites.com TruckBites] is a business management software for independent trucking companies and owner/operators (for the USA.) Written under contract by [[user:Tonymaro | Tony Maro]] for both Linux and Windows for "Partners in Trucking, LLC". Still under development, anticipated release in the next few months.<br />
<br />
=== TurboCash plugins===<br />
[http://www.turbocash.net/wiki/index.php?title=Developer:Lazarus Open Source Accounting software] apparently allows writing plugins using Lazarus/FPC.<br />
The program itself is still written in Delphi: [http://sourceforge.net/projects/turbocash/ description on Sourceforge]<br />
<br />
=== WGVW ===<br />
[http://ceware.de/wgvw/ WGVW] is a freeware program for househould management. It includes capture of income and expenses (cash book) as well as recurrent items (recurring income/expenses). Apart from that it is possible to digitize documents and save account data. The program uses a Firebird database.<br />
<br />
=== Wireless Orders for Mini Bar Cafe ===<br />
Win32 TCP/IP Application Server, Win32 TCP/IP Client, WinCE TCP/IP Client.<br />
Using Lazarus and lNet we develop wireless ordering system for Mini Bar - Cafe.<br />
Print receipts directly to Cash Mashine.<br />
<br />
More Info ( http://www.cforce.gr/orders.htm )<br />
Demo ( http://www.cforce.gr/downloads/setupwodemo.exe )<br />
<br />
== Utilities and Miscellaneous ==<br />
<br />
=== Adnan Dictionary ===<br />
[http://sourceforge.net/projects/adnandict/ Adnan dictionary] is a light and open source dictionary based on the arabeyes.org database. It is available for both windows and linux and intends arab users.<br />
<br />
=== Advanced Password Generator ===<br />
[https://sourceforge.net/projects/apwg/ Advanced Password Generator] is a lightweight password generator tool to protect your security with randomly generated password. It runs on Windows and Linux. No installation required. This tool has GUI and command line version. Command line version is ideal for scripting. <br />
[[File:scrnsht1.png]]<br />
<br />
=== AksiIDE ===<br />
[http://www.aksiide.com AksiIDE] is a light freeware multi-platform text editor written in Lazarus.<br />
very useful for PHP developers.<br />
<br />
It has these features:<br />
* PHP Project Wizard<br />
* Portable Version Available<br />
* Live View Browser<br />
* Project Management<br />
* Class Generator<br />
* Integrated With Database Explorer (mysql + postgresql)<br />
* Database Browser<br />
* FTP Explorer<br />
* File Explorer<br />
* Code Explorer with Function List<br />
* Code Snippet<br />
* PHP Source Minifier<br />
* PHP Source Formatter<br />
* Syntax Checker<br />
* Multi Workspace Layout<br />
<br />
[[File:Aksi_IDE.jpeg|600px]]<br />
<br />
=== AlFileSearch ===<br />
[http://www.aldimsoft.ru/alfilesearch AlFileSearch] Simple file search utility which is able to quickly find files and folders on your PC running under Windows 10, 8, 7... It is able to sort out files and folders according to their properties (e.g. Modified Date). The results window supports Windows Explorer functionality: icons, context menus.<br />
<br />
=== Bar Generator ===<br />
[https://sourceforge.net/projects/bargenerator/ Bar Generator] is a simple QR, AZTEC and Data Matrix code generator.<br />
<br />
=== Becape ===<br />
[https://sourceforge.net/projects/becape/ Becape] is an open source backup tool aimed to personal/desktop usage. It does incremental backups and stores the backup info in a sqlite database allowing to restore the exact state of the backed files at a chosen date. It's fully written in Lazarus/Free Pascal.<br />
<br />
=== BioTray ===<br />
[https://sites.google.com/site/biotray/ BioTray], your Biorhythm in traybar.<br />
Biorhythm means rhythm of life.<br />
Our live is directed by emotional, intellectual and physical rhythms who begin at our birth.<br />
You will see on your traybar 4 new icons. They are : the emotional, the intellectual, the physical and the intuitive icon.<br />
How more the icon is filled, how big is your power. <br />
On WINDOWS, LINUX and MAC OSX.<br />
<br />
In traybar :<br />
<br />
[[File:biotray1.jpg]]<br />
<br />
[[File:biotray2.jpg]]<br />
<br />
=== CamMirror ===<br />
[http://www.cnblogs.com/lazarus/articles/2053748.html CamMirror] Using the camera as a mirror, it can be switched to several resolutions such as 320*240,640*480,800*600,1024*768 and full screen by clicking the tray icon menus. Windows only. <br />
<br />
=== CheckRide ===<br />
[https://bitbucket.org/reiniero/checkride/ CheckRide] is an open source remote control tool. It lets you take over the screen and keyboard of a remote computer. The helped person only needs to run the program, no firewall/router changes necessary. The helper does need to forward a port in her router.<br />
Features:<br />
* No configuration required for client, just click and be helped<br />
* Helper can use the tool to create a custom version of CheckRide that connects to her server. This way, the helped party only needs to download and run one program. Alternatively, the helper can distribute a configuration file for the same purpose.<br />
* Supports Windows UAC<br />
* Encrypted connection<br />
* Uses UltraVNC and stunnel programs to provide remote control and encryption<br />
* Supports Windows helped persons and helpers on Windows (CheckRideHelper.exe) and Linux (stunnel/vncviewer), probably OSX, too.<br />
* Can be used for free, both commercially and non-commercially. CheckRide wrapper is MIT licensed freeware: it can also be incorporated in commercial programs.<br />
<br />
Technical details: it uses an UltraVNC winvnc reverse connection and stunnel to create an encrypted connection. You can realize this by just using stunnel and vncviewer, so the helper side should be usable on Linux and OSX, too. For now, CheckRide itself has only been compiled on Windows; it will need some changes for other operating systems.<br />
<br />
Free Pascal techniques that are used:<br />
* Controlling external programs<br />
* Installing/deinstalling Windows services<br />
* "Poor man's resource": adding [[paszlib|zip]] files after exe with configuration data, UltraVNC, stunnel details<br />
* [[paszlib|Zipping/unzipping]] files<br />
* Using a manifest to request Administrator privileges/elevation<br />
* Handling command line options; multiple configuration mechanisms (embedded config file, config file in application directory, command line options)<br />
<br />
More details: see [https://bitbucket.org/reiniero/checkride/wiki/Home CheckRide wiki].<br />
<br />
Screenshots: [[Lazarus_Application_Gallery#CheckRide]]<br />
<br />
=== Convertor ===<br />
[https://hdrz.github.io/convertor/ Convertor] is a unit converter with a slightly different GUI. It aims to be as minimal and unobtrusive as possible, yet easy to use. It has many unit categories and units, and the units are defined in XML file which can be upgraded with no recompilation of the program.<br />
<br />
[[File:conv-min-layout.png]]<br />
<br />
=== CoreNet ISP Management ===<br />
[http://www.turbog.com/2012/04/24/corebil-net-isp-management/ CoreNet ISP Management] is a fully ISP management software package. It is a freeware Windows application.<br />
<br />
=== Coedit ===<br />
[https://github.com/BBasile/Coedit Coedit] is a small, open-source, cross-platform IDE for the [http://dlang.org/ D language].<br />
It features:<br />
* full featured project format and advanced project editor.<br />
* compile and run directly from the UI.<br />
* instant run (without saving, script-like).<br />
* synchronized edition in a block.<br />
* D2 syntax highlighter, folding, identifier markup.<br />
* module symbol list.<br />
* static libraries manager.<br />
* search and replace.<br />
* user-defined tools powered by a string interpolation system.<br />
* [https://github.com/Hackerpilot/DCD D Completion Daemon] integration for completion proposal and source code hints.<br />
* mini file browser.<br />
<br />
[[Image:coedit.linux.kde.png|640px]]<br />
<br />
[[Image:coedit.win7.png|640px]]<br />
<br />
=== Convert POs ===<br />
<br />
[https://bitbucket.org/matthieugiroux/convertpos Lazarus project], whose fusion an original po file and the traduced po file. You can save your po language file after.<br />
<br />
=== CQRLOG ===<br />
[http://www.sourceforge.net/projects/cqrlog/ CQRLOG] [https://www.cqrlog.com/ CQRLOG] is an advanced ham radio logger based on MySQL database. Provides radio and rotor control based on hamlib libraries (currently support of 140+ radio types and models), DX cluster connection, HamQTH/QRZ callbook, a grayliner, online log upload (HamQTH, ClubLog, HRDLog), a most accurate country resolution algorithm based on country tables developed by OK1RR, LoTW/eQSL, membership tracking, bandmap and much more. CQRLOG is strongly focused on easy operation and maintenance.<br />
<br />
[[File:cqrlog.png|800px]]<br />
<br />
=== CudaText Editor ===<br />
<br />
[[CudaText]] is advanced code editor for Win, Linux, OS X.<br />
<br />
[[File:cudatext.png]]<br />
<br />
=== Cut Your Time (CYT) ===<br />
[http://www.trustfm.net/GeneralTools/SoftwareCutYourTime.php Cut your time] is '''portable''' cross platform application for '''Windows''' and '''Linux''' that allows you to create reminders (alarms).<br />
<br />
The documentation for this application can be found [http://www.trustfm.net/GeneralTools/SoftwareCutYourTime.php?page=CutYourTimeTutorial here]<br />
<br />
[[File:CutYourTime.png]]<br />
<br />
=== dbmaker ===<br />
[http://www.rgsoftware.de dbmaker] is a database application using TDbf and LazReport. Its user interface language is german.<br />
<br />
=== Dedalu ===<br />
[http://dedalu.sourceforge.net/ Dedalu] is a collection of small and simple projects developed in Lazarus by Giuseppe Ridinò (aka Pepecito). They are games, editors, utilities, etc.<br />
<br />
=== Diacrit ===<br />
[http://www.sandrila.co.uk/diacrit/ Diacrit] is a utility to help with access to Unicode characters, choose the language you want. click the character button and paste into your application. Diacrit was first written in Turbo Pascal for Windows back in 1996, migrated to Delphi, and now upgraded to FP/Lazarus.<br />
<br />
=== Double Commander ===<br />
[http://sourceforge.net/projects/doublecmd/ Double Commander] is a cross platform open source file manager with two panels side by side. It is inspired by Total Commander and features some new ideas. <br />
<br />
=== Etiket ===<br />
[http://www.linuxprogramlama.com/index.php?page=12 Etiket] is a Label design and print tool. GPL licensed.<br />
<br />
=== ExPress ===<br />
[http://code.google.com/p/express-gui ExPress] is a GUI wrapper for UPX (Ultimate Packer for eXecutables).<br />
<br />
=== fenixsql ===<br />
[http://fblib.altervista.org fenixsql] is a simple admin tool for firebird sql database<br />
<br />
=== FileRecovery ===<br />
[http://www.grauonline.de/cmsimple2_6/en/?Solutions:Data_recovery_software FILERECOVERY] is a cross platform application to recover lost and deleted files and formatted disks. It supports all common file systems (FAT/NTFS/EXT2/3/ISO9660/HFS+) and comes with Mac Universal (Intel and PPC) and PC binaries. The application was originally written in Delphi and ported to FreePascal and Lazarus in 2010 and successfully shows that is it possible to develop system applications using modern development tools and the Pascal language.<br />
<br />
=== Fit Easily ===<br />
[http://fiteasily.com Fit Easily] is an online service for building the model of some experimental data, fitting its parameters and storing the results together with the data. Both of the cgi and the core was coded with Lazarus.<br />
<br />
=== fpcup ===<br />
[[fpcup]] is a tool that gets the current version of Free Pascal Compiler (FPC) and Lazarus IDE from their subversion repositories and compiles/installs them. It also compiles and installs whatever packages you want to install.<br />
It also creates a shortcut on your desktop that points to the new Lazarus installation.<br />
<br />
Meant to be used side by side with other FPC/Lazarus installations (it creates a separate primary config path directory for the new Lazarus installation, so it doesn't interfere with existing Lazarus installs)<br />
<br />
It's open source software, please see the code for the license.<br />
Runs on Windows and Linux; experimental support for OSX, FreeBSD.<br />
Run fpcup --help for command line options.<br />
<br />
See: [https://bitbucket.org/reiniero/fpcup fpcup repository and executables site]<br />
<br />
=== Free Pascal Operating System ===<br />
Interested in developing an OS with Free Pascal? This project can be used as a starting point (though incomplete and YOU ARE WELCOME to complete it :-)). Download it [http://code.google.com/p/fpos here](http://code.google.com/p/fpos).<br />
<br />
Another interesting project developed with Free Pascal called TORO can be found at: [http://toro.sourceforge.net TORO:] (http://toro.sourceforge.net).<br />
<br />
=== Golfml Applications ===<br />
[http://code.google.com/p/golfml/wiki/Welcome?tm=6 Golfml Applications] are aimed at golfers and golf course managers. The purpose of [http://code.google.com/p/golfml/ GolfML] is to provide a XML-based file format for the exchange of golf-related data. CourseWriter is an application for easily authoring golfml files and editing them. Golfml Reader is to display and test golfml data files. USGA/EGA Calculator has various golf handicapping functions, and uses golfml data files. Executables for Linux 64 and 32 bit and Windows 64 and 32-bit. Source code for all applications.<br />
<br />
=== GTK-Fireadmin ===<br />
A GTK based Firebird Administration tool using Firebird Objects and Lazarus Components is available [http://sourceforge.net/projects/gtkfireadmin/ here].<br />
<br />
=== Hagen - cross platform html generator ===<br />
<br />
<br />
[http://buch.im-ned.de/hagen Hagen] is a open source (lgpl) cross platform html generator (or client side cms). It supports the web developer by generating a website and writing the pages. For that purpose Hagen will automate as much tasks as it can.<br />
<br />
Features:<br />
<br />
*project management <br />
**variables, functions and settings <br />
**template based and (page) divisions <br />
**source files (.source) for content <br />
*editor <br />
**syntax highlighting <br />
**Markdown <br />
**search over all pages <br />
**insert colors, images, tables and references <br />
*repository <br />
**for data exchange <br />
**for templates <br />
*automation <br />
**automate menu generating <br />
**internal and user defined variables and funktions <br />
**printing page <br />
**generates whole website<br />
<br />
=== Heat Wizard ===<br />
[http://heatwizard.berlios.de/Heat_Wizard.html Heat Wizard] is a command line and GUI tool for the conversion of the voltage of a thermocouple to a temperature and vice versa (for Win32, Mac OS X, and Linux).<br />
<br />
=== Hexy ===<br />
A cross-platform tool for embedded C developers. It automatically converts binary files into C header files containing hexadecimal arrays for integration into embedded projects. The GitHub repo is at (https://github.com/tristan2468/Hexy).<br />
<br />
=== HJSplit for Linux ===<br />
HJSplit for Linux is a freeware file splitter. HJSplit supports file sizes of over 100 Gigabytes, Split, Join/Recombine, MD5 checksums, file-compare and "run without install". Suitable for Linux. Created by [http://www.freebyte.com Freebyte.com] using Lazarus and Free Pascal on Ubuntu 10.x.<br />
<br />
Program home page: http://www.hjsplit.org/linux/<br />
<br />
=== Incredimail to EML ===<br />
[http://www.dominion-it.co.za/development Incredimail2EML] is a util to convert Incredimail to EML format with attachments. The program will also try and continue converting even if it runs into a corrupt mailbox or messages. All messages are created in sub folders that represent the mailbox in Incredimail.<br />
<br />
[[Image:incredimail2eml.png|350px]]<br />
<br />
Program home page: http://www.dominion-it.co.za/development/incredimal_to_eml<br />
<br />
=== ISA Digital Osciloscope ===<br />
A graphical interface for a digital osciloscope. The osciloscope itself is an ISA card with a probe to measure waves. It works on both Windows and Linux. There is some information on how it is being built on [[Hardware Access]]. The full documentation (in English and Portuguese), screenshots and the source code of project can be downloaded [http://eletronicalivre.incubadora.fapesp.br/portal/english/oscilloscope/ here].<br />
<br />
=== JavaneseChess ===<br />
[https://bitbucket.org/leledumbo/javanese-chess JavaneseChess] is a Javanese chess game implementation. Available for Desktop platforms and Android (not feature complete yet).<br />
<br />
=== Kamouflage ===<br />
<strike>[http://wiki.lazarus.freepascal.org/User:Beli0135 Kamouflage] - Camouflage files into images <br />
</strike>. : 17-08-2018 http://www.varnus.com/ server not found<br />
<br />
=== LazEdit ===<br />
[[LazEdit]] is a simple text editor with tabbed document interface, supporting various syntax highlighters.<br />
It also has built-in functions for editing HTML.<br />
<br />
=== LazFileSplitter ===<br />
[http://br.geocities.com/antoniog123456/ LazFileSplitter] is a utility to split and merge big files.<br />
<br />
=== LazUpdater ===<br />
{{Warning|Does not seem to be maintained. A working alternative is fpcup}}<br />
From their web site: [http://forge.lazarusforum.de/projects/lazupdater/ LazUpdater] is a front-end for "svn" and "make" commands with some useful features to install or configure FPC and Lazarus.<br />
Once it's configured you update and rebuild FPC and Lazarus by just one click.<br />
With profiles you can manage different installations.<br />
Written for Linux, Windows, OSX.<br />
<br />
Licence: GPL v3<br />
<br />
=== LazVisual ===<br />
[http://br.geocities.com/antoniog123456/ LazVisual] is an external tool to include resources on executable file and set application icon.<br />
<br />
=== Mep LA ===<br />
[http://software.viamep.com/mepla/ Mep LA] is a simple and fast text editor. Key features: working with txt and html/php files, replacement and some customizable scripts with shortcuts. You can configure replacement and run it with a click or keyboard combination.<br />
<br />
=== MouseWiggler ===<br />
[https://bitbucket.org/leledumbo/mousewiggler MouseWiggler] is a simple application to periodically send message to make mouse move to prevent screen saver from executing (could be useful in a limited environment like a computer lab with auto logoff :p). The wiggle might not be visible because I give no delay between two messages to move the mouse from its current position to somewhere else and back.<br />
<br />
=== MUTerm (Rs232 Terminal) ===<br />
[http://mehmetulukaya.wordpress.com/2012/09/18/muterm-yazilimi-yuklenmeye-hazir/ MUTerm 0.1.1] <br />
MUTerm is a Com Port communication tool for external devices like as Modbus RTU , ASCII etc.<br />
Also you can write your communication routine witwh pascal script.<br />
[http://mehmetulukaya.files.wordpress.com/2012/09/main_screen.jpg Main Screen Shot]<br />
<br />
Additionally some TCP functions (client and server) added yet. <br />
It can be work with internet or localnetwork Modbus TCP or Http.<br />
[http://mehmetulukaya.files.wordpress.com/2012/09/tcp_screen.jpg TCP Connection Screen]<br />
<br />
[https://mehmetulukaya.files.wordpress.com/2016/04/ekran-gc3b6rc3bcntc3bcsc3bc-2016-04-08-091320.png Server screen]<br />
<br />
[[Image:tcp_screen.JPG|500px]]<br />
<br />
MUTerm created with by Lazarus 1.0~1.6 Linux and Windows<br />
[https://sourceforge.net/projects/muterm/files/muterm/ MUTerm Download]<br />
<br />
=== MyNotex ===<br />
[http://sites.google.com/site/mynotex/ MyNotex] is a free software for Gnu/Linux useful to take and to manage textual notes.<br />
<br />
[[Image:Screenshot_of_MyNotex_1.2.0_-_en.png|700px]]<br />
<br />
=== Nom ===<br />
[https://github.com/MFernstrom/nom Nom] is an open source command tool by Marcus Fernström for [http://openbd.org/ OpenBD] CFML projects.<br />
<pre><br />
<-. (`-')_ <-. (`-') <br />
\( OO) ) .-> \(OO )_ <br />
,--./ ,--/ (`-')----. ,--./ ,-.)<br />
| \ | | ( OO).-. '| `.' |<br />
| . '| |)( _) | | || |'.'| |<br />
| |\ | \| |)| || | | |<br />
| | \ | ' '-' '| | | | Version 0.1.6<br />
`--' `--' `-----' `--' `--'<br />
<br />
nom -c Create a new OpenBD project<br />
nom --create Creates a folder and installs the latest OpenBD version<br />
<br />
nom -r Runs the project with Jetty<br />
nom --run<br />
<br />
nom --open Used with -r/--run to open the browser when the server is ready<br />
<br />
nom --deploy Deploys application with target, only Heroku implemented at the moment<br />
nom --heroku Deployment target - Requires you to be logged into Heroku CLI tools<br />
and have a [Heroku] section with a ProjectName=appname in the Nomolicious file<br />
<br />
nom -h Shows this wonderful help<br />
nom --help<br />
<br />
nom -i Downloads and installs a CFLib UDF to WEB-INF/customtags/cflib/.cfc with the same function name<br />
nom --install Example: nom -i IsWeekend. It's then available as a cfc from CFML<br />
<br />
nom -s Creates nomolicious.ini file for the current project<br />
nom --setup<br />
<br />
nom -p Show information about the current project<br />
nom --project<br />
</pre><br />
=== NotePas ===<br />
[http://code.google.com/p/notepas/ NotePas] is an open source multi-platform text editor written in Lazarus. It can be compiled for multiple platforms and widget sets.<br />
<br />
[[Image:notepas_-_code_folding.png]]<br />
<br />
[[Image:notepas_-_codefilter.png]]<br />
<br />
=== P.SEN ===<br />
[http://ancestorsoftware.co.nf/?page_id=14 P.SEN] is a utility to allow sending and receiving TCP and UDP packets and is available for Windows and Linux. It’s designed to be very easy to use while still providing enough features for power users to do what they need. It is completely free (no ads / no bundleware) and opensource. Some knowledge of a basic network protocols is a prerequisite to using it. Beyond that, P.SEN was designed to be very easy to use.<br />
<br />
[[Image:P_SEN_003.png|400px]]<br />
<br />
=== PasDoc ===<br />
[[PasDoc]] ([http://pasdoc.sourceforge.net/ webpage]) is an open-source documentation generator for ObjectPascal source code. It reads documentation from comments in your source code (an option to read it from an external file is also available), and generates nice docs in HTML, LaTeX or other formats. We have a console program, and a cross-platform GUI version using Lazarus.<br />
<br />
=== PasMonTray ===<br />
[http://pasmontray.sourceforge.net/ PasMonTray] is an open-source CPU and memory usage monitor that sits in the system tray. Uses [[TrayIcon]] and various Win32 api calls.<br />
<br />
=== PasViz ===<br />
[http://www.galapagossoftware.com/developer-tools/pasviz PasViz] is a developer utility for automatically generating unit dependency diagrams based on pascal source code. This project is tested on Mac OS X and Windows, and should work on Linux with very minor adjustments. Requires GraphViz (or other software that can view .dot files) for viewing the graphs.<br />
<br />
=== Project PouchHiker ===<br />
[http://www.pouchhiker.com PouchHiker] is written in Lazarus, using KOL-CE and lNet.<br />
PouchHiker lets you connect and participate in the gps-carpool network (www.gps-carpool.net).<br />
<br />
=== Project Theseus ===<br />
Tom Lisjac's [http://theseus.sourceforge.net Project Theseus] is using Lazarus and FPC for creating a rapid deployment and distribution system for Linux called [http://theseus.sourceforge.net/index.php?wiki=EpikBuilder Epik-Builder]. [http://theseus.sourceforge.net/index.php?wiki=EpikStopwatch EpikStopwatch] and [http://theseus.sourceforge.net/index.php?wiki=EpikBrowser EpikBrowser] are also Lazarus based projects that are currently under development. <br />
<br />
=== recALL ===<br />
[http://keit.co/p/recall recALL] is free and portable multifunctional password recovery and auditing solution for Windows - instantly finds and recovers passwords from more than 200 popular applications (FTP, E-mail clients, Instant Messengers, Browsers, etc) and recovering licenses from over 2800 programs. Entirely written in Free Pascal and Lazarus.<br />
<br />
=== QFront ===<br />
[http://www.ullihome.de QFront] is a platform independent frontend for the CPU Emulator QEmu<br />
<br />
=== QueryIt ===<br />
[http://www.cnblogs.com/lazarus/articles/2072143.html QueryIt] includes two functions; one is an AddressBook, another is an URL Collector. [http://images.cnblogs.com/cnblogs_com/lazarus/303383/r_screen_01.png Screen Shot-01]<br />
[http://images.cnblogs.com/cnblogs_com/lazarus/303383/r_screen_02.png Screen Shot-02]<br />
[http://images.cnblogs.com/cnblogs_com/lazarus/303383/r_screen_03.png Screen Shot-03]<br />
[http://images.cnblogs.com/cnblogs_com/lazarus/303383/r_screen_04.png Screen Shot-04]<br />
[http://images.cnblogs.com/cnblogs_com/lazarus/303383/r_screen_05.png Screen Shot-05]<br />
[http://images.cnblogs.com/cnblogs_com/lazarus/303383/r_screen_06.png Screen Shot-06]<br />
<br />
=== Seksi Commander ===<br />
[http://radekc.regnet.cz/ Seksi Commander] is a GPL File manager for Linux developed in Lazarus and Free Pascal.<br />
Integrated bin, text, hex viewer (own component) and editor based on SynEdit.<br />
<br />
=== SFS Technology ===<br />
[http://code.google.com/p/sfs-technology/ SFS-Technology] solves dependency problems on a Debian/Ubuntu/Linux Tiger operating system. <br />
<br />
=== Shell for Gammu (Mobile Phone Tool) ===<br />
The [http://www.petersieg.de/gammush Gammush Site] offers hardcopies and downloads for this<br />
application. Gammush is a shell for gammu.exe. It allows to backup/restore your phone data,<br />
get, edit, put logos, set date+time, send sms messages etc.<br />
<br />
=== Siages ===<br />
[http://siages.solis.coop.br/ Siages] is an ERP application made with Lazarus.<br />
<br />
=== SimpleGit ===<br />
<br />
[http://soft-practice.com/apps/simplegit SimpleGit] is a cross platform user interface for the popular configuration management system '''git''' for Linux, Mac and Windows. SimpleGit doesn't use any of the language of git, it just explains changes, conflicts and resolutions in simple ways with no learning curve between platforms interacting with a hub like GitHub, GitLab or Stash to make using Git easy.<br />
<br />
[[Image:win clone repository.png|320px|Clone a repo on Windows]]<br />
[[Image:linux make change.png|280px|Make a change on Linux]]<br />
[[Image:mac resolve conflict.png|280px|Resolve a conflict on Mac]]<br />
<br />
=== Spacegetti ===<br />
<br />
Update: It might be awhile until I update it again as I am looking for work as a System Administrator, lost job<br />
<br />
Have any leads in the Dallas, Tx area?<br />
<br />
<br />
<br />
<br />
<br />
[[File:Screen_Shot_02-14-18_at_05.13_PM.PNG|640px]]<br />
<br />
[[File:Screen_Shot_02-15-18_at_09.29_AM.jpg|640px]]<br />
<br />
[[File:Screen_Shot_02-15-18_at_09.30_AM_001.jpg|640px]]<br />
<br />
[[File:Screen_Shot_02-15-18_at_09.30_AM.jpg|640px]]<br />
<br />
[[File:Screen_Shot_02-15-18_at_09.29_AM_001.jpg|640px]]<br />
<br />
Grabs Web images at set intervals and makes them the Windows desktop.<br />
<br />
*Sources include<br />
<br />
**G16 Full Disk Natural Color<br />
**G16 Full Disk GeoColor<br />
**G16 Full Disk Band 13 (10.3um)<br />
**G16 CONUS Natural Color<br />
**G16 CONUS GeoColor<br />
**G16 CONUS Band 13 (10.3um)<br />
**H8 Full Disk Natural Color<br />
**H8 Full Disk GeoColor<br />
**H8 Full Disk Band 13 (10.3um)<br />
**SDO : 512<br />
**SDO : 1024<br />
**SDO : 2048<br />
**SDO : 4096<br />
**NASA Astronomy Picture of the Day<br />
**NASA Earth Observatory Image of the Day<br />
**NASA Image of the Day<br />
**Real-Time Sky Map (www.skymaponline.net)<br />
**Verse of the Day (www.heartlight.org)<br />
<br />
Also has a built-in telescope calculator<br />
<br />
<br />
[https://drive.google.com/open?id=0B_Jndzk4GdzJWi1rczBEZzhUYTA Download]<br />
<br />
More info at <br />
[https://www.cloudynights.com/topic/589056-i-wrote-a-free-program-that-changes-the-windows-wallpaper-to-geos-16-earth-color-and-sdo-sun-images-every-10-minutes-depending-on-what-you-select/ Astronomy Forum Thread]<br />
<br />
=== Sun Simulator ===<br />
The [http://www.benibela.de/tools_en.html#sunsimulator sun simulator] changes the gamma/brightness/color setting depending on the time and date. It is supposed to synchronize the color of the display to the color of the sun light outside, but before it can do that, you have to manually set your preferred color for some fixed times (e.g. noon, dawn, night). (Windows only)<br />
<br />
=== Transmission Remote GUI ===<br />
[http://transgui.sourceforge.net// Transmission Remote GUI] is a feature rich cross platform front-end to remotely control a Transmission Bit-Torrent client daemon via its RPC protocol. Transmission Remote GUI is faster and has more functionality than the build-in Transmission web interface.<br />
<br />
=== Turbo Dictionary ===<br />
[http://www.turbog.com/2012/04/18/turbo-dictionary/ Turbo Dictionary] is a It is a english to turkish dictionary. It is a GPL licensed software.<br />
<br />
=== Turbo Postman ===<br />
[http://www.turbog.com/2012/04/18/turbo-postman/ Turbo Postman] is a It is a mass mail sending tool. You can use a text formatted file or a MySQL database for mail sending list. It is a GPL licensed software.<br />
<br />
=== Turbo Talker ===<br />
[http://www.turbog.com/2012/04/18/turbo-talker/ Turbo Talker] is a Network messaging tool with DES encryption support. You can configure port number and 8 byte DES key. It is peer-to-peer application. It is licensed under GPL license.<br />
<br />
=== Ubuntu Control Center ===<br />
Ubuntu Control Center or UCC is an application inspired by Mandriva Control Center and aims to centralize and organize in a simple and intuitive form the main configuration tools for Ubuntu distribution. UCC uses all the native applications already bundled with Ubuntu, but it also utilize some third-party apps like "Hardinfo", "Boot-up Manager", "GuFW" and "Font-Manager".<br />
<br />
=== Virtual Magnifying Glass ===<br />
[http://magnifier.sourceforge.net/ Virtual Magnifying Glass] is designed for visually-impaired and others who need to magnify a part of the screen. Unlike most similar programs it does not open a separate window for the magnification but instead puts a movable magnifying glass on screen. The project was converted from Visual Studio .NET to Lazarus and now offers a Linux version. Mac OS X and Pocket PC versions are planned.<br />
<br />
=== WandS ===<br />
[http://sourceforge.net/projects/wands/ WandS] (Wake and Shutdown) is a program for webmasters or sysadmins for taking control of servers at datacenters. With WandS, you can shutdown or wake up any server or server group at any time through SSH or SMB.<br />
<br />
=== Wi(n)XtaP ===<br />
[http://www.freewebs.com/bpsoftware/ Wi(n)Xtap] (formed by the words Windows XP Vista) was a program created for early versions of Lazarus. This program allowed the creation of the .manifest file so to set up a graphical theme to your application and it allowed the user to define a customized icon. This program is useless since 0.9.24 because those features have been implemented into the IDE itself. Stable releases of Wi(n)XtaP where the 4.0 beta, 5.0, 6.0 and the latest 6.1 (fixes of 6.0). Further plans to expand its capabilities are temporally blocked.<br />
<br />
=== WikiHelp ===<br />
[http://www.ullihome.de WikiHelp] is a small tool that generates HTML pages from a Wiki. It downloads the content automatically and convert the WikiText pages into HTML. Most WikiText features are useable including images, tables and so on.<br />
<br />
=== Win32 API Manager ===<br />
The [http://www.benibela.de/tools_en.html#apim API Manager] is a very old program giving a GUI for Win32 API functions. It can do everything there is an API function for, e.g. list all processes, change their priority or kill them; list all windows and change their attributes (e.g. change a password, edit to a normal, readable edit) ... It was originally written with D4 for Win98, but I ported it to Lazarus and added support for NT-platform functions. So, it should still work nowadays.<br />
<br />
=== WindSirf ===<br />
The [http://windsurfer.me.uk WindSirf] application reads and displays files from the GTS-31 GPS. Initially it is aimed at windsurfers, but may expand its capabilities. The initial release is for Win 32 only.<br />
<br />
=== Xidel ===<br />
A platform independent [http://videlibri.sourceforge.net/xidel.html command line tool] to download webpages and extract data from them, using XPath 2 / XQuery expressions, CSS 3 selectors or custom pattern-matching templates. It is kind of an example for my [[Projects_using_Lazarus#Internet_Tools | internet tools]].<br />
<br />
'''If your Lazarus project should be listed here, please edit this page and add it!'''<br />
<br />
[[Category:Lazarus]]<br />
[[Category:Promotion]]<br />
[[Category: Software written in Free Pascal]]<br />
[[Category: Software created with Lazarus]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Game_Engine&diff=118286Game Engine2018-06-23T11:59:26Z<p>Ñuño Martínez: Added MinGRo Game Engine.</p>
<hr />
<div>{{Game_Engine}}<br />
{{Infobox game development}}<br />
<br />
{{Warning|This page needs to be fixed and actualized:<br />
* Games should be in the new [[Games]] page.<br />
}}<br />
<br />
A '''game engine''' is a software development environment designed to create games. It distinguish from [[Game framework|game libraries]] in that:<br />
* Implements the ''game loop'', networking communications and resource managers.<br />
* Implements complex data structures, such as maps, particle systems and actors.<br />
* Implements tools as editors and data managers.<br />
All these subsystems would affect in gameplay aspects as movement, scoring or even genre. You can read this [http://en.wikipedia.org/wiki/Game_engine Wikipedia page] for more information.<br />
<br />
== Game Engines ==<br />
Here's a list of game engines that are Pascal/Delphi based or have Pascal binding libraries.<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Usage<br />
! Notes<br />
|-<br />
| [[Castle Game Engine]] <br />
| [https://castle-engine.sourceforge.io/ castle-engine.sourceforge.io] <br />
| FPC<br />
|<br />
|-<br />
| Quad-Engine<br />
| [http://quad-engine.com/ quad-engine.com] <br />
| Delphi/FPC/C#/C++<br />
| <br />
|-<br />
| TERRA Game Engine <br />
| [https://github.com/Relfos/TERRA-Engine github.com/Relfos/TERRA-Engine]<br />
| Delphi/FPC/Oxygene<br />
| 2D & 3D, all platforms supported<br />
|-<br />
| [[nxPascal]]<br />
| [https://github.com/Zaflis/nxpascal github.com]<br />
| FPC/Delphi<br />
|<br />
|-<br />
| g2mp<br />
| [https://github.com/MrDan2345/g2mp github.com]<br />
| FPC<br />
| Ideologically replaced Dan Jet X, multiplatform, editor- and code-based development <br />
|-<br />
| Andorra 2D<br />
| [http://andorra.sourceforge.net/ sourceforge.net]<br />
| Delphi<br />
| <br />
|-<br />
| CAST II Game Engine<br />
| [http://www.casteng.com/ http://www.casteng.com/]<br />
| Delphi<br />
| Alive? last update 2011<br />
|-<br />
| Delphi X <br />
| [http://www.micrel.cz/Dx/ www.micrel.cz/Dx]<br />
| Delphi<br />
|<br />
|-<br />
| Afterwarp<br />
| [http://www.afterwarp.net/ www.afterwarp.net]<br />
| FPC/Delphi<br />
| <br />
|-<br />
| Brtech1<br />
| [http://www.pascalgamedevelopment.com/showthread.php?13795-Brtech1 PascalGameDevelopment.com]<br />
| FPC<br />
| Not really available as an engine or library. Many videos can be found on youtube though. <br />
|-<br />
| GameMaker: Studio<br />
| [http://www.yoyogames.com/ www.yoyogames.com] <br />
| N/A <br />
| Yes, it's not really a game engine library. But it's a game engine and studio written in Delphi. Special Pascal proud. <br />
|-<br />
| MinGRo<br />
| [https://www.sf.net/p/mingro SourceForge]<br />
| FPC<br />
| Designed for old-school style games. Still work in progress. Build with Allegro.pas.<br />
|-<br />
| ZGameEditor<br />
| [http://www.zgameeditor.org/ www.zgameeditor.org] <br />
| FPC/Delphi<br />
| <br />
|-<br />
| SO Engine<br />
| [https://github.com/dimsa/ShadowEngine github.com] <br />
| Delphi/FMX<br />
| Small Crossplatform (Win, Android, iOs) indy engine with formatters, animations, intersections and etc.<br />
|-<br />
| DGLE<br />
| [https://github.com/DGLE-HQ/DGLE github.com] <br />
| Delphi/FPC/C#/C++<br />
| Powerful free open source cross-platform game engine.<br />
|-<br />
| [[Steam Wrapper]]<br />
| [https://github.com/thecocce/steamwrapper https://github.com/thecocce/steamwrapper] <br />
| FPC/Delphi<br />
| Cross-platform game development wrapper written in Pascal, designed to provide necessary functionality for rendering 2D-graphics, <br />
handling input, sound output, etc.<br />
|-<br />
| [[ZenGL]]<br />
| [http://www.zengl.org/ www.zengl.org] <br />
| FPC/Delphi<br />
| Cross-platform game development library written in Pascal, designed to provide necessary functionality for rendering 2D-graphics, <br />
handling input, sound output, etc.<br />
|}<br />
<br />
==Physics Engines==<br />
These engines simulate the physical world (collisions, trajectories etc). Not really game engines per se, but could certainly be used in games.<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Usage<br />
! Notes<br />
|-<br />
| TundAx<br />
| [https://github.com/JordiCorbilla/thundax-delphi-physics-engine github.com]<br />
| FPC/Delphi<br />
| <br />
|-<br />
| Newton<br />
| [http://www.saschawillems.de/ www.saschawillems.de]<br />
| [http://www.saschawillems.de/?page_id=76 Bindings]<br />
| <br />
|-<br />
| Box2D-Delphi<br />
| [https://code.google.com/p/box2d-delphi/ code.google.com] <br />
| FPC/Delphi<br />
| This is Delphi implementation of [http://code.google.com/p/box2d/ Box2d] library<br />
|-<br />
| Kraft<br />
| [https://github.com/BeRo1985/kraft github.com]<br />
| FPC/Delphi<br />
| Pascal native physics engine by Benjamin Rosseaux. <br />
|-<br />
| PAPPE - PAscal Powerful Physics Engine<br />
| [https://sourceforge.net/projects/pappe/ sourceforge.net]<br />
| FPC/Delphi<br />
| Pascal native physics engine by Benjamin Rosseaux. The engine was deprecated by Kraft<br />
|}<br />
<br />
==Games==<br />
''Main article: [[Games]]''<br />
<br />
Games written with Free Pascal. Currently active projects commercial, closed or open source. Some more [[Projects_using_Lazarus#Games|here]].<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Open Source<br />
! Notes<br />
|- <br />
| Darkest Before the Dawn<br />
| http://castle-engine.sourceforge.net/darkest_before_dawn.php [https://play.google.com/store/apps/details?id=net.sourceforge.castleengine.darkestbeforedawn Google Play (Android version)]<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Castle<br />
| http://castle-engine.sourceforge.net/castle.php<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Diablo Roguelike<br />
| [http://diablo.chaosforge.org/ doom.chaosforge.org] [http://sourceforge.net/projects/diablorl/ Sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| Doom Roguelike<br />
| [http://doom.chaosforge.org/ doom.chaosforge.org]<br />
| {{No}}<br />
|<br />
|- <br />
| Escape from the Universe<br />
| https://play.google.com/store/apps/details?id=com.catastrophe.games.escape.universe.space.shooter<br />
| {{No}}<br />
| Using Castle Game Engine<br />
|-<br />
| HedgeWars<br />
| [http://www.hedgewars.org/ www.hedgewars.org]<br />
| {{Yes}}<br />
| <br />
|- <br />
| Project "W"<br />
| [http://www.pascalgamedevelopment.com/showthread.php?3594-Projekt-quot-W-quot PascalGameDevelopment.com ]<br />
| {{No}}<br />
|<br />
|- <br />
| Scrabble 3D<br />
| [http://sourceforge.net/projects/scrabble/ sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| UltraStar Deluxe<br />
| [http://sourceforge.net/projects/ultrastardx/ sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| Minimon 3D<br />
| [http://www.minimon3d.com http://www.minimon3d.com]<br />
| {{No}}<br />
|<br />
|- <br />
| Mountains of Fire<br />
| http://castle-engine.sourceforge.net/mountains_of_fire.php<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Shu<br />
| [http://sourceforge.net/projects/rr-rr sourceforge.net]<br />
| {{Yes}}<br />
| Interesting looking RPG - in progress<br />
|- <br />
| Project Helena<br />
| [https://sourceforge.net/projects/projecthelena/ sourceforge.net]<br />
| {{Yes}}<br />
| A game by Eugene Loza<br />
|- <br />
| Asteroids vs You<br />
| [https://github.com/dimsa/ShadowEngine/ github.com], [https://play.google.com/store/apps/details?id=com.ShadowEngine.AsteroidsVsYou Google Play (Android version)]<br />
| {{Yes}}<br />
| Open Source Demo Game for SO Engine<br />
|}</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=IDE_Window:_Create_new_package_component&diff=118285IDE Window: Create new package component2018-06-23T11:47:14Z<p>Ñuño Martínez: </p>
<hr />
<div>{{IDE Window: Create new package component}}<br />
<br />
This IDE dialog allows to select a design time package where to add a new component.<br />
<br />
This dialog is invoked via '''Package / New component''' or via the IDE short cut '''New package component'''.<br />
<br />
For details about creating the component see [[IDE_Window:_Add_to_Package|Add to package]] dialog.<br />
<br />
To add the component to a new package select '''(Create new package)'''.<br />
<br />
Exists since 0.9.31.<br />
<br />
==See also==<br />
* [[How To Write Lazarus Component]]<br />
<br />
[[Category:Component Creation]]<br />
[[Category:Packages]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=How_To_Write_Lazarus_Component&diff=118284How To Write Lazarus Component2018-06-23T11:46:24Z<p>Ñuño Martínez: /* See also */</p>
<hr />
<div>{{How_To_Write_Lazarus_Component}}<br />
<br />
This is a guide on how to build components. <br />
<br />
==Step 1: Create the package==<br />
<br />
* On the Lazarus IDE menu, click '''Package > New Package''' to run the Package Manager. <br />
<br />
[[Image:package_menu.png]]<br />
<br />
* A '''Save''' file dialog will appear. Chose a folder and a file name and press save. If the IDE prompts for using lowercase filenames press 'yes'.<br />
<br />
* Congratulations: You have just created your first package!<br />
<br />
[[Image:How_to_write_lazarus_component_package_maker.png|Package Maker]]<br />
<br />
==Step 2: Create the unit==<br />
You can create a new unit or use an existing file. Both options are described below.<br />
<br />
===Create a new unit===<br />
* Use the '''Add button > New component'''.<br />
<br />
[[Image:package_new_component.png]]<br />
<br />
* Choose a component like TComboBox.<br />
* Choose ''customcontrol1.pas'' as '''Unit File Name''' and ''CustomControl1'' as '''Unit Name'''.<br />
* You can now give to the component a icon and determine on which palette the component should appear later in the Lazarus-IDE. <br />
* Click '''Create New Component'''.<br />
<br />
<syntaxhighlight><br />
unit CustomControl1;<br />
<br />
{$mode objfpc}{$H+}<br />
<br />
interface<br />
<br />
uses<br />
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls;<br />
<br />
type<br />
TCustomControl1 = class(TComboBox)<br />
private<br />
{ Private declarations }<br />
protected<br />
{ Protected declarations }<br />
public<br />
{ Public declarations }<br />
published<br />
{ Published declarations }<br />
end;<br />
<br />
procedure Register;<br />
<br />
implementation<br />
<br />
procedure Register;<br />
begin<br />
RegisterComponents('Standard',[TCustomControl1]);<br />
end;<br />
<br />
end.<br />
</syntaxhighlight><br />
<br />
* Install the package by clicking the '''Use -> Install''' button at the top of the package editor.<br />
<br />
[[Image:package_install.png]]<br />
<br />
* Now the IDE will ask you, if the IDE should be rebuilt. Say yes.<br />
<br />
[[Image:package_rebuild.png]]<br />
<br />
* Restart Lazarus and see your new component in the component palette. Congratulations: you have just installed your first package with your first package component. <br />
<br />
[[Image:package_installed.png]]<br />
<br />
{{Note| If you do not see your new component in the component palette, it is most likely that you are not running the re-compiled version of Lazarus. You can set where Lazarus builds to using Tools -> Options -> Files -> Lazarus directory. <br />
<br />
Instead of calling Lazarus directly, you also can use startlazarus, which starts the newly created Lazarus, for example the Lazarus executable in the ~/.lazarus directory, if you don't have write access to the directory Lazarus was installed into.}}<br />
<br />
===Add an existing unit===<br />
If you already had a unit you can add it to the package:<br />
<br />
[[Image:package_existing_unit.png]]<br />
<br />
* Click the '''Add''' button, go to the '''Add Files''' tab. At the Unit file name, browse to your existing file. Click '''Add files to package'''. If the package manager complains that the unit is not in the unit path, click yes to add the directory to the unit path.<br />
* Click the '''Add''' button again, go to the '''Add Files''' tab, browse to the ''.lrs'' file and click OK (See Step 3 about creating this icon file).<br />
* Click the '''Add''' button again, go to the '''New Requirement''' tab. In the Package name select '''LCL''' and click OK.<br />
<br />
The end result should look like this:<br />
<br />
[[Image:How_to_write_lazarus_component_package_maker_done.png|Package Maker]]<br />
<br />
* Click under the Files tree in the Package Manager. In the File Properties, make sure ''Register unit'' is checked.<br />
* Click the Options button. Select the IDE Integration tab. In Package Type, make sure Designtime and Runtime is selected.<br />
* Click the Compile button to check to see that the files compile without errors.<br />
* Click the Install button. Lazarus will rebuild and restart automatically.<br />
<br />
The component is created and ready to be used:<br />
<br />
[[Image:How_to_write_lazarus_component_created.png|Component Created]]<br />
<br />
==Step 3: Create icons for the package==<br />
You should create 24x24 pixel size PNG files as icons. If, for Lazarus 1.8+, you want the palette icons to scale at higher screen resolutions you should also provide 36x36 and 48x48 pixel icons. The names of the larger icons require an appended '_150' and '_200' to the filename, repectively ('_150' for 150%, '_200' for 200%).<br />
<br />
FPC is capable of using standard resource files <tt>.rc</tt> or compiled resources <tt>.res</tt> since fpc version 2.6. See [[Lazarus_Resources#FPC_resources]]<br />
<br />
The <tt>.lrs</tt>: see below.<br />
<br />
=== Using the Lazarus Image Editor===<br />
You can use [[Lazarus_Image_Editor| Lazarus Image Editor]] to create the icons in .lrs format.<br />
<br />
===Using lazres===<br />
<tt>lazres</tt> is usually located in the Lazarus tools directory.<br />
<br />
You may need to compile [[lazres]] at first use. <br />
Simply open the ''lazres.lpi'' in the IDE and click '''run > build''' in the menu.<br />
<br />
'''Create lrs file'''<br />
<br />
To create the lrs file run:<br />
<br />
<code>~/lazarus/tools/lazres samplepackage.lrs TMyCom.png</code><br />
<br />
or, if high-resolution images are available<br />
<br />
<code>~/lazarus/tools/lazres samplepackage.lrs TMyCom.png TMyCom_150.pgn TMyCom_200.png</code><br />
<br />
Where <br />
* ''samplepackage'' is the name of your package<br />
* ''TMyCom'' is the name of your component! The name of the image must match the name of your component!<br />
<br />
You can add more than one image to the lrs file by appending the image file name at the end. Eg. ~/lazarus/tools/lazres samplepackage.lrs TMyCom.png TMyOtherCom.png ...<br />
<br />
<br />
'''Sample'''<br />
<br />
Following is a sample of the resulting ''samplepackage.lrs'' file.<br />
<br />
<pre>LazarusResources.Add('TMyCom','PNG',[<br />
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#24#0#0#0#24#8#2#0#0#0'o'#21#170#175<br />
+#0#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0'|IDAT8O'#237#212#209#10#192' '#8<br />
+#5'P'#247#231#251's'#215#138#133#164#166'\'#220#195'`'#209'c'#157'L'#173#131<br />
+#153#169'd4'#168'dP'#137'r_'#235'5'#136'@Zmk'#16'd9'#144#176#232#164'1'#247<br />
+'I'#8#160'IL'#206'C'#179#144#12#199#140'.'#134#244#141'~'#168#247#209'S~;'#29<br />
+'V+'#196#201'^'#10#15#150'?'#255#18#227#206'NZ>42'#181#159#226#144#15'@'#201<br />
+#148#168'e'#224'7f<@4'#130'u_YD'#23#213#131#134'Q]'#158#188#135#0#0#0#0'IEND'<br />
+#174'B`'#130<br />
]);</pre><br />
<br />
Make sure to include your resource file in your new component source by adding the following at the bottom your component's unit and including "LResources" in the uses clause<br />
<br />
<syntaxhighlight><br />
initialization<br />
{$I samplepackage.lrs}<br />
</syntaxhighlight><br />
<br />
<br />
'''Create res file'''<br />
<br />
lazres can also create a compiled resource file, just specify a file with the .res extension, e.g.:<br />
<br />
<code>~/lazarus/tools/lazres samplepackage.'''res''' TMyCom.png</code><br />
<br />
or, with high-res icons:<br />
<br />
<code>~/lazarus/tools/lazres samplepackage.'''res''' TMyCom.png TMyCom_150.png TMyCom_200.png</code><br />
<br />
In this case, instead of including the lrs file in the initialization section, just include the resource file anywhere in your component source file<br />
<br />
<syntaxhighlight><br />
{$R samplepackage.res}<br />
</syntaxhighlight><br />
<br />
<br />
<br />
=== Using glazres ===<br />
'''GLazRes''' is the graphical version of <tt>lazres</tt> that can assemble files into a Lazarus resource file (.lrs).<br />
It can be found in the tools directory of a Lazarus installation.<br />
<br />
==Recompiling Packages==<br />
<br />
You need to rebuild the package every time you make changes to the ''mycom.pas'' file. To rebuild the package, open the ''samplepackage.lpk'' file in the Package Manager and click the Install button.<br />
<br />
==Removing Packages==<br />
<br />
* To remove installed components: on the IDE menu, click Package > Configure installed packages. The following image shows the Installed Packages tool.<br />
<br />
[[Image:How_to_write_lazarus_component_installed_components.png|Installed Components]]<br />
<br />
* Select the package you want to uninstall and click Uninstall selection.<br />
<br />
If something goes wrong with a package (e.g. package directory is deleted without first uninstalling it), Lazarus may not allow you to uninstall packages. To fix the problem, at the IDE menu click Tools > Build Lazarus. Lazarus will rebuild all packages and restart. You should now be able to uninstall problematic packages.<br />
<br />
==Enhancing mycom.pas==<br />
<br />
* The code in ''mycom.pas'' above gives you the basics on what you need to create a component. The following is an enhanced version with some tips on how to write procedures and events for components.<br />
* The ''OnChange2'' shows how to create events<br />
* The ''OnSample'' shows how to create custom events<br />
* ''MyText'' and ''MyText2'' shows different ways to write properties.<br />
* You can use TComboBox instead of TCustomComboBox as the base class, which publishes all properties as TComboBox. <br />
* If TCustomComboBox is used as the base class, you'll notice a lot of properties and events will be missing in the IDE Object Inspector. To add those properties and events, just copy and paste the properties as listed below ''// properties from TComboBox''. These list of properties can be got from the TComboBox declaration in the StdCtrls unit. Omit any property which you want to handle yourself.<br />
<br />
<syntaxhighlight><br />
unit mycom;<br />
<br />
{$mode objfpc}{$H+}<br />
<br />
interface<br />
<br />
uses<br />
Classes, SysUtils, StdCtrls, Forms, Dialogs,<br />
LCLType,LCLIntf,lresources,LCLProc;<br />
<br />
type<br />
<br />
TSampleEvent = procedure(MyText: String) of Object;<br />
<br />
TMyCom = class (TCustomComboBox)<br />
private<br />
FMyText: String;<br />
FOnChange2: TNotifyEvent;<br />
FOnSample: TSampleEvent;<br />
public<br />
constructor Create(TheOwner: TComponent); override;<br />
procedure CreateWnd; override;<br />
procedure Change; override;<br />
protected<br />
function GetMyText2: String;<br />
procedure SetMyText2(MyText: String);<br />
published<br />
property MyText: String read FMyText write FMyText;<br />
property MyText2: String read GetMyText2 write SetMyText2;<br />
property OnChange2: TNotifyEvent read FOnChange2 write FOnChange2;<br />
property OnSample: TSampleEvent read FOnSample write FOnSample;<br />
<br />
// properties from TComboBox<br />
property Align;<br />
property Anchors;<br />
property ArrowKeysTraverseList;<br />
property AutoComplete;<br />
property AutoCompleteText;<br />
property AutoDropDown;<br />
property AutoSelect;<br />
property AutoSize;<br />
property BidiMode;<br />
property BorderSpacing;<br />
property CharCase;<br />
property Color;<br />
property Ctl3D;<br />
property Constraints;<br />
property DragCursor;<br />
property DragMode;<br />
property DropDownCount;<br />
property Enabled;<br />
property Font;<br />
property ItemHeight;<br />
property ItemIndex;<br />
property Items;<br />
property ItemWidth;<br />
property MaxLength;<br />
property OnChange;<br />
property OnChangeBounds;<br />
property OnClick;<br />
property OnCloseUp;<br />
property OnContextPopup;<br />
property OnDblClick;<br />
property OnDragDrop;<br />
property OnDragOver;<br />
property OnDrawItem;<br />
property OnEndDrag;<br />
property OnDropDown;<br />
property OnEditingDone;<br />
property OnEnter;<br />
property OnExit;<br />
property OnGetItems;<br />
property OnKeyDown;<br />
property OnKeyPress;<br />
property OnKeyUp;<br />
property OnMeasureItem;<br />
property OnMouseDown;<br />
property OnMouseMove;<br />
property OnMouseUp;<br />
property OnStartDrag;<br />
property OnSelect;<br />
property OnUTF8KeyPress;<br />
property ParentBidiMode;<br />
property ParentColor;<br />
property ParentCtl3D;<br />
property ParentFont;<br />
property ParentShowHint;<br />
property PopupMenu;<br />
property ReadOnly;<br />
property ShowHint;<br />
property Sorted;<br />
property Style;<br />
property TabOrder;<br />
property TabStop;<br />
property Text;<br />
property Visible; <br />
end;<br />
<br />
procedure Register;<br />
<br />
implementation<br />
<br />
procedure Register;<br />
begin<br />
RegisterComponents('Sample',[TMyCom]);<br />
end;<br />
<br />
constructor TMyCom.Create(TheOwner: TComponent);<br />
begin<br />
inherited Create(TheOwner);<br />
Self.Style := csDropDownList;<br />
end;<br />
<br />
procedure TMyCom.CreateWnd;<br />
begin<br />
inherited CreateWnd;<br />
Items.Assign(Screen.Fonts);<br />
end;<br />
<br />
procedure TMyCom.Change;<br />
begin<br />
inherited;<br />
if Assigned(FOnChange2) then FOnChange2(Self);<br />
if Assigned(FOnSample) then FOnSample(FMyText);<br />
end;<br />
<br />
function TMyCom.GetMyText2: String;<br />
begin<br />
Result:=FMyText;<br />
end;<br />
<br />
procedure TMyCom.SetMyText2(MyText: String);<br />
begin<br />
FMyText:=MyText;<br />
end;<br />
<br />
initialization<br />
{$I samplepackage.lrs}<br />
<br />
end.<br />
</syntaxhighlight><br />
<br />
Also you will notice that some undeclared and possibly unwanted elements exist in the IDE Object Inspector.<br />
To remove those of them, which you do not need, you can redeclare them in the ''Published'' section as simple variables. For example:<br />
<syntaxhighlight><br />
Published<br />
... <br />
property Height: Integer;<br />
property Width: Integer;<br />
...<br />
</syntaxhighlight><br />
<br />
==Using embedded (visual) components==<br />
It's possible to use standard components embedded in your own components (look for example at TLabeledEdit or TButtonPanel).<br />
<br />
Let's say you want to create a custom panel with a TLabel on it. With the steps described above the base package and source files can be created.<br />
Now do the following to add a TLabel to the component:<br />
* Add a private attribute for the label component (FEmbeddedLabel: TLabel;).<br />
* Add a published read-only property for the label component (property EmbeddedLabel: TLabel read FEmbeddedLabel;)<br />
* Create the label in the component's (overridden) constructor (FEmbeddedLabel := TLabel.Create(self); )<br />
* Set the parent of the component (FEmbeddedLabel.Parent := self;)<br />
* If the component to be embedded is not a 'subcomponent' by default (like TBoundLabel, TPanelBitBtn etc) then add the call to SetSubComponent. This is necessary for the IDE so it knows that it has to store the properties of the embedded component as well. TLabel is not a subcomponent by default so the call to the method must be added (FEmbeddedLabel.SetSubComponent(true);).<br />
<br />
To sum it up you would get something like this (only the essential parts are shown):<br />
<br />
<syntaxhighlight><br />
TEnhancedPanel = class(TCustomControl)<br />
private<br />
{ The new attribute for the embedded label }<br />
FEmbeddedLabel: TLabel;<br />
<br />
public<br />
{ The constructor must be overriden so the label can be created }<br />
constructor Create(AOwner: TComponent); override;<br />
<br />
published<br />
{ Make the label visible in the IDE }<br />
property EmbeddedLabel: TLabel read FEmbeddedLabel;<br />
end;<br />
<br />
implementation<br />
<br />
constructor TEnhancedPanel.Create(AOwner: TComponent);<br />
begin<br />
inherited Create(AOwner);<br />
<br />
// Set default width and height<br />
with GetControlClassDefaultSize do<br />
SetInitialBounds(0, 0, CX, CY);<br />
<br />
// Add the embedded label<br />
FEmbeddedLabel := TLabel.Create(Self); // Add the embedded label<br />
FEmbeddedLabel.Parent := self; // Show the label in the panel<br />
FEmbeddedLabel.SetSubComponent(true); // Tell the IDE to store the modified properties<br />
FLabel.Name := 'EmbeddedLabel'; <br />
FLabel.Caption := 'Howdy World!';<br />
<br />
// Make sure the embedded label can not be selected/deleted within the IDE<br />
FLabel.ControlStyle := FLabel.ControlStyle - [csNoDesignSelectable];<br />
<br />
// Set other properties if necessary<br />
//...<br />
<br />
end;<br />
</syntaxhighlight><br />
<br />
==Using custom paint procedure==<br />
You can always subclass a component inside your program. For example, this implements a custom Paint procedure to a TLabel:<br />
<br />
<syntaxhighlight><br />
type<br />
TMyLabel = class(TLabel)<br />
protected<br />
procedure Paint; override;<br />
end;<br />
{...}<br />
implementation<br />
{...}<br />
procedure TMyLabel.Paint;<br />
begin<br />
// your code to implement Paint, for example<br />
Canvas.TextOut(0,0,Caption);<br />
end; <br />
</syntaxhighlight><br />
<br />
Now you can create a MyLabel inside your program, at run time, with that overridden Paint procedure instead of the standard one.<br />
<br />
For most components, and for most methods, it would be recommendable to call inherited procedure inside it:<br />
<br />
<syntaxhighlight><br />
procedure TMyLabel.Paint;<br />
begin<br />
<br />
inherited Paint; /////////////////////<br />
<br />
// your code to implement Paint, for example<br />
Canvas.TextOut(0,0,Caption);<br />
end; <br />
</syntaxhighlight><br />
<br />
However, inherited behavior is not desirable in this case, since the second writing action would overlap the first (inherited) one.<br />
<br />
==Integrating the component with the IDE==<br />
<br />
===Property editors===<br />
<br />
Property editors provide custom dialogs to edit properties in the object inspector. For most properties, like strings, string lists, images, enumerated types and others, there are already default property editors, but if a custom component has a special kind of property it may require a custom dialog to edit the property.<br />
<br />
Each property editor is a class, which should descend from TPropertyEditor or one of its descendents and implement methods from this base class. They should be registered in the 'Register' procedure by using the function RegisterPropertyEditor from the unit PropEdits. It is a standard to name property editors with the property name followed by 'Property', for example TFieldProperty for the property editor of the TField property.<br />
<br />
<syntaxhighlight><br />
TPropertyEditor = class<br />
public<br />
function AllEqual: Boolean; Virtual;<br />
function AutoFill: Boolean; Virtual;<br />
procedure Edit; Virtual; // Activated by double-clicking the property value<br />
procedure ShowValue; Virtual; // Activated by control-clicking the property value<br />
function GetAttributes: TPropertyAttributes; Virtual;<br />
function GetEditLimit: Integer; Virtual;<br />
function GetName: ShortString; Virtual;<br />
procedure GetProperties(Proc: TGetPropEditProc); Virtual;<br />
function GetHint(HintType: TPropEditHint; x, y: integer): String; Virtual;<br />
function GetDefaultValue: AnsiString; Virtual;<br />
procedure GetValues(Proc: TGetStrProc); Virtual;<br />
procedure SetValue(const NewValue: AnsiString); Virtual;<br />
procedure UpdateSubProperties; Virtual;<br />
function SubPropertiesNeedsUpdate: Boolean; Virtual;<br />
function IsDefaultValue: Boolean; Virtual;<br />
function IsNotDefaultValue: Boolean; Virtual;<br />
// ... shortened<br />
end;<br />
</syntaxhighlight><br />
<br />
A good example for a property editor is the TFont property editor.<br />
<br />
One of the most common cases for property editors is properties which are classes. Because classes have many fields and can have a variety of formats, it's not possible for Lazarus to have the object inspector edit field able to edit it, like is done for strings and numeric types. <br />
<br />
For classes, a convention is to have the value field show permanently the name of the class in parentheses, for example "(TFont)" and the "..." button shows a dialog to edit this class. This behaviour, except for the dialog, is implemented by a standard property editor for classes called TClassPropertyEditor, which can be inherited from when writing property editors for classes: <br />
<br />
<syntaxhighlight><br />
TClassPropertyEditor = class(TPropertyEditor)<br />
public<br />
constructor Create(Hook: TPropertyEditorHook; APropCount: Integer); Override;<br />
function GetAttributes: TPropertyAttributes; Override;<br />
procedure GetProperties(Proc: TGetPropEditProc); Override;<br />
function GetValue: AnsiString; Override;<br />
property SubPropsTypeFilter: TTypeKinds Read FSubPropsTypeFilter<br />
Write SetSubPropsTypeFilter<br />
Default tkAny;<br />
end;<br />
</syntaxhighlight><br />
<br />
Going back to the TFont example, inheriting from TClassPropertyEditor already offers part of the desired behavior and then the TFontPropertyEditor class only needs to implement showing the dialog in the Edit method and set the attributes for the editor:<br />
<br />
<syntaxhighlight><br />
TFontPropertyEditor = class(TClassPropertyEditor)<br />
public<br />
procedure Edit; Override;<br />
function GetAttributes: TPropertyAttributes; Override;<br />
end;<br />
<br />
procedure TFontPropertyEditor.Edit;<br />
var <br />
FontDialog: TFontDialog;<br />
begin<br />
FontDialog := TFontDialog.Create(NIL);<br />
try<br />
FontDialog.Font := TFont(GetObjectValue(TFont));<br />
FontDialog.Options := FontDialog.Options + [fdShowHelp, fdForceFontExist];<br />
if FontDialog.Execute then SetPtrValue(FontDialog.Font);<br />
finally<br />
FontDialog.Free;<br />
end;<br />
end;<br />
<br />
function TFontPropertyEditor.GetAttributes: TPropertyAttributes;<br />
begin<br />
Result := [paMultiSelect, paSubProperties, paDialog, paReadOnly];<br />
end;<br />
</syntaxhighlight><br />
<br />
===Component editors===<br />
<br />
Component editors control the behavior of right-clicking and double clicking components in the form designer.<br />
<br />
Each component editor is a class, which should descend from TComponentEditor or one of its descendents and implement methods from this base class. They should be registered in the 'Register' procedure by using the function RegisterComponentEditor from the unit ComponentEditors. It is a standard to name component editors with the component name followed by 'Editor', for example TStringGridComponentEditor for the property editor of the TStringGrid component. Although user component editors should be based in TComponentEditor, most of its methods are actually from an ancestor, so it is necessary to also know TBaseComponentEditor:<br />
<br />
<syntaxhighlight><br />
TBaseComponentEditor = class<br />
protected<br />
public<br />
constructor Create(AComponent: TComponent;<br />
ADesigner: TComponentEditorDesigner); Virtual;<br />
procedure Edit; Virtual; Abstract;<br />
procedure ExecuteVerb(Index: Integer); Virtual; Abstract;<br />
function GetVerb(Index: Integer): String; Virtual; Abstract;<br />
function GetVerbCount: Integer; Virtual; Abstract;<br />
procedure PrepareItem(Index: Integer; const AnItem: TMenuItem); Virtual; Abstract;<br />
procedure Copy; Virtual; Abstract;<br />
function IsInInlined: Boolean; Virtual; Abstract;<br />
function GetComponent: TComponent; Virtual; Abstract;<br />
function GetDesigner: TComponentEditorDesigner; Virtual; Abstract;<br />
function GetHook(out Hook: TPropertyEditorHook): Boolean; Virtual; Abstract;<br />
procedure Modified; Virtual; Abstract;<br />
end;<br />
</syntaxhighlight><br />
<br />
The most important method of a component editor is Edit, which is called when the component is double clicked. When the context menu for the component is invoked the GetVerbCount and GetVerb methods are called to build the menu. If one of the verbs (which means menu items in this case) are selected, ExecuteVerb is called. There is a default component editor (TDefaultEditor) which implements Edit to search the properties of the component for the most appropriate one to be edited. It usually chooses an event, which is edited by adding it's skeleton code in the code editor and setting the cursor to be in place to add code for it.<br />
<br />
Other important methods from TBaseComponentEditor are: <br />
* '''ExecuteVerb(Index)''' - Executes one of the extra menu items placed on the right-click popup menu; <br />
* '''GetVerb''' – To return the name of each extra popup menu item. Note that it is the responsibility of the component editor to place special menu item caption characters like & to create a keyboard accelerator and "-" to create a separator; <br />
* '''GetVerbCount''' – Returns the amount of items to be added to the popup menu. The index for the routines GetVerb and ExecuteVerb is zero based, going from 0 to GetVerbCount – 1; <br />
* '''PrepareItem''' – Called for each verb after the menu item was created. Allows the menu item to be customized such as by adding subitems, adding a checkbox or even hiding it by setting Visible to false; <br />
* '''Copy''' - Called when the component is being copied to the clipboard. The component data for use by Lazarus will always be added and cannot be modified. This method is instead for adding a different kind of clipboard information to paste the component in other applications, but which won't affect the Lazarus paste.<br />
<br />
A simple and interesting example is the TCheckListBox component editor which creates a dialog to edit. More convenient than implementing all methods from TBaseComponentEditor is inheriting from TComponentEditor, and this is what TCheckListBoxEditor does. This base class adds empty implementations for most methods and some default ones for others. For Edit it calls ExecuteVerb(0), so if the first item will be identical to the double-click action, which is a convention for editor, there is no need to implement Edit. This basic action for the double-click and first menu item is often a dialog, and for TCheckListBox this is also done:<br />
<br />
<syntaxhighlight><br />
TCheckListBoxComponentEditor = class(TComponentEditor)<br />
protected<br />
procedure DoShowEditor;<br />
public<br />
procedure ExecuteVerb(Index: Integer); override;<br />
function GetVerb(Index: Integer): String; override;<br />
function GetVerbCount: Integer; override;<br />
end;<br />
<br />
procedure TCheckGroupComponentEditor.DoShowEditor;<br />
var<br />
Dlg: TCheckGroupEditorDlg;<br />
begin<br />
Dlg := TCheckGroupEditorDlg.Create(NIL);<br />
try<br />
// .. shortened<br />
Dlg.ShowModal;<br />
// .. shortened<br />
finally<br />
Dlg.Free;<br />
end;<br />
end;<br />
<br />
procedure TCheckGroupComponentEditor.ExecuteVerb(Index: Integer);<br />
begin<br />
case Index of<br />
0: DoShowEditor;<br />
end;<br />
end;<br />
<br />
function TCheckGroupComponentEditor.GetVerb(Index: Integer): String;<br />
begin<br />
Result := 'CheckBox Editor...';<br />
end;<br />
<br />
function TCheckGroupComponentEditor.GetVerbCount: Integer;<br />
begin<br />
Result := 1;<br />
end;<br />
</syntaxhighlight><br />
<br />
==Design-time component debugging==<br />
To catch design-time-errors in a (newly created) ''dbgcomponent'':<br />
* open project <tt>C:\lazarus\ide\lazarus.lpi</tt>;<br />
* run project;<br />
* set breakpoint in ''dbgcomponent'' in main (1st) app;<br />
* use ''dbgcomponent'' pascal code in second app;<br />
* step through design-time component code in debug-session; do whatever is necessary;<br />
<br />
==See also==<br />
* [[Extending the IDE]]<br />
* [[Lazarus Packages]] - A guide for creating a package under Lazarus<br />
* [[Components and Code examples]]<br />
* [[Lazarus Components]]<br />
* [[IDE Window: Add to Package]]<br />
* [[IDE Window: Create new package component]]<br />
<br />
You can post questions regarding this page [http://forum.lazarus.freepascal.org/index.php/topic,5789.0.html here]<br />
<br />
[[Category:Lazarus]]<br />
[[Category:Component Creation]]<br />
[[Category:Packages]]<br />
[[Category:Code]]<br />
[[Category:Tutorials]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=IDE_Window:_Create_new_package_component&diff=118283IDE Window: Create new package component2018-06-23T11:45:44Z<p>Ñuño Martínez: </p>
<hr />
<div>{{IDE Window: Create new package component}}<br />
<br />
This IDE dialog allows to select a design time package where to add a new component.<br />
<br />
This dialog is invoked via '''Package / New component''' or via the IDE short cut '''New package component'''.<br />
<br />
For details about creating the component see [[IDE_Window:_Add_to_Package|Add to package]] dialog.<br />
<br />
To add the component to a new package select '''(Create new package)'''.<br />
<br />
Exists since 0.9.31.<br />
<br />
==See also==<br />
* [[How To Write Lazarus Component]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Castle_Game_Engine&diff=117537Castle Game Engine2018-05-15T11:48:29Z<p>Ñuño Martínez: Tried to make it a bit more "wikipedic", and added links to game development stuff.</p>
<hr />
<div>{{Castle_Game_Engine}}<br />
{{Infobox game development}}<br />
<br />
[https://castle-engine.io/ Castle Game Engine] is a cross-platform 3D and 2D [[Game Engine|game engine]]. It provides an extensible API to create and manage 3D objects, with out-of-the-box levels, items, intelligent creatures and more. It support 3D models and animations in various formats, in particular [https://castle-engine.io/vrml_x3d.php very versatile VRML / X3D], but also Collada, Wavefront OBJ, and Spine JSON, that allows 2D animations. Many graphic features are available, like shadows, bump mapping, mirrors, screen effects and shaders.<br />
<br />
The engine can be used to compile both desktop (Linux, Windows, Mac OS X) and mobile games (Android, iOS).<br />
<br />
Rendering is done through OpenGL or OpenGLES2.<br />
<br />
It is component based.<br />
<br />
The engine can be used just as a set of units and components. You can also use the [https://github.com/castle-engine/castle-engine/wiki/Build-Tool engine build tool] to easily compile and package your games, e.g. for Android or iOS.<br />
<br />
The engine is open-source --- the core engine may be used under GNU LGPL, with "static linking exception" like FPC RTL, so you can make both open- and closed-source games. Developed using a clean Object Pascal, for FPC/Lazarus.<br />
<br />
== Screenshots ==<br />
<br />
VRML/X3D browser in Lazarus:<br />
<br />
[[Image:kambi_vrml_browser.jpg]]<br />
<br />
FPS example game:<br />
<br />
[[Image:castle_game_engine_fps_game.jpg]]<br />
<br />
<br />
==External links==<br />
* [https://www.youtube.com/channel/UCq9jJ5ivIXC5VEWiUAfxBxw Castle Game Engine YouTube channel]<br />
* [https://castle-engine.io/features.php More complete list of engine features.]<br />
* [https://castle-engine.io/documentation.php Getting started]<br />
* [https://castle-engine.io/apidoc/html/index.html API reference]<br />
* [https://www.patreon.com/castleengine Patreon page]<br />
<br />
[[Category:Components]]<br />
[[Category:Graphics]]<br />
[[Category:Games]]<br />
[[Category:Game Development]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=FPC_and_Allegro&diff=117536FPC and Allegro2018-05-15T11:46:41Z<p>Ñuño Martínez: Categories and Game development links.</p>
<hr />
<div>{{FPC and Allegro}}<br />
{{Infobox game development}}<br />
<br />
==Introduction==<br />
'''Allegro''' is a cross-platform library mainly aimed at video game and multimedia programming. It handles common, low-level tasks such as creating windows, accepting user input, loading data, drawing images, playing sounds, etc. and generally abstracting away the underlying platform. However, Allegro is ''not'' a [[Game Engine|game engine]]: it is a [[Game framework|game framework]] you are free to design and structure your program as you like.<br />
<br />
Allegro 5 has the following additional features:<br />
<br />
*Supported on Windows, Linux, Mac OSX, iPhone and Android.<br />
*User-friendly, intuitive C API usable from many languages.<br />
*Hardware accelerated bitmap and graphical primitive drawing support (via OpenGL or Direct3D).<br />
*Audio recording support.<br />
*Font loading and drawing.<br />
*Video playback.<br />
*Abstractions over shaders and low-level polygon drawing.<br />
*And more!<br />
To use Allegro with Free Pascal you need the [http://allegro-pas.sf.net/ Allegro.pas wrapper].<br />
==Tutorials==<br />
* [[Allegro.pas_tutorial_0 | Tutorial 0]]: Installation.<br />
* [[Allegro.pas_tutorial_1 | Tutorial 1]]: Basic program, Allegro initialization and opening a window.<br />
* [[Allegro.pas_tutorial_2 | Tutorial 2]]: Loading and drawind images. Data module and game title.<br />
* [[Allegro.pas_tutorial_3 | Tutorial 3]]: Basic game. User input. Sprites.<br />
* [[Allegro.pas_tutorial_4 | Tutorial 4]]: Sound.<br />
<br />
==See also==<br />
*[[Game framework]]<br />
<br />
==Links==<br />
*[http://allegro-pas.sourceforge.net/ Project page]<br />
*[https://sourceforge.net/projects/allegro-pas/files/ Downloading]<br />
*[http://allegro-pas.sourceforge.net/docs/ Online documentation]<br />
<br />
[[Category:Games]]<br />
[[Category:Game Development]]<br />
[[Category:Graphics]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Game_framework&diff=117213Game framework2018-04-25T11:53:25Z<p>Ñuño Martínez: </p>
<hr />
<div>{{Infobox game development}}<br />
<br />
A '''game framework''' is a library designed to help game development. It usually defines [https://en.wikipedia.org/wiki/Application_programming_interface APIs] to deal with [[Graphics libraries|graphics]], sound, user input, data files, etc. In most cases it defines a high-level API that allows [[cross-platform]] development.<br />
<br />
Main difference between game frameworks and [[Game Engine|game engines]] is that the later also implements the game loop, as well as complex data structures (maps, actors...), data containers and tools.<br />
<br />
==Game frameworks==<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Usage<br />
! License<br />
! Notes<br />
|-<br />
| [[FPC_and_Allegro|Allegro]]<br />
| [http://liballeg.org/ liballeg.org]<br />
| [http://allegro-pas.sourceforge.net/ Bindings Allegro-pas]<br />
| Allegro 1-4: Beerware, Allegro 5: zlib<br />
| Allegro is a cross-platform library mainly aimed at video game and multimedia programming. It handles common, low-level tasks such as creating windows, accepting user input, loading data, drawing images, playing sounds, etc. and generally abstracting away the underlying platform.<br />
|-<br />
| Phoenix<br />
| [https://code.google.com/p/phoenixlib/ code.google.com]<br />
| FPC/Delphi<br />
|<br />
|<br />
|-<br />
| [[GLScene]]<br />
| [http://glscene.sourceforge.net/ sourceforge.net] <br />
| FPC/Delphi<br />
| Mozilla Public License<br />
| GLScene is a free OpenGL-based library for the Delphi programming language, C++ and Free Pascal. It provides visual components and objects allowing description and rendering of 3D scenes.<br />
|-<br />
| SFML<br />
| [https://www.sfml-dev.org/ https://www.sfml-dev.org] <br />
| FPC/Lazarus [https://github.com/DJMaster/csfml-fpc SFML headers] [https://github.com/CWBudde/PasSFML PasSFML(OOP)]<br />
|<br />
| SFML is a simple, fast, cross-platform and object-oriented multimedia API. It provides access to windowing,<br />
graphics, audio and network. <br />
|-<br />
| SDL<br />
| [http://www.libsdl.org www.libsdl.org] <br />
| [http://sourceforge.net/projects/sdl2fpc/?source=directory SDL2 bindings for FPC] [https://sourceforge.net/projects/lazsdl2/ Laz2SDL] [https://github.com/ev1313/Pascal-SDL-2-Headers SDL2 Headers] <br />
|<br />
| Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, <br />
and graphics hardware via OpenGL and Direct3D<br />
|}<br />
<br />
==See also==<br />
* [[Graphics libraries]]<br />
* [[Game Engine|Game engine]]<br />
<br />
<br />
[[Category:Game Development]] [[Category:Games]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Portal:Game_Development&diff=116609Portal:Game Development2018-03-22T17:49:09Z<p>Ñuño Martínez: Added links to free resources (not sure it is a good idea though).</p>
<hr />
<div>{{Index-Portal}}<br />
<br />
{{Warning|This portal is a rough draft. It must be completed and fixed.}}<br />
<br />
{{Portal_Head2|555555|<big>{{PAGENAME}}</big>|bbbbbb|000000}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
Pascal was used to make games since its creation, including some well-known classic games like Apogee's [https://en.wikipedia.org/wiki/List_of_minor_Apogee_Software_video_games#Beyond_the_Titanic Beyond the Titanic].<br />
<br />
Today Pascal is still used to create games by both amateur and professional game-makers.<br />
|}<br />
<br />
<div style="float:left; width:60%;"> <!-- Both "width" values should add up to 100% --><br />
{{Portal_Head|555555|Pascal game related forums|bbbbbb|000000||}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [http://www.pascalgamedevelopment.com/forum.php Pascal Game Development] - Community dedicated to game developing with any Pascal and Object Pascal compiler, as Free Pascal, Delphi, SMS, etc.<br />
* [http://forum.lazarus.freepascal.org/index.php/board,74.0.html Games at the Lazarus forum] - A section dedicated to game development with Lazarus.<br />
|}<br />
<br />
<br /><br />
<br />
{{Portal_Head|555555|Wiki pages|bbbbbb|000000||Template:Infobox game development}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [[Games]]<br />
* [[Game Engine]]<br />
* [[Game framework]]<br />
* [[Graphics libraries]]<br />
|}<br />
</div><br />
<br />
<div style="float:right; width:39%"> <!-- Both "width" values should add up to 100% --><br />
{{Portal_Head|555555|Universal sources based on gamedev|bbbbbb|000000||}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [https://www.reddit.com/r/gamedev/ Reddit]<br />
* [https://www.gamedev.net/ Gamedev.net]<br />
* [http://forums.indiegamer.com/ Indiegamer]<br />
* [https://forums.tigsource.com/ Tig Source]<br />
* [https://stackoverflow.com/ Stackoverflow]<br />
|}<br />
</div><br />
<br />
<div style="float:right; width:39%"> <!-- Both "width" values should add up to 100% --><br />
{{Portal_Head|555555|Freee resources for games|bbbbbb|000000||}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [https://opengameart.org/ OpenGameArt] - a media repository intended for use with free software game projects.<br />
* [https://www.widgetworx.com/spritelib/ SpriteLib] - a famous colection of graphics from the 90's.<br />
|}<br />
</div><br />
<br />
[[category:Portals|Game Development]]<br />
[[category:Game Development|!Game Development]]<br />
[[category:Games|!Game Development]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Graphics_libraries&diff=116585Graphics libraries2018-03-22T11:56:54Z<p>Ñuño Martínez: </p>
<hr />
<div>This is a list of libraries designed '''only''' to work with graphics. If you're looking for a library to be used for [[Portal:Game Development|game development]] you should use a [[Game framework|game framework]] or a [[Game Engine|game engine]] instead.<br />
<br />
==Graphics libraries==<br />
{| class="wikitable sortable"<br />
! Name<br />
! Developers<br />
! Platforms<br />
! License<br />
! Raster<br />
! Vectors<br />
! 3D<br />
! Supported File Formats<br />
! Color formats or framework<br />
|-<br />
| [http://www.crossgl.com/aggpas/ AggPas] || Milano || Windows, Linux, Mac OS || [http://www.crossgl.com/aggpas/aggpas-licence.htm Custom] || {{Yes}} || {{Yes}} ||{{No}} || BMP, SVG, Flash (TXT), True Type Font || 8-bit grayscale, 15-bit, 16-bit, 24-bit RGB and 32-bit RGB with alpha<br />
|-<br />
| [http://andorra.sourceforge.net/ Andorra 2D] || [http://andorra.sourceforge.net/index1013.html?section=credits Team] || Windows and Linux || Common Public License, GNU GPL || {{Yes}} || {{No}} ||{{No}} || BMP, PNG, TGA || DirectX and OpenGL<br />
|-<br />
| [[BGRABitmap|BGRABitmap]] || Circular || Win32, Win64, Linux (Gtk & Qt), Mac OS (Carbon) || Modified LGPL || {{Yes}} || {{Yes}} ||{{Yes}} || read-write: BMP, JPEG, PNG, static GIF, PCX, LZP, ORA, OXO, TGA, TIFF, XWD, XPM; read-only: PDN, PSD, ICO, animated GIF || 32 bit BGRA, Canvas2d (like HTML5), CanvasBGRA (like TCanvas), OpenGL, ZenGL<br />
|-<br />
| [[fcl-image]] || Team || All platforms || Modified LGPL || {{Yes}} || {{No}} ||{{No}} || BMP, JPG, PCX, PNG, TGA || Various formats up to 64-bit RGBA<br />
|-<br />
| [[fpvectorial|fpVectorial]] || || || || {{Yes}} || {{Yes}} || {{Yes}} || PDF, Corel Draw, SVG, DXF || Supports raster images placed inside the vectorial document. Supports documents with multiple pages.<br />
|- <br />
| [http://graphics32.org Graphics32] || Team Graphics32 || Win32 and OS X || MPL and LGPL || {{Yes}} || {{No}} || {{No}} || BMP, JPG, WMF, EMF || 32-bit RGBA<br />
|-<br />
| Lazarus [[Developing_with_Graphics#Working_with_TCanvas|TCanvas]] || Lazarus developers || All supported by the LCL || Modified LGPL || {{Yes}} || {{No}} || {{No}} ||BMP, ICO, ICNS, PNG, JPEG, GIF, etc || Represents the native canvas of the widgetset<br />
|-<br />
| Lazarus [[Developing_with_Graphics#Working_with_TLazIntfImage.2C_TRawImage_and_TLazCanvas|TLazCanvas+TLazIntfImage]] || Lazarus developers || All supported by the LCL || Modified LGPL || {{Yes}} || {{No}} || {{No}} || Only via fcl-image || Supports almost any pixel format. Cannot render to the screen directly, but instead is utilized in connection with something that can, like TCanvas or LCL-CustomDrawn<br />
|-<br />
| [[LazRGBGraphics|LazRGBGraphics]] || Abandoned (formerly Tom Gregorovic) || || Modified LGPL || {{Yes}} || {{No}} || {{No}} || || 8-bit grayscale and 32 bit RGB without alpha<br />
|-<br />
| [http://imaginglib.sourceforge.net/ Vampyre Imaging Library] || Marek Mauder || Windows x86/AMD64, Linux x86/AMD64, FreeBSD x86/AMD64, Mac OS X on Intel || Mozilla Public License, GNU LGPL || {{Yes}} || {{No}} || {{No}} || BMP, JPEG, PNG/APNG, GIF, DDS, TGA, MNG, JNG, JPEG2000, TIFF, PSD, PBM, PGM, PPM, PAM, PFM, PCX, XPM, and more || 8, 16, 24, 32, 48 and 64 bit RGB and ARGB formats, indexed formats, grayscale formats, floating point formats (IEEE754 and half precision), compressed formats like DXT1/3/5, 3Dc, and BTC<br />
|}<br />
<br />
==See also==<br />
* [[Game framework]]<br />
* [[Game Engine]]<br />
<br />
[[Category:Graphics]]<br />
[[Category:Libraries]]<br />
[[Category:Comparisons]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Game_Engine&diff=116584Game Engine2018-03-22T11:54:49Z<p>Ñuño Martínez: </p>
<hr />
<div>{{Game_Engine}}<br />
{{Infobox game development}}<br />
<br />
{{Warning|This page needs to be fixed and actualized:<br />
* Games should be in the new [[Games]] page.<br />
}}<br />
<br />
A '''game engine''' is a software development environment designed to create games. It distinguish from [[Game framework|game libraries]] in that:<br />
* Implements the ''game loop'', networking communications and resource managers.<br />
* Implements complex data structures, such as maps, particle systems and actors.<br />
* Implements tools as editors and data managers.<br />
All these subsystems would affect in gameplay aspects as movement, scoring or even genre. You can read this [http://en.wikipedia.org/wiki/Game_engine Wikipedia page] for more information.<br />
<br />
== Game Engines ==<br />
Here's a list of game engines that are Pascal/Delphi based or have Pascal binding libraries.<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Usage<br />
! Notes<br />
|-<br />
| [[Castle Game Engine]] <br />
| [https://castle-engine.sourceforge.io/ castle-engine.sourceforge.io] <br />
| FPC<br />
|<br />
|-<br />
| Quad-Engine<br />
| [http://quad-engine.com/ quad-engine.com] <br />
| Delphi/FPC/C#/C++<br />
| <br />
|-<br />
| TERRA Game Engine <br />
| [https://github.com/Relfos/TERRA-Engine github.com/Relfos/TERRA-Engine]<br />
| Delphi/FPC/Oxygene<br />
| 2D & 3D, all platforms supported<br />
|-<br />
| [[nxPascal]]<br />
| [https://github.com/Zaflis/nxpascal github.com]<br />
| FPC/Delphi<br />
|<br />
|-<br />
| g2mp<br />
| [https://github.com/MrDan2345/g2mp github.com]<br />
| FPC<br />
| Ideologically replaced Dan Jet X, multiplatform, editor- and code-based development <br />
|-<br />
| Andorra 2D<br />
| [http://andorra.sourceforge.net/ sourceforge.net]<br />
| Delphi<br />
| <br />
|-<br />
| CAST II Game Engine<br />
| [http://www.casteng.com/ http://www.casteng.com/]<br />
| Delphi<br />
| Alive? last update 2011<br />
|-<br />
| Delphi X <br />
| [http://www.micrel.cz/Dx/ www.micrel.cz/Dx]<br />
| Delphi<br />
|<br />
|-<br />
| Afterwarp<br />
| [http://www.afterwarp.net/ www.afterwarp.net]<br />
| FPC/Delphi<br />
| <br />
|-<br />
| Brtech1<br />
| [http://www.pascalgamedevelopment.com/showthread.php?13795-Brtech1 PascalGameDevelopment.com]<br />
| FPC<br />
| Not really available as an engine or library. Many videos can be found on youtube though. <br />
|-<br />
| GameMaker: Studio<br />
| [http://www.yoyogames.com/ www.yoyogames.com] <br />
| N/A <br />
| Yes, it's not really a game engine library. But it's a game engine and studio written in Delphi. Special Pascal proud. <br />
|-<br />
| ZGameEditor<br />
| [http://www.zgameeditor.org/ www.zgameeditor.org] <br />
| FPC/Delphi<br />
| <br />
|-<br />
| SO Engine<br />
| [https://github.com/dimsa/ShadowEngine github.com] <br />
| Delphi/FMX<br />
| Small Crossplatform (Win, Android, iOs) indy engine with formatters, animations, intersections and etc.<br />
|-<br />
| DGLE<br />
| [http://dglengine.org/index_en.html dglengine.org] <br />
| Delphi/FPC/C#/C++<br />
| Powerful free open source cross-platform game engine.<br />
|}<br />
<br />
==Physics Engines==<br />
These engines simulate the physical world (collisions, trajectories etc). Not really game engines per se, but could certainly be used in games.<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Usage<br />
! Notes<br />
|-<br />
| TundAx<br />
| [https://github.com/JordiCorbilla/thundax-delphi-physics-engine github.com]<br />
| FPC/Delphi<br />
| <br />
|-<br />
| Newton<br />
| [http://www.saschawillems.de/ www.saschawillems.de]<br />
| [http://www.saschawillems.de/?page_id=76 Bindings]<br />
| <br />
|-<br />
| Box2D-Delphi<br />
| [https://code.google.com/p/box2d-delphi/ code.google.com] <br />
| FPC/Delphi<br />
| This is Delphi implementation of [http://code.google.com/p/box2d/ Box2d] library<br />
|-<br />
| Kraft<br />
| [https://github.com/BeRo1985/kraft github.com]<br />
| FPC/Delphi<br />
| Pascal native physics engine by Benjamin Rosseaux. <br />
|-<br />
| PAPPE - PAscal Powerful Physics Engine<br />
| [https://sourceforge.net/projects/pappe/ sourceforge.net]<br />
| FPC/Delphi<br />
| Pascal native physics engine by Benjamin Rosseaux. The engine was deprecated by Kraft<br />
|}<br />
<br />
==Games==<br />
''Main article: [[Games]]''<br />
<br />
Games written with Free Pascal. Currently active projects commercial, closed or open source. Some more [[Projects_using_Lazarus#Games|here]].<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Open Source<br />
! Notes<br />
|- <br />
| Darkest Before the Dawn<br />
| http://castle-engine.sourceforge.net/darkest_before_dawn.php [https://play.google.com/store/apps/details?id=net.sourceforge.castleengine.darkestbeforedawn Google Play (Android version)]<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Castle<br />
| http://castle-engine.sourceforge.net/castle.php<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Diablo Roguelike<br />
| [http://diablo.chaosforge.org/ doom.chaosforge.org] [http://sourceforge.net/projects/diablorl/ Sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| Doom Roguelike<br />
| [http://doom.chaosforge.org/ doom.chaosforge.org]<br />
| {{No}}<br />
|<br />
|- <br />
| Escape from the Universe<br />
| https://play.google.com/store/apps/details?id=com.catastrophe.games.escape.universe.space.shooter<br />
| {{No}}<br />
| Using Castle Game Engine<br />
|-<br />
| HedgeWars<br />
| [http://www.hedgewars.org/ www.hedgewars.org]<br />
| {{Yes}}<br />
| <br />
|- <br />
| Project "W"<br />
| [http://www.pascalgamedevelopment.com/showthread.php?3594-Projekt-quot-W-quot PascalGameDevelopment.com ]<br />
| {{No}}<br />
|<br />
|- <br />
| Scrabble 3D<br />
| [http://sourceforge.net/projects/scrabble/ sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| UltraStar Deluxe<br />
| [http://sourceforge.net/projects/ultrastardx/ sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| Minimon 3D<br />
| [http://www.minimon3d.com http://www.minimon3d.com]<br />
| {{No}}<br />
|<br />
|- <br />
| Mountains of Fire<br />
| http://castle-engine.sourceforge.net/mountains_of_fire.php<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Shu<br />
| [http://sourceforge.net/projects/rr-rr sourceforge.net]<br />
| {{Yes}}<br />
| Interesting looking RPG - in progress<br />
|- <br />
| Project Helena<br />
| [https://sourceforge.net/projects/projecthelena/ sourceforge.net]<br />
| {{Yes}}<br />
| A game by Eugene Loza<br />
|- <br />
| Asteroids vs You<br />
| [https://github.com/dimsa/ShadowEngine/ github.com], [https://play.google.com/store/apps/details?id=com.ShadowEngine.AsteroidsVsYou Google Play (Android version)]<br />
| {{Yes}}<br />
| Open Source Demo Game for SO Engine<br />
|}</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Graphics_libraries&diff=116582Graphics libraries2018-03-22T11:47:35Z<p>Ñuño Martínez: Removed game libraries and frameworks, added links and ordered the table alphabetically.</p>
<hr />
<div>This is a list of libraries designed '''only''' to work with graphics. If you're looking for a library to be used for [[Portal:Game Development|game development]] you should use a [[Game framework|game framework]] instead.<br />
<br />
==Graphics libraries==<br />
{| class="wikitable sortable"<br />
! Name<br />
! Developers<br />
! Platforms<br />
! License<br />
! Raster<br />
! Vectors<br />
! 3D<br />
! Supported File Formats<br />
! Color formats or framework<br />
|-<br />
| [http://www.crossgl.com/aggpas/ AggPas] || Milano || Windows, Linux, Mac OS || [http://www.crossgl.com/aggpas/aggpas-licence.htm Custom] || {{Yes}} || {{Yes}} ||{{No}} || BMP, SVG, Flash (TXT), True Type Font || 8-bit grayscale, 15-bit, 16-bit, 24-bit RGB and 32-bit RGB with alpha<br />
|-<br />
| [http://andorra.sourceforge.net/ Andorra 2D] || [http://andorra.sourceforge.net/index1013.html?section=credits Team] || Windows and Linux || Common Public License, GNU GPL || {{Yes}} || {{No}} ||{{No}} || BMP, PNG, TGA || DirectX and OpenGL<br />
|-<br />
| [[BGRABitmap|BGRABitmap]] || Circular || Win32, Win64, Linux (Gtk & Qt), Mac OS (Carbon) || Modified LGPL || {{Yes}} || {{Yes}} ||{{Yes}} || read-write: BMP, JPEG, PNG, static GIF, PCX, LZP, ORA, OXO, TGA, TIFF, XWD, XPM; read-only: PDN, PSD, ICO, animated GIF || 32 bit BGRA, Canvas2d (like HTML5), CanvasBGRA (like TCanvas), OpenGL, ZenGL<br />
|-<br />
| [[fcl-image]] || Team || All platforms || Modified LGPL || {{Yes}} || {{No}} ||{{No}} || BMP, JPG, PCX, PNG, TGA || Various formats up to 64-bit RGBA<br />
|-<br />
| [[fpvectorial|fpVectorial]] || || || || {{Yes}} || {{Yes}} || {{Yes}} || PDF, Corel Draw, SVG, DXF || Supports raster images placed inside the vectorial document. Supports documents with multiple pages.<br />
|- <br />
| [http://graphics32.org Graphics32] || Team Graphics32 || Win32 and OS X || MPL and LGPL || {{Yes}} || {{No}} || {{No}} || BMP, JPG, WMF, EMF || 32-bit RGBA<br />
|-<br />
| Lazarus [[Developing_with_Graphics#Working_with_TCanvas|TCanvas]] || Lazarus developers || All supported by the LCL || Modified LGPL || {{Yes}} || {{No}} || {{No}} ||BMP, ICO, ICNS, PNG, JPEG, GIF, etc || Represents the native canvas of the widgetset<br />
|-<br />
| Lazarus [[Developing_with_Graphics#Working_with_TLazIntfImage.2C_TRawImage_and_TLazCanvas|TLazCanvas+TLazIntfImage]] || Lazarus developers || All supported by the LCL || Modified LGPL || {{Yes}} || {{No}} || {{No}} || Only via fcl-image || Supports almost any pixel format. Cannot render to the screen directly, but instead is utilized in connection with something that can, like TCanvas or LCL-CustomDrawn<br />
|-<br />
| [[LazRGBGraphics|LazRGBGraphics]] || Abandoned (formerly Tom Gregorovic) || || Modified LGPL || {{Yes}} || {{No}} || {{No}} || || 8-bit grayscale and 32 bit RGB without alpha<br />
|-<br />
| [http://imaginglib.sourceforge.net/ Vampyre Imaging Library] || Marek Mauder || Windows x86/AMD64, Linux x86/AMD64, FreeBSD x86/AMD64, Mac OS X on Intel || Mozilla Public License, GNU LGPL || {{Yes}} || {{No}} || {{No}} || BMP, JPEG, PNG/APNG, GIF, DDS, TGA, MNG, JNG, JPEG2000, TIFF, PSD, PBM, PGM, PPM, PAM, PFM, PCX, XPM, and more || 8, 16, 24, 32, 48 and 64 bit RGB and ARGB formats, indexed formats, grayscale formats, floating point formats (IEEE754 and half precision), compressed formats like DXT1/3/5, 3Dc, and BTC<br />
|}<br />
<br />
==See also==<br />
* [[Game framework]]<br />
<br />
[[Category:Graphics]]<br />
[[Category:Comparisons]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Game_Engine&diff=116581Game Engine2018-03-22T11:39:39Z<p>Ñuño Martínez: Changed definition and moved game frameworks to the "Game framework" page</p>
<hr />
<div>{{Game_Engine}}<br />
{{Infobox game development}}<br />
<br />
{{Warning|This page needs to be fixed and actualized:<br />
* Games should be in the new [[Games]] page.<br />
}}<br />
<br />
A '''game engine'' is a software development environment designed to create games. It distinguish from [[Game framework|game libraries]] in that:<br />
* Implements the ''game loop'', networking communications and resource managers.<br />
* Implements complex data structures, such as maps, particle systems and actors.<br />
* Implements tools as editors and data managers.<br />
All these subsystems would affect in gameplay aspects as movement, scoring or even genre. You can read this [http://en.wikipedia.org/wiki/Game_engine Wikipedia page] for more information.<br />
<br />
== Game Engines ==<br />
Here's a list of game engines that are Pascal/Delphi based or have Pascal binding libraries.<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Usage<br />
! Notes<br />
|-<br />
| [[Castle Game Engine]] <br />
| [https://castle-engine.sourceforge.io/ castle-engine.sourceforge.io] <br />
| FPC<br />
|<br />
|-<br />
| Quad-Engine<br />
| [http://quad-engine.com/ quad-engine.com] <br />
| Delphi/FPC/C#/C++<br />
| <br />
|-<br />
| TERRA Game Engine <br />
| [https://github.com/Relfos/TERRA-Engine github.com/Relfos/TERRA-Engine]<br />
| Delphi/FPC/Oxygene<br />
| 2D & 3D, all platforms supported<br />
|-<br />
| [[nxPascal]]<br />
| [https://github.com/Zaflis/nxpascal github.com]<br />
| FPC/Delphi<br />
|<br />
|-<br />
| g2mp<br />
| [https://github.com/MrDan2345/g2mp github.com]<br />
| FPC<br />
| Ideologically replaced Dan Jet X, multiplatform, editor- and code-based development <br />
|-<br />
| Andorra 2D<br />
| [http://andorra.sourceforge.net/ sourceforge.net]<br />
| Delphi<br />
| <br />
|-<br />
| CAST II Game Engine<br />
| [http://www.casteng.com/ http://www.casteng.com/]<br />
| Delphi<br />
| Alive? last update 2011<br />
|-<br />
| Delphi X <br />
| [http://www.micrel.cz/Dx/ www.micrel.cz/Dx]<br />
| Delphi<br />
|<br />
|-<br />
| Afterwarp<br />
| [http://www.afterwarp.net/ www.afterwarp.net]<br />
| FPC/Delphi<br />
| <br />
|-<br />
| Brtech1<br />
| [http://www.pascalgamedevelopment.com/showthread.php?13795-Brtech1 PascalGameDevelopment.com]<br />
| FPC<br />
| Not really available as an engine or library. Many videos can be found on youtube though. <br />
|-<br />
| GameMaker: Studio<br />
| [http://www.yoyogames.com/ www.yoyogames.com] <br />
| N/A <br />
| Yes, it's not really a game engine library. But it's a game engine and studio written in Delphi. Special Pascal proud. <br />
|-<br />
| ZGameEditor<br />
| [http://www.zgameeditor.org/ www.zgameeditor.org] <br />
| FPC/Delphi<br />
| <br />
|-<br />
| SO Engine<br />
| [https://github.com/dimsa/ShadowEngine github.com] <br />
| Delphi/FMX<br />
| Small Crossplatform (Win, Android, iOs) indy engine with formatters, animations, intersections and etc.<br />
|-<br />
| DGLE<br />
| [http://dglengine.org/index_en.html dglengine.org] <br />
| Delphi/FPC/C#/C++<br />
| Powerful free open source cross-platform game engine.<br />
|}<br />
<br />
==Physics Engines==<br />
These engines simulate the physical world (collisions, trajectories etc). Not really game engines per se, but could certainly be used in games.<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Usage<br />
! Notes<br />
|-<br />
| TundAx<br />
| [https://github.com/JordiCorbilla/thundax-delphi-physics-engine github.com]<br />
| FPC/Delphi<br />
| <br />
|-<br />
| Newton<br />
| [http://www.saschawillems.de/ www.saschawillems.de]<br />
| [http://www.saschawillems.de/?page_id=76 Bindings]<br />
| <br />
|-<br />
| Box2D-Delphi<br />
| [https://code.google.com/p/box2d-delphi/ code.google.com] <br />
| FPC/Delphi<br />
| This is Delphi implementation of [http://code.google.com/p/box2d/ Box2d] library<br />
|-<br />
| Kraft<br />
| [https://github.com/BeRo1985/kraft github.com]<br />
| FPC/Delphi<br />
| Pascal native physics engine by Benjamin Rosseaux. <br />
|-<br />
| PAPPE - PAscal Powerful Physics Engine<br />
| [https://sourceforge.net/projects/pappe/ sourceforge.net]<br />
| FPC/Delphi<br />
| Pascal native physics engine by Benjamin Rosseaux. The engine was deprecated by Kraft<br />
|}<br />
<br />
==Games==<br />
''Main article: [[Games]]''<br />
<br />
Games written with Free Pascal. Currently active projects commercial, closed or open source. Some more [[Projects_using_Lazarus#Games|here]].<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Open Source<br />
! Notes<br />
|- <br />
| Darkest Before the Dawn<br />
| http://castle-engine.sourceforge.net/darkest_before_dawn.php [https://play.google.com/store/apps/details?id=net.sourceforge.castleengine.darkestbeforedawn Google Play (Android version)]<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Castle<br />
| http://castle-engine.sourceforge.net/castle.php<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Diablo Roguelike<br />
| [http://diablo.chaosforge.org/ doom.chaosforge.org] [http://sourceforge.net/projects/diablorl/ Sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| Doom Roguelike<br />
| [http://doom.chaosforge.org/ doom.chaosforge.org]<br />
| {{No}}<br />
|<br />
|- <br />
| Escape from the Universe<br />
| https://play.google.com/store/apps/details?id=com.catastrophe.games.escape.universe.space.shooter<br />
| {{No}}<br />
| Using Castle Game Engine<br />
|-<br />
| HedgeWars<br />
| [http://www.hedgewars.org/ www.hedgewars.org]<br />
| {{Yes}}<br />
| <br />
|- <br />
| Project "W"<br />
| [http://www.pascalgamedevelopment.com/showthread.php?3594-Projekt-quot-W-quot PascalGameDevelopment.com ]<br />
| {{No}}<br />
|<br />
|- <br />
| Scrabble 3D<br />
| [http://sourceforge.net/projects/scrabble/ sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| UltraStar Deluxe<br />
| [http://sourceforge.net/projects/ultrastardx/ sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| Minimon 3D<br />
| [http://www.minimon3d.com http://www.minimon3d.com]<br />
| {{No}}<br />
|<br />
|- <br />
| Mountains of Fire<br />
| http://castle-engine.sourceforge.net/mountains_of_fire.php<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Shu<br />
| [http://sourceforge.net/projects/rr-rr sourceforge.net]<br />
| {{Yes}}<br />
| Interesting looking RPG - in progress<br />
|- <br />
| Project Helena<br />
| [https://sourceforge.net/projects/projecthelena/ sourceforge.net]<br />
| {{Yes}}<br />
| A game by Eugene Loza<br />
|- <br />
| Asteroids vs You<br />
| [https://github.com/dimsa/ShadowEngine/ github.com], [https://play.google.com/store/apps/details?id=com.ShadowEngine.AsteroidsVsYou Google Play (Android version)]<br />
| {{Yes}}<br />
| Open Source Demo Game for SO Engine<br />
|}</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Game_framework&diff=116580Game framework2018-03-22T11:25:53Z<p>Ñuño Martínez: Created page with "{{Infobox game development}} A '''game framework''' is a library designed to help game development. It usually defines [https://en.wikipedia.org/wiki/Application_programming..."</p>
<hr />
<div>{{Infobox game development}}<br />
<br />
A '''game framework''' is a library designed to help game development. It usually defines [https://en.wikipedia.org/wiki/Application_programming_interface APIs] to deal with [[Graphics libraries|graphics]], sound, user input, data files, etc. In most cases it defines a high-level API that allows [[cross-platform]] development.<br />
<br />
Main difference between game frameworks and [[Game Engine|game engines]] is that the later also implements the game loop, as well as complex data structures (maps, actors...), data containers and tools.<br />
<br />
==Game frameworks==<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Usage<br />
! License<br />
! Notes<br />
|-<br />
| [[FPC_and_Allegro|Allegro]]<br />
| [http://liballeg.org/ liballeg.org]<br />
| [http://allegro-pas.sourceforge.net/ Bindings Allegro-pas]<br />
| Allegro 1-4: Beerware, Allegro 5: zlib<br />
|<br />
|-<br />
| Phoenix<br />
| [https://code.google.com/p/phoenixlib/ code.google.com]<br />
| FPC/Delphi<br />
|<br />
|<br />
|-<br />
| [[GLScene]]<br />
| [http://glscene.sourceforge.net/ sourceforge.net] <br />
| FPC/Delphi<br />
| Mozilla Public License<br />
|<br />
|-<br />
| SMFL<br />
| [http://www.sfml-dev.org/index-fr.php http://www.sfml-dev.org/index-fr.php] <br />
| [https://github.com/CWBudde/PasSFML Bindings PasSFML]<br />
|<br />
| It is a simplified alternative to SDL. <br />
|-<br />
| [[FPC_and_SDL|SDL]]<br />
| [http://www.libsdl.org www.libsdl.org] <br />
| Bindings<br />
|<br />
| <br />
|-<br />
| SDL2<br />
| [http://www.libsdl.org www.libsdl.org] <br />
| [http://sourceforge.net/projects/sdl2fpc/?source=directory Bindings SDL2 for Free Pascal Compiler] <br />
|<br />
| <br />
|-<br />
| [[ZenGL]]<br />
| [http://www.zengl.org/ www.zengl.org] <br />
| FPC/Delphi<br />
|<br />
|<br />
|}<br />
<br />
==See also==<br />
* [[Graphics libraries]]<br />
* [[Game Engine|Game engine]]<br />
<br />
<br />
[[Category:Game Development]] [[Category:Games]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Portal:Game_Development&diff=116579Portal:Game Development2018-03-22T11:02:50Z<p>Ñuño Martínez: Added link to edit "Infobox game development" template.</p>
<hr />
<div>{{Index-Portal}}<br />
<br />
{{Warning|This portal is a rough draft. It must be completed and fixed.}}<br />
<br />
{{Portal_Head2|555555|<big>{{PAGENAME}}</big>|bbbbbb|000000}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
Pascal was used to make games since its creation, including some well-known classic games like Apogee's [https://en.wikipedia.org/wiki/List_of_minor_Apogee_Software_video_games#Beyond_the_Titanic Beyond the Titanic].<br />
<br />
Today Pascal is still used to create games by both amateur and professional game-makers.<br />
|}<br />
<br />
<div style="float:left; width:60%;"> <!-- Both "width" values should add up to 100% --><br />
{{Portal_Head|555555|Pascal game related forums|bbbbbb|000000||}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [http://www.pascalgamedevelopment.com/forum.php Pascal Game Development] - Community dedicated to game developing with any Pascal and Object Pascal compiler, as Free Pascal, Delphi, SMS, etc.<br />
* [http://forum.lazarus.freepascal.org/index.php/board,74.0.html Games at the Lazarus forum] - A section dedicated to game development with Lazarus.<br />
|}<br />
<br />
<br /><br />
<br />
{{Portal_Head|555555|Wiki pages|bbbbbb|000000||Template:Infobox game development}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [[Games]]<br />
* [[Game Engine]]<br />
* [[Game framework]]<br />
* [[Graphics libraries]]<br />
|}<br />
</div><br />
<br />
<div style="float:right; width:39%"> <!-- Both "width" values should add up to 100% --><br />
{{Portal_Head|555555|Universal sources based on gamedev|bbbbbb|000000||}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [https://www.reddit.com/r/gamedev/ Reddit]<br />
* [https://www.gamedev.net/ Gamedev.net]<br />
* [http://forums.indiegamer.com/ Indiegamer]<br />
* [https://forums.tigsource.com/ Tig Source]<br />
* [https://stackoverflow.com/ Stackoverflow]<br />
|}<br />
</div><br />
<br />
[[category:Portals|Game Development]]<br />
[[category:Game Development|!Game Development]]<br />
[[category:Games|!Game Development]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Template:Infobox_game_development&diff=116578Template:Infobox game development2018-03-22T10:33:11Z<p>Ñuño Martínez: "Game framework" link added.</p>
<hr />
<div>{| class="toccolours vatop infobox" cellpadding="1" cellspacing="1" style="float:right; clear:right; width:{{{width|265}}}px; padding:0px; margin:0px 0px 1em 1em; font-size:85%;"<br />
| <br />
|-<br />
| <center><big>[[Portal:Game Development|'''Game Development''']]</big></center><br />
|-<br />
|<br />
* [[Games]]<br />
* [[Game Engine]]<br />
* [[Game framework]]<br />
* [[Graphics libraries]]<br />
|}</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Portal:Game_Development&diff=116577Portal:Game Development2018-03-22T10:31:29Z<p>Ñuño Martínez: Fixing and undoing revision 116576 by Ñuño Martínez (talk)</p>
<hr />
<div>{{Index-Portal}}<br />
<br />
{{Warning|This portal is a rough draft. It must be completed and fixed.}}<br />
<br />
{{Portal_Head2|555555|<big>{{PAGENAME}}</big>|bbbbbb|000000}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
Pascal was used to make games since its creation, including some well-known classic games like Apogee's [https://en.wikipedia.org/wiki/List_of_minor_Apogee_Software_video_games#Beyond_the_Titanic Beyond the Titanic].<br />
<br />
Today Pascal is still used to create games by both amateur and professional game-makers.<br />
|}<br />
<br />
<div style="float:left; width:60%;"> <!-- Both "width" values should add up to 100% --><br />
{{Portal_Head|555555|Pascal game related forums|bbbbbb|000000||}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [http://www.pascalgamedevelopment.com/forum.php Pascal Game Development] - Community dedicated to game developing with any Pascal and Object Pascal compiler, as Free Pascal, Delphi, SMS, etc.<br />
* [http://forum.lazarus.freepascal.org/index.php/board,74.0.html Games at the Lazarus forum] - A section dedicated to game development with Lazarus.<br />
|}<br />
<br />
<br /><br />
<br />
{{Portal_Head|555555|Wiki pages|bbbbbb|000000||}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [[Games]]<br />
* [[Game Engine]]<br />
* [[Graphics libraries]]<br />
|}<br />
</div><br />
<br />
<div style="float:right; width:39%"> <!-- Both "width" values should add up to 100% --><br />
{{Portal_Head|555555|Universal sources based on gamedev|bbbbbb|000000||}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [https://www.reddit.com/r/gamedev/ Reddit]<br />
* [https://www.gamedev.net/ Gamedev.net]<br />
* [http://forums.indiegamer.com/ Indiegamer]<br />
* [https://forums.tigsource.com/ Tig Source]<br />
* [https://stackoverflow.com/ Stackoverflow]<br />
|}<br />
</div><br />
<br />
[[category:Portals|Game Development]]<br />
[[category:Game Development|!Game Development]]<br />
[[category:Games|!Game Development]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Portal:Game_Development&diff=116576Portal:Game Development2018-03-22T10:26:44Z<p>Ñuño Martínez: Some fixes and "Game libraries" link added.</p>
<hr />
<div>{{Index-Portal}}<br />
<br />
{{Warning|This portal is a rough draft. It must be completed and fixed.}}<br />
<br />
{{Portal_Head2|555555|<big>{{PAGENAME}}</big>|bbbbbb|000000}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
Pascal was used to make games since its creation, including some well-known classic games like Apogee's [https://en.wikipedia.org/wiki/List_of_minor_Apogee_Software_video_games#Beyond_the_Titanic Beyond the Titanic].<br />
<br />
Today Pascal is still used to create games by both amateur and professional game-makers.<br />
|}<br />
<br />
<div style="float:left; width:60%;"> <!-- Both "width" values should add up to 100% --><br />
{{Portal_Head|555555|Pascal game related forums|bbbbbb|000000||Template:{{FULLPAGENAME}}/forums}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [http://www.pascalgamedevelopment.com/forum.php Pascal Game Development] - Community dedicated to game developing with any Pascal and Object Pascal compiler, as Free Pascal, Delphi, SMS, etc.<br />
* [http://forum.lazarus.freepascal.org/index.php/board,74.0.html Games at the Lazarus forum] - A section dedicated to game development with Lazarus.<br />
|}<br />
<br />
<br /><br />
<br />
{{Portal_Head|555555|Wiki pages|bbbbbb|000000||Template:{{FULLPAGENAME}}/Wiki_pages}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [[Games]]<br />
* [[Game Engine]]<br />
* [[Game libraries]]<br />
* [[Graphics libraries]]<br />
|}<br />
</div><br />
<br />
<div style="float:right; width:39%"> <!-- Both "width" values should add up to 100% --><br />
{{Portal_Head|555555|Universal sources based on gamedev|bbbbbb|000000||Template:{{FULLPAGENAME}}/Game_sources}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [https://www.reddit.com/r/gamedev/ Reddit]<br />
* [https://www.gamedev.net/ Gamedev.net]<br />
* [http://forums.indiegamer.com/ Indiegamer]<br />
* [https://forums.tigsource.com/ Tig Source]<br />
* [https://stackoverflow.com/ Stackoverflow]<br />
|}<br />
</div><br />
<br />
[[category:Portals|Game Development]]<br />
[[category:Game Development|!Game Development]]<br />
[[category:Games|!Game Development]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Games&diff=115096Games2018-01-13T12:49:23Z<p>Ñuño Martínez: /* Games written in Pascal */ Added Mundo MMORPG</p>
<hr />
<div>{{Infobox game development}}<br />
<br />
==Games written in Pascal==<br />
Here's a list of notable games made in Pascal or Object Pascal.<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name<br />
! Site<br />
! License<br />
! Source available<br />
! Notes<br />
|-<br />
| Peg Solitaire<br />
| [[Peg Solitaire tutorial]]<br />
| Public Domain<br />
<br />
There's no license note, so I'm wondering. It may be ''Creative Commons'' as well.<br />
| {{Yes}}<br />
| A step-by-step explanation of how to build a [http://en.wikipedia.org/wiki/Peg_solitaire Peg Solitaire] using Lazarus.<br />
|-<br />
| Hedgewars<br />
| [http://www.hedgewars.org/ www.hedgewars.org]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| {{Yes}}<br />
| A well known [https://en.wikipedia.org/wiki/Worms_%28series%29 Worms] clone.<br />
|-<br />
| [https://en.wikipedia.org/wiki/List_of_minor_Apogee_Software_video_games#Beyond_the_Titanic Beyond the Titanic]<br />
| [http://legacy.3drealms.com/downloads.html#titanic Download page at 3DReams website]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| {{Yes}}<br />
| An early game by Apogee.<br />
|- <br />
| Darkest Before the Dawn<br />
|<br />
[https://play.google.com/store/apps/details?id=net.sourceforge.castleengine.darkestbeforedawn Google Play]<br />
[https://github.com/castle-engine/darkest-before-dawn GitHub]<br />
[http://castle-engine.sourceforge.net/darkest_before_dawn.php Sourceforge]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| {{Yes}}<br />
| First game using [[Castle Game Engine]] in Android.<br />
|- <br />
| Ultrastar Deluxe (USDX)<br />
| [https://github.com/UltraStar-Deluxe/USDX GitHub]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| {{Yes}}<br />
|A karaoke game, basically an OSS Singstar clone<br />
|-<br />
| Mundo<br />
| [https://sourceforge.net/projects/gamemundo/ SourceForge]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| {{Yes}}<br />
| Maybe the first [https://en.wikipedia.org/wiki/Massively_multiplayer_online_role-playing_game MMORPG] written in Pascal.<br />
|}<br />
<br />
==Pascal Ported Games==<br />
This list contains games written in other languages ported to Pascal. Note that most them were written for [[Delphi]] but may be they can be compiled/ported to Free Pascal too.<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! License<br />
! Notes<br />
|-<br />
| Delphi Doom<br />
| [http://sourceforge.net/projects/delphidoom/ Sourceforge]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
|<br />
|- <br />
| Quake to Delphi<br />
| [http://sourceforge.net/projects/delphiquake/ Sourceforge] <br />
[http://www.geocities.ws/jimmyvalavanis/applications/delphiquake.html Geocities]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| Sourcefoge is the active one. The old-site appears to be quite dead now. Though the source code can still be downloaded.<br />
|-<br />
| Quake II Delphi (Quake 2 Delphi)<br />
| [http://www.sulaco.co.za/quake2/ www.sulaco.co.za]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| <br />
|-<br />
| Civilization 2<br />
| [http://www.c-evo.org/ www.c-evo.org]<br />
| Public Domain<br />
| It was spotted on [http://forum.lazarus.freepascal.org/index.php/topic,7914.0.html the forum] back in 2009. The engine used is not the original Civilization II engine. So as long as graphical resources are different, it's quite good TBS engine.<br />
|}<br />
<br />
==Game lists==<br />
You can find more games in the next links:<br />
<br />
* A brief list at the [[Game Engine]] wiki page.<br />
* [http://forum.lazarus.freepascal.org/index.php/topic,39425.0.html Games from the Lazarus Graphics Contest]<br />
* [http://www.sourcecodeonline.com/sources/delphi/games.html Delphi games]<br />
* [http://www.pascalgamedevelopment.com/showthread.php?4519-The-great-list-of-Pascal-Games The great list of Pascal Games]<br />
<br />
Available [[Game Engine|Game Engines]] also include examples and game demos.<br />
<br />
[[Category:Games]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Game_Engine&diff=115087Game Engine2018-01-12T13:15:48Z<p>Ñuño Martínez: Ported Games moved to Games.</p>
<hr />
<div>{{Game_Engine}}<br />
{{Infobox game development}}<br />
<br />
{{Warning|This page needs to be fixed and actualized:<br />
<br />
* It mix game engines with libraries (they're not the same). Create a [[Game Framework]] page?<br />
* Games should be in the new [[Games]] page.<br />
}}<br />
<br />
== Overview ==<br />
A game engine is a library that simplifies creation of games. It could include any and all functionality from the following:<br />
* just creating easy-to-use wrappers over system interfaces such as graphics API<br />
* user control inputs and audio (SDL, ZenGL)<br />
* adding additional interfaces to create and control the game content environment (as e.g. done by Castle Game Engine)<br />
<br />
[http://en.wikipedia.org/wiki/Game_engine You can read more here]<br />
<br />
== Game Engines ==<br />
Here's a list of game engines that are Pascal/Delphi based or have Pascal binding libraries.<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Usage<br />
! Notes<br />
|-<br />
| [[FPC_and_SDL|SDL]]<br />
| [http://www.libsdl.org www.libsdl.org] <br />
| Bindings<br />
| <br />
|-<br />
| [[SDL2]]<br />
| [http://sourceforge.net/projects/sdl2fpc/?source=directory sdl-2-for-free-pascal-compiler] <br />
| FPC<br />
| <br />
|-<br />
| SMFL<br />
| [http://www.sfml-dev.org/index-fr.php http://www.sfml-dev.org/index-fr.php] <br />
| [https://github.com/CWBudde/PasSFML Bindings]<br />
| <br />
|-<br />
| [[GLScene]]<br />
| [http://glscene.sourceforge.net/ sourceforge.net] <br />
| FPC/Delphi<br />
| It's not really a game engine, but rather 3D rendering engine.<br />
|-<br />
| [[Castle Game Engine]] <br />
| [https://castle-engine.sourceforge.io/ castle-engine.sourceforge.io] <br />
| FPC<br />
|<br />
|-<br />
| [[ZenGL]]<br />
| [http://www.zengl.org/ www.zengl.org] <br />
| FPC/Delphi<br />
|<br />
|-<br />
| Quad-Engine<br />
| [http://quad-engine.com/ quad-engine.com] <br />
| Delphi/FPC/C#/C++<br />
| <br />
|-<br />
| TERRA Game Engine <br />
| [https://github.com/Relfos/TERRA-Engine github.com/Relfos/TERRA-Engine]<br />
| Delphi/FPC/Oxygene<br />
| 2D & 3D, all platforms supported<br />
|-<br />
| [[nxPascal]]<br />
| [https://github.com/Zaflis/nxpascal github.com]<br />
| FPC/Delphi<br />
|<br />
|-<br />
| g2mp<br />
| [https://github.com/MrDan2345/g2mp github.com]<br />
| FPC<br />
| Ideologically replaced Dan Jet X, multiplatform, editor- and code-based development <br />
|-<br />
| Andorra 2D<br />
| [http://andorra.sourceforge.net/ sourceforge.net]<br />
| Delphi<br />
| <br />
|-<br />
| CAST II Game Engine<br />
| [http://www.casteng.com/ http://www.casteng.com/]<br />
| Delphi<br />
| Alive? last update 2011<br />
|-<br />
| Delphi X <br />
| [http://www.micrel.cz/Dx/ www.micrel.cz/Dx]<br />
| Delphi<br />
|<br />
|-<br />
| Afterwarp<br />
| [http://www.afterwarp.net/ www.afterwarp.net]<br />
| FPC/Delphi<br />
| <br />
|-<br />
| [[FPC_and_Allegro|Allegro]]<br />
| [http://alleg.sourceforge.net/ sourceforge.net]<br />
| [http://allegro-pas.sourceforge.net/ Bindings Allegro-pas]<br />
|<br />
|-<br />
| Phoenix<br />
| [https://code.google.com/p/phoenixlib/ code.google.com]<br />
| FPC/Delphi<br />
|<br />
|-<br />
| Brtech1<br />
| [http://www.pascalgamedevelopment.com/showthread.php?13795-Brtech1 PascalGameDevelopment.com]<br />
| FPC<br />
| Not really available as an engine or library. Many videos can be found on youtube though. <br />
|-<br />
| GameMaker: Studio<br />
| [http://www.yoyogames.com/ www.yoyogames.com] <br />
| N/A <br />
| Yes, it's not really a game engine library. But it's a game engine and studio written in Delphi. Special Pascal proud. <br />
|-<br />
| ZGameEditor<br />
| [http://www.zgameeditor.org/ www.zgameeditor.org] <br />
| FPC/Delphi<br />
| <br />
|-<br />
| SO Engine<br />
| [https://github.com/dimsa/ShadowEngine github.com] <br />
| Delphi/FMX<br />
| Small Crossplatform (Win, Android, iOs) indy engine with formatters, animations, intersections and etc.<br />
|-<br />
| DGLE<br />
| [http://dglengine.org/index_en.html dglengine.org] <br />
| Delphi/FPC/C#/C++<br />
| Powerful free open source cross-platform game engine.<br />
|}<br />
<br />
==Games==<br />
Games written with Free Pascal. Currently active projects commercial, closed or open source. Some more [[Projects_using_Lazarus#Games|here]].<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Open Source<br />
! Notes<br />
|- <br />
| Darkest Before the Dawn<br />
| http://castle-engine.sourceforge.net/darkest_before_dawn.php [https://play.google.com/store/apps/details?id=net.sourceforge.castleengine.darkestbeforedawn Google Play (Android version)]<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Castle<br />
| http://castle-engine.sourceforge.net/castle.php<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Diablo Roguelike<br />
| [http://diablo.chaosforge.org/ doom.chaosforge.org] [http://sourceforge.net/projects/diablorl/ Sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| Doom Roguelike<br />
| [http://doom.chaosforge.org/ doom.chaosforge.org]<br />
| {{No}}<br />
|<br />
|- <br />
| Escape from the Universe<br />
| https://play.google.com/store/apps/details?id=com.catastrophe.games.escape.universe.space.shooter<br />
| {{No}}<br />
| Using Castle Game Engine<br />
|-<br />
| HedgeWars<br />
| [http://www.hedgewars.org/ www.hedgewars.org]<br />
| {{Yes}}<br />
| <br />
|- <br />
| Project "W"<br />
| [http://www.pascalgamedevelopment.com/showthread.php?3594-Projekt-quot-W-quot PascalGameDevelopment.com ]<br />
| {{No}}<br />
|<br />
|- <br />
| Scrabble 3D<br />
| [http://sourceforge.net/projects/scrabble/ sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| UltraStar Deluxe<br />
| [http://sourceforge.net/projects/ultrastardx/ sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| Minimon 3D<br />
| [http://www.minimon3d.com http://www.minimon3d.com]<br />
| {{No}}<br />
|<br />
|- <br />
| Mountains of Fire<br />
| http://castle-engine.sourceforge.net/mountains_of_fire.php<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Shu<br />
| [http://sourceforge.net/projects/rr-rr sourceforge.net]<br />
| {{Yes}}<br />
| Interesting looking RPG - in progress<br />
|- <br />
| Project Helena<br />
| [https://sourceforge.net/projects/projecthelena/ sourceforge.net]<br />
| {{Yes}}<br />
| A game by Eugene Loza<br />
|- <br />
| Asteroids vs You<br />
| [https://github.com/dimsa/ShadowEngine/ github.com], [https://play.google.com/store/apps/details?id=com.ShadowEngine.AsteroidsVsYou Google Play (Android version)]<br />
| {{Yes}}<br />
| Open Source Demo Game for SO Engine<br />
|}<br />
<br />
==Physics Engines==<br />
These engines simulate the physical world (collisions, trajectories etc). Not really game engines per se, but could certainly be used in games.<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Usage<br />
! Notes<br />
|-<br />
| TundAx<br />
| [https://github.com/JordiCorbilla/thundax-delphi-physics-engine github.com]<br />
| FPC/Delphi<br />
| <br />
|-<br />
| Newton<br />
| [http://www.saschawillems.de/ www.saschawillems.de]<br />
| [http://www.saschawillems.de/?page_id=76 Bindings]<br />
| <br />
|-<br />
| Box2D-Delphi<br />
| [https://code.google.com/p/box2d-delphi/ code.google.com] <br />
| FPC/Delphi<br />
| This is Delphi implementation of [http://code.google.com/p/box2d/ Box2d] library<br />
|-<br />
| Kraft<br />
| [https://github.com/BeRo1985/kraft github.com]<br />
| FPC/Delphi<br />
| Pascal native physics engine by Benjamin Rosseaux. <br />
|-<br />
| PAPPE - PAscal Powerful Physics Engine<br />
| [https://sourceforge.net/projects/pappe/ sourceforge.net]<br />
| FPC/Delphi<br />
| Pascal native physics engine by Benjamin Rosseaux. The engine was deprecated by Kraft<br />
|}</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Games&diff=115086Games2018-01-12T13:14:50Z<p>Ñuño Martínez: Added lots of games.</p>
<hr />
<div>{{Infobox game development}}<br />
<br />
==Games written in Pascal==<br />
Here's a list of notable games made in Pascal or Object Pascal.<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name<br />
! Site<br />
! License<br />
! Source available<br />
! Notes<br />
|-<br />
| Peg Solitaire<br />
| [[Peg Solitaire tutorial]]<br />
| Public Domain<br />
<br />
There's no license note, so I'm wondering. It may be ''Creative Commons'' as well.<br />
| {{Yes}}<br />
| A step-by-step explanation of how to build a [http://en.wikipedia.org/wiki/Peg_solitaire Peg Solitaire] using Lazarus.<br />
|-<br />
| Hedgewars<br />
| [http://www.hedgewars.org/ www.hedgewars.org]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| {{Yes}}<br />
| A well known [https://en.wikipedia.org/wiki/Worms_%28series%29 Worms] clone.<br />
|-<br />
| [https://en.wikipedia.org/wiki/List_of_minor_Apogee_Software_video_games#Beyond_the_Titanic Beyond the Titanic]<br />
| [http://legacy.3drealms.com/downloads.html#titanic Download page at 3DReams website]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| {{Yes}}<br />
| An early game by Apogee.<br />
|- <br />
| Darkest Before the Dawn<br />
|<br />
[https://play.google.com/store/apps/details?id=net.sourceforge.castleengine.darkestbeforedawn Google Play]<br />
[https://github.com/castle-engine/darkest-before-dawn GitHub]<br />
[http://castle-engine.sourceforge.net/darkest_before_dawn.php Sourceforge]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| {{Yes}}<br />
| First game using [[Castle Game Engine]] in Android.<br />
|}<br />
<br />
==Pascal Ported Games==<br />
This list contains games written in other languages ported to Pascal. Note that most them were written for [[Delphi]] but may be they can be compiled/ported to Free Pascal too.<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! License<br />
! Notes<br />
|-<br />
| Delphi Doom<br />
| [http://sourceforge.net/projects/delphidoom/ Sourceforge]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
|<br />
|- <br />
| Quake to Delphi<br />
| [http://sourceforge.net/projects/delphiquake/ Sourceforge] <br />
[http://www.geocities.ws/jimmyvalavanis/applications/delphiquake.html Geocities]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| Sourcefoge is the active one. The old-site appears to be quite dead now. Though the source code can still be downloaded.<br />
|-<br />
| Quake II Delphi (Quake 2 Delphi)<br />
| [http://www.sulaco.co.za/quake2/ www.sulaco.co.za]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| <br />
|-<br />
| Civilization 2<br />
| [http://www.c-evo.org/ www.c-evo.org]<br />
| Public Domain<br />
| It was spotted on [http://forum.lazarus.freepascal.org/index.php/topic,7914.0.html the forum] back in 2009. The engine used is not the original Civilization II engine. So as long as graphical resources are different, it's quite good TBS engine.<br />
|}<br />
<br />
==Game lists==<br />
You can find more games in the next links:<br />
<br />
* A brief list at the [[Game Engine]] wiki page.<br />
* [http://forum.lazarus.freepascal.org/index.php/topic,39425.0.html Games from the Lazarus Graphics Contest]<br />
* [http://www.sourcecodeonline.com/sources/delphi/games.html Delphi games]<br />
* [http://www.pascalgamedevelopment.com/showthread.php?4519-The-great-list-of-Pascal-Games The great list of Pascal Games]<br />
<br />
Available [[Game Engine|Game Engines]] also include examples and game demos.<br />
<br />
[[Category:Games]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Game_Engine&diff=115083Game Engine2018-01-12T10:03:25Z<p>Ñuño Martínez: Added a warning because I have no time to fix now.</p>
<hr />
<div>{{Game_Engine}}<br />
{{Infobox game development}}<br />
<br />
{{Warning|This page needs to be fixed and actualized:<br />
<br />
* It mix game engines with libraries (they're not the same). Create a [[Game Framework]] page?<br />
* Games should be in the new [[Games]] page.<br />
}}<br />
<br />
== Overview ==<br />
A game engine is a library that simplifies creation of games. It could include any and all functionality from the following:<br />
* just creating easy-to-use wrappers over system interfaces such as graphics API<br />
* user control inputs and audio (SDL, ZenGL)<br />
* adding additional interfaces to create and control the game content environment (as e.g. done by Castle Game Engine)<br />
<br />
[http://en.wikipedia.org/wiki/Game_engine You can read more here]<br />
<br />
== Game Engines ==<br />
Here's a list of game engines that are Pascal/Delphi based or have Pascal binding libraries.<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Usage<br />
! Notes<br />
|-<br />
| [[FPC_and_SDL|SDL]]<br />
| [http://www.libsdl.org www.libsdl.org] <br />
| Bindings<br />
| <br />
|-<br />
| [[SDL2]]<br />
| [http://sourceforge.net/projects/sdl2fpc/?source=directory sdl-2-for-free-pascal-compiler] <br />
| FPC<br />
| <br />
|-<br />
| SMFL<br />
| [http://www.sfml-dev.org/index-fr.php http://www.sfml-dev.org/index-fr.php] <br />
| [https://github.com/CWBudde/PasSFML Bindings]<br />
| <br />
|-<br />
| [[GLScene]]<br />
| [http://glscene.sourceforge.net/ sourceforge.net] <br />
| FPC/Delphi<br />
| It's not really a game engine, but rather 3D rendering engine.<br />
|-<br />
| [[Castle Game Engine]] <br />
| [https://castle-engine.sourceforge.io/ castle-engine.sourceforge.io] <br />
| FPC<br />
|<br />
|-<br />
| [[ZenGL]]<br />
| [http://www.zengl.org/ www.zengl.org] <br />
| FPC/Delphi<br />
|<br />
|-<br />
| Quad-Engine<br />
| [http://quad-engine.com/ quad-engine.com] <br />
| Delphi/FPC/C#/C++<br />
| <br />
|-<br />
| TERRA Game Engine <br />
| [https://github.com/Relfos/TERRA-Engine github.com/Relfos/TERRA-Engine]<br />
| Delphi/FPC/Oxygene<br />
| 2D & 3D, all platforms supported<br />
|-<br />
| [[nxPascal]]<br />
| [https://github.com/Zaflis/nxpascal github.com]<br />
| FPC/Delphi<br />
|<br />
|-<br />
| g2mp<br />
| [https://github.com/MrDan2345/g2mp github.com]<br />
| FPC<br />
| Ideologically replaced Dan Jet X, multiplatform, editor- and code-based development <br />
|-<br />
| Andorra 2D<br />
| [http://andorra.sourceforge.net/ sourceforge.net]<br />
| Delphi<br />
| <br />
|-<br />
| CAST II Game Engine<br />
| [http://www.casteng.com/ http://www.casteng.com/]<br />
| Delphi<br />
| Alive? last update 2011<br />
|-<br />
| Delphi X <br />
| [http://www.micrel.cz/Dx/ www.micrel.cz/Dx]<br />
| Delphi<br />
|<br />
|-<br />
| Afterwarp<br />
| [http://www.afterwarp.net/ www.afterwarp.net]<br />
| FPC/Delphi<br />
| <br />
|-<br />
| [[FPC_and_Allegro|Allegro]]<br />
| [http://alleg.sourceforge.net/ sourceforge.net]<br />
| [http://allegro-pas.sourceforge.net/ Bindings Allegro-pas]<br />
|<br />
|-<br />
| Phoenix<br />
| [https://code.google.com/p/phoenixlib/ code.google.com]<br />
| FPC/Delphi<br />
|<br />
|-<br />
| Brtech1<br />
| [http://www.pascalgamedevelopment.com/showthread.php?13795-Brtech1 PascalGameDevelopment.com]<br />
| FPC<br />
| Not really available as an engine or library. Many videos can be found on youtube though. <br />
|-<br />
| GameMaker: Studio<br />
| [http://www.yoyogames.com/ www.yoyogames.com] <br />
| N/A <br />
| Yes, it's not really a game engine library. But it's a game engine and studio written in Delphi. Special Pascal proud. <br />
|-<br />
| ZGameEditor<br />
| [http://www.zgameeditor.org/ www.zgameeditor.org] <br />
| FPC/Delphi<br />
| <br />
|-<br />
| SO Engine<br />
| [https://github.com/dimsa/ShadowEngine github.com] <br />
| Delphi/FMX<br />
| Small Crossplatform (Win, Android, iOs) indy engine with formatters, animations, intersections and etc.<br />
|-<br />
| DGLE<br />
| [http://dglengine.org/index_en.html dglengine.org] <br />
| Delphi/FPC/C#/C++<br />
| Powerful free open source cross-platform game engine.<br />
|}<br />
<br />
==Pascal Ported Games==<br />
This list contains ported games and libraries. Licenses vary.<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Usage<br />
! Notes<br />
|-<br />
| Delphi Doom<br />
| [http://sourceforge.net/projects/delphidoom/ Delphi Doom]<br />
| Delphi<br />
| Feeling nostalgia :)<br />
|- <br />
| Quake to Delphi<br />
| [http://sourceforge.net/projects/delphiquake/ Sourceforge] <br />
[http://www.geocities.ws/jimmyvalavanis/applications/delphiquake.html Old Version]<br />
| Delphi<br />
| Sourcefoge is the active one. The old-site appears to be quite dead now. Though the source code can still be downloaded.<br />
|-<br />
| Quake II Delphi (Quake 2 Delphi)<br />
| [http://www.sulaco.co.za/quake2/default.asp www.sulaco.co.za] [http://sourceforge.net/projects/quake2delphi/ sourceforge.net]<br />
| Delphi<br />
| <br />
|-<br />
| Civilization 2<br />
| [http://www.c-evo.org/ www.c-evo.org]<br />
| Delphi<br />
| It was spotted on [http://forum.lazarus.freepascal.org/index.php/topic,7914.0.html the forum] back in 2009. The engine used is not the original Civilization II engine. So as long as graphical resources are different, it's quite good TBS engine.<br />
|}<br />
<br />
==Games==<br />
Games written with Free Pascal. Currently active projects commercial, closed or open source. Some more [[Projects_using_Lazarus#Games|here]].<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Open Source<br />
! Notes<br />
|- <br />
| Darkest Before the Dawn<br />
| http://castle-engine.sourceforge.net/darkest_before_dawn.php [https://play.google.com/store/apps/details?id=net.sourceforge.castleengine.darkestbeforedawn Google Play (Android version)]<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Castle<br />
| http://castle-engine.sourceforge.net/castle.php<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Diablo Roguelike<br />
| [http://diablo.chaosforge.org/ doom.chaosforge.org] [http://sourceforge.net/projects/diablorl/ Sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| Doom Roguelike<br />
| [http://doom.chaosforge.org/ doom.chaosforge.org]<br />
| {{No}}<br />
|<br />
|- <br />
| Escape from the Universe<br />
| https://play.google.com/store/apps/details?id=com.catastrophe.games.escape.universe.space.shooter<br />
| {{No}}<br />
| Using Castle Game Engine<br />
|-<br />
| HedgeWars<br />
| [http://www.hedgewars.org/ www.hedgewars.org]<br />
| {{Yes}}<br />
| <br />
|- <br />
| Project "W"<br />
| [http://www.pascalgamedevelopment.com/showthread.php?3594-Projekt-quot-W-quot PascalGameDevelopment.com ]<br />
| {{No}}<br />
|<br />
|- <br />
| Scrabble 3D<br />
| [http://sourceforge.net/projects/scrabble/ sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| UltraStar Deluxe<br />
| [http://sourceforge.net/projects/ultrastardx/ sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| Minimon 3D<br />
| [http://www.minimon3d.com http://www.minimon3d.com]<br />
| {{No}}<br />
|<br />
|- <br />
| Mountains of Fire<br />
| http://castle-engine.sourceforge.net/mountains_of_fire.php<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Shu<br />
| [http://sourceforge.net/projects/rr-rr sourceforge.net]<br />
| {{Yes}}<br />
| Interesting looking RPG - in progress<br />
|- <br />
| Project Helena<br />
| [https://sourceforge.net/projects/projecthelena/ sourceforge.net]<br />
| {{Yes}}<br />
| A game by Eugene Loza<br />
|- <br />
| Asteroids vs You<br />
| [https://github.com/dimsa/ShadowEngine/ github.com], [https://play.google.com/store/apps/details?id=com.ShadowEngine.AsteroidsVsYou Google Play (Android version)]<br />
| {{Yes}}<br />
| Open Source Demo Game for SO Engine<br />
|}<br />
<br />
==Physics Engines==<br />
These engines simulate the physical world (collisions, trajectories etc). Not really game engines per se, but could certainly be used in games.<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Usage<br />
! Notes<br />
|-<br />
| TundAx<br />
| [https://github.com/JordiCorbilla/thundax-delphi-physics-engine github.com]<br />
| FPC/Delphi<br />
| <br />
|-<br />
| Newton<br />
| [http://www.saschawillems.de/ www.saschawillems.de]<br />
| [http://www.saschawillems.de/?page_id=76 Bindings]<br />
| <br />
|-<br />
| Box2D-Delphi<br />
| [https://code.google.com/p/box2d-delphi/ code.google.com] <br />
| FPC/Delphi<br />
| This is Delphi implementation of [http://code.google.com/p/box2d/ Box2d] library<br />
|-<br />
| Kraft<br />
| [https://github.com/BeRo1985/kraft github.com]<br />
| FPC/Delphi<br />
| Pascal native physics engine by Benjamin Rosseaux. <br />
|-<br />
| PAPPE - PAscal Powerful Physics Engine<br />
| [https://sourceforge.net/projects/pappe/ sourceforge.net]<br />
| FPC/Delphi<br />
| Pascal native physics engine by Benjamin Rosseaux. The engine was deprecated by Kraft<br />
|}</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Talk:Game_Engine&diff=115082Talk:Game Engine2018-01-12T10:02:06Z<p>Ñuño Martínez: </p>
<hr />
<div>== About SO Engine ==<br />
<br />
I added description of SO Engine, but it is not an ad. Big Delphi FMX sites wrote about it and it has real projects. There are urls <br />
<br />
* 1) http://fire-monkey.ru/topic/2670-shadowengine-sprite-engine-with-formatters-animations-and-etc/<br />
* 2) http://www.fmxexpress.com/open-source-sprite-engine-for-delphi-xe8-firemonkey-on-android-ios-windows-and-osx/ <br />
<br />
And there are 5 forks of it and 25 stars on github. I think it's sufficient proof of the information value.<br />
<br />
==The Warning==<br />
I've added a warning because I have no time to update the page right now.</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Game_Engine&diff=115081Game Engine2018-01-12T09:52:43Z<p>Ñuño Martínez: Added Game Development infobox.</p>
<hr />
<div>{{Game_Engine}}<br />
{{Infobox game development}}<br />
<br />
== Overview ==<br />
A game engine is a library that simplifies creation of games. It could include any and all functionality from the following:<br />
* just creating easy-to-use wrappers over system interfaces such as graphics API<br />
* user control inputs and audio (SDL, ZenGL)<br />
* adding additional interfaces to create and control the game content environment (as e.g. done by Castle Game Engine)<br />
<br />
[http://en.wikipedia.org/wiki/Game_engine You can read more here]<br />
<br />
== Game Engines ==<br />
Here's a list of game engines that are Pascal/Delphi based or have Pascal binding libraries.<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Usage<br />
! Notes<br />
|-<br />
| [[FPC_and_SDL|SDL]]<br />
| [http://www.libsdl.org www.libsdl.org] <br />
| Bindings<br />
| <br />
|-<br />
| [[SDL2]]<br />
| [http://sourceforge.net/projects/sdl2fpc/?source=directory sdl-2-for-free-pascal-compiler] <br />
| FPC<br />
| <br />
|-<br />
| SMFL<br />
| [http://www.sfml-dev.org/index-fr.php http://www.sfml-dev.org/index-fr.php] <br />
| [https://github.com/CWBudde/PasSFML Bindings]<br />
| <br />
|-<br />
| [[GLScene]]<br />
| [http://glscene.sourceforge.net/ sourceforge.net] <br />
| FPC/Delphi<br />
| It's not really a game engine, but rather 3D rendering engine.<br />
|-<br />
| [[Castle Game Engine]] <br />
| [https://castle-engine.sourceforge.io/ castle-engine.sourceforge.io] <br />
| FPC<br />
|<br />
|-<br />
| [[ZenGL]]<br />
| [http://www.zengl.org/ www.zengl.org] <br />
| FPC/Delphi<br />
|<br />
|-<br />
| Quad-Engine<br />
| [http://quad-engine.com/ quad-engine.com] <br />
| Delphi/FPC/C#/C++<br />
| <br />
|-<br />
| TERRA Game Engine <br />
| [https://github.com/Relfos/TERRA-Engine github.com/Relfos/TERRA-Engine]<br />
| Delphi/FPC/Oxygene<br />
| 2D & 3D, all platforms supported<br />
|-<br />
| [[nxPascal]]<br />
| [https://github.com/Zaflis/nxpascal github.com]<br />
| FPC/Delphi<br />
|<br />
|-<br />
| g2mp<br />
| [https://github.com/MrDan2345/g2mp github.com]<br />
| FPC<br />
| Ideologically replaced Dan Jet X, multiplatform, editor- and code-based development <br />
|-<br />
| Andorra 2D<br />
| [http://andorra.sourceforge.net/ sourceforge.net]<br />
| Delphi<br />
| <br />
|-<br />
| CAST II Game Engine<br />
| [http://www.casteng.com/ http://www.casteng.com/]<br />
| Delphi<br />
| Alive? last update 2011<br />
|-<br />
| Delphi X <br />
| [http://www.micrel.cz/Dx/ www.micrel.cz/Dx]<br />
| Delphi<br />
|<br />
|-<br />
| Afterwarp<br />
| [http://www.afterwarp.net/ www.afterwarp.net]<br />
| FPC/Delphi<br />
| <br />
|-<br />
| [[FPC_and_Allegro|Allegro]]<br />
| [http://alleg.sourceforge.net/ sourceforge.net]<br />
| [http://allegro-pas.sourceforge.net/ Bindings Allegro-pas]<br />
|<br />
|-<br />
| Phoenix<br />
| [https://code.google.com/p/phoenixlib/ code.google.com]<br />
| FPC/Delphi<br />
|<br />
|-<br />
| Brtech1<br />
| [http://www.pascalgamedevelopment.com/showthread.php?13795-Brtech1 PascalGameDevelopment.com]<br />
| FPC<br />
| Not really available as an engine or library. Many videos can be found on youtube though. <br />
|-<br />
| GameMaker: Studio<br />
| [http://www.yoyogames.com/ www.yoyogames.com] <br />
| N/A <br />
| Yes, it's not really a game engine library. But it's a game engine and studio written in Delphi. Special Pascal proud. <br />
|-<br />
| ZGameEditor<br />
| [http://www.zgameeditor.org/ www.zgameeditor.org] <br />
| FPC/Delphi<br />
| <br />
|-<br />
| SO Engine<br />
| [https://github.com/dimsa/ShadowEngine github.com] <br />
| Delphi/FMX<br />
| Small Crossplatform (Win, Android, iOs) indy engine with formatters, animations, intersections and etc.<br />
|-<br />
| DGLE<br />
| [http://dglengine.org/index_en.html dglengine.org] <br />
| Delphi/FPC/C#/C++<br />
| Powerful free open source cross-platform game engine.<br />
|}<br />
<br />
==Pascal Ported Games==<br />
This list contains ported games and libraries. Licenses vary.<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Usage<br />
! Notes<br />
|-<br />
| Delphi Doom<br />
| [http://sourceforge.net/projects/delphidoom/ Delphi Doom]<br />
| Delphi<br />
| Feeling nostalgia :)<br />
|- <br />
| Quake to Delphi<br />
| [http://sourceforge.net/projects/delphiquake/ Sourceforge] <br />
[http://www.geocities.ws/jimmyvalavanis/applications/delphiquake.html Old Version]<br />
| Delphi<br />
| Sourcefoge is the active one. The old-site appears to be quite dead now. Though the source code can still be downloaded.<br />
|-<br />
| Quake II Delphi (Quake 2 Delphi)<br />
| [http://www.sulaco.co.za/quake2/default.asp www.sulaco.co.za] [http://sourceforge.net/projects/quake2delphi/ sourceforge.net]<br />
| Delphi<br />
| <br />
|-<br />
| Civilization 2<br />
| [http://www.c-evo.org/ www.c-evo.org]<br />
| Delphi<br />
| It was spotted on [http://forum.lazarus.freepascal.org/index.php/topic,7914.0.html the forum] back in 2009. The engine used is not the original Civilization II engine. So as long as graphical resources are different, it's quite good TBS engine.<br />
|}<br />
<br />
==Games==<br />
Games written with Free Pascal. Currently active projects commercial, closed or open source. Some more [[Projects_using_Lazarus#Games|here]].<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Open Source<br />
! Notes<br />
|- <br />
| Darkest Before the Dawn<br />
| http://castle-engine.sourceforge.net/darkest_before_dawn.php [https://play.google.com/store/apps/details?id=net.sourceforge.castleengine.darkestbeforedawn Google Play (Android version)]<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Castle<br />
| http://castle-engine.sourceforge.net/castle.php<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Diablo Roguelike<br />
| [http://diablo.chaosforge.org/ doom.chaosforge.org] [http://sourceforge.net/projects/diablorl/ Sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| Doom Roguelike<br />
| [http://doom.chaosforge.org/ doom.chaosforge.org]<br />
| {{No}}<br />
|<br />
|- <br />
| Escape from the Universe<br />
| https://play.google.com/store/apps/details?id=com.catastrophe.games.escape.universe.space.shooter<br />
| {{No}}<br />
| Using Castle Game Engine<br />
|-<br />
| HedgeWars<br />
| [http://www.hedgewars.org/ www.hedgewars.org]<br />
| {{Yes}}<br />
| <br />
|- <br />
| Project "W"<br />
| [http://www.pascalgamedevelopment.com/showthread.php?3594-Projekt-quot-W-quot PascalGameDevelopment.com ]<br />
| {{No}}<br />
|<br />
|- <br />
| Scrabble 3D<br />
| [http://sourceforge.net/projects/scrabble/ sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| UltraStar Deluxe<br />
| [http://sourceforge.net/projects/ultrastardx/ sourceforge.net]<br />
| {{Yes}}<br />
|<br />
|- <br />
| Minimon 3D<br />
| [http://www.minimon3d.com http://www.minimon3d.com]<br />
| {{No}}<br />
|<br />
|- <br />
| Mountains of Fire<br />
| http://castle-engine.sourceforge.net/mountains_of_fire.php<br />
| {{Yes}}<br />
| Using Castle Game Engine<br />
|- <br />
| Shu<br />
| [http://sourceforge.net/projects/rr-rr sourceforge.net]<br />
| {{Yes}}<br />
| Interesting looking RPG - in progress<br />
|- <br />
| Project Helena<br />
| [https://sourceforge.net/projects/projecthelena/ sourceforge.net]<br />
| {{Yes}}<br />
| A game by Eugene Loza<br />
|- <br />
| Asteroids vs You<br />
| [https://github.com/dimsa/ShadowEngine/ github.com], [https://play.google.com/store/apps/details?id=com.ShadowEngine.AsteroidsVsYou Google Play (Android version)]<br />
| {{Yes}}<br />
| Open Source Demo Game for SO Engine<br />
|}<br />
<br />
==Physics Engines==<br />
These engines simulate the physical world (collisions, trajectories etc). Not really game engines per se, but could certainly be used in games.<br />
{| class="wikitable sortable" width="100%"<br />
! Name <br />
! Site <br />
! Usage<br />
! Notes<br />
|-<br />
| TundAx<br />
| [https://github.com/JordiCorbilla/thundax-delphi-physics-engine github.com]<br />
| FPC/Delphi<br />
| <br />
|-<br />
| Newton<br />
| [http://www.saschawillems.de/ www.saschawillems.de]<br />
| [http://www.saschawillems.de/?page_id=76 Bindings]<br />
| <br />
|-<br />
| Box2D-Delphi<br />
| [https://code.google.com/p/box2d-delphi/ code.google.com] <br />
| FPC/Delphi<br />
| This is Delphi implementation of [http://code.google.com/p/box2d/ Box2d] library<br />
|-<br />
| Kraft<br />
| [https://github.com/BeRo1985/kraft github.com]<br />
| FPC/Delphi<br />
| Pascal native physics engine by Benjamin Rosseaux. <br />
|-<br />
| PAPPE - PAscal Powerful Physics Engine<br />
| [https://sourceforge.net/projects/pappe/ sourceforge.net]<br />
| FPC/Delphi<br />
| Pascal native physics engine by Benjamin Rosseaux. The engine was deprecated by Kraft<br />
|}</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Portal:Game_Development&diff=115080Portal:Game Development2018-01-12T09:51:44Z<p>Ñuño Martínez: Game list moved to Games.</p>
<hr />
<div>{{Index-Portal}}<br />
<br />
{{Warning|This portal is a rough draft. It must be completed and fixed.}}<br />
<br />
{{Portal_Head2|555555|<big>{{PAGENAME}}</big>|bbbbbb|000000}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
Pascal was used to make games since its creation, including some well-known classic games like Apogee's [https://en.wikipedia.org/wiki/List_of_minor_Apogee_Software_video_games#Beyond_the_Titanic Beyond the Titanic].<br />
<br />
Today Pascal is still used to create games by both amateur and professional game-makers.<br />
|}<br />
<br />
<div style="float:left; width:60%;"> <!-- Both "width" values should add up to 100% --><br />
{{Portal_Head|555555|Pascal game related forums|bbbbbb|000000||Template:{{FULLPAGENAME}}/Development_Techniques}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [http://www.pascalgamedevelopment.com/forum.php Pascal Game Development] - Community dedicated to game developing with any Pascal and Object Pascal compiler, as Free Pascal, Delphi, SMS, etc.<br />
* [http://forum.lazarus.freepascal.org/index.php/board,74.0.html Games at the Lazarus forum] - A section dedicated to game development with Lazarus.<br />
|}<br />
<br />
<br /><br />
<br />
{{Portal_Head|555555|Wiki pages|bbbbbb|000000||Template:{{FULLPAGENAME}}/Development_Techniques}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [[Games]]<br />
* [[Game Engine]]<br />
* [[Graphics libraries]]<br />
|}<br />
</div><br />
<br />
<div style="float:right; width:39%"> <!-- Both "width" values should add up to 100% --><br />
{{Portal_Head|555555|Universal sources based on gamedev|bbbbbb|000000||Template:{{FULLPAGENAME}}/DBMS}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [https://www.reddit.com/r/gamedev/ Reddit]<br />
* [https://www.gamedev.net/ Gamedev.net]<br />
* [http://forums.indiegamer.com/ Indiegamer]<br />
* [https://forums.tigsource.com/ Tig Source]<br />
* [https://stackoverflow.com/ Stackoverflow]<br />
|}<br />
</div><br />
<br />
[[category:Portals|Game Development]]<br />
[[category:Game Development|!Game Development]]<br />
[[category:Games|!Game Development]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Games&diff=115079Games2018-01-12T09:50:53Z<p>Ñuño Martínez: Created page with "{{Infobox game development}} Here's a list of notable games made in Pascal or Object Pascal. {| class="wikitable sortable" width="100%" ! Name ! Site ! License ! Notes |- |..."</p>
<hr />
<div>{{Infobox game development}}<br />
<br />
Here's a list of notable games made in Pascal or Object Pascal.<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name<br />
! Site<br />
! License<br />
! Notes<br />
|-<br />
| Peg Solitaire<br />
| [[Peg Solitaire tutorial]]<br />
| Public Domain<br />
| A step-by-step explanation of how to build a [http://en.wikipedia.org/wiki/Peg_solitaire Peg Solitaire] using Lazarus.<br />
|-<br />
| Hedgewars<br />
| [http://www.hedgewars.org/ http://www.hedgewars.org/]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| A well known [https://en.wikipedia.org/wiki/Worms_%28series%29 Worms] clone.<br />
|-<br />
| [https://en.wikipedia.org/wiki/List_of_minor_Apogee_Software_video_games#Beyond_the_Titanic Beyond the Titanic]<br />
| [http://legacy.3drealms.com/downloads.html#titanic http://legacy.3drealms.com/downloads.html]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| An early game by Apogee.<br />
|}<br />
<br />
You can find more game examples in the next links:<br />
<br />
* [http://forum.lazarus.freepascal.org/index.php/topic,39425.0.html Games from the Lazarus Graphics Contest]<br />
* [http://www.sourcecodeonline.com/sources/delphi/games.html Delphi games]<br />
* [http://www.pascalgamedevelopment.com/showthread.php?4519-The-great-list-of-Pascal-Games The great list of Pascal Games]<br />
<br />
Available [[Game Engine|Game Engines]] also include examples and game demos.<br />
<br />
[[Category:Games]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Template:Infobox_game_development&diff=115078Template:Infobox game development2018-01-12T09:50:17Z<p>Ñuño Martínez: Created page with "{| class="toccolours vatop infobox" cellpadding="1" cellspacing="1" style="float:right; clear:right; width:{{{width|265}}}px; padding:0px; margin:0px 0px 1em 1em; font-size:85..."</p>
<hr />
<div>{| class="toccolours vatop infobox" cellpadding="1" cellspacing="1" style="float:right; clear:right; width:{{{width|265}}}px; padding:0px; margin:0px 0px 1em 1em; font-size:85%;"<br />
| <br />
|-<br />
| <center><big>[[Portal:Game Development|'''Game Development''']]</big></center><br />
|-<br />
|<br />
* [[Games]]<br />
* [[Game Engine]]<br />
* [[Graphics libraries]]<br />
|}</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Portal:Game_Development&diff=115077Portal:Game Development2018-01-12T09:40:26Z<p>Ñuño Martínez: More name fixing at categories...</p>
<hr />
<div>{{Index-Portal}}<br />
<br />
{{Portal_Head2|555555|<big>{{PAGENAME}}</big>|bbbbbb|000000}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
{{Warning|This portal is a rough draft. It must be completed and fixed.}}<br />
Pascal was used to make games since its creation, including some well-known classic games like Apogee's [https://en.wikipedia.org/wiki/List_of_minor_Apogee_Software_video_games#Beyond_the_Titanic Beyond the Titanic].<br />
<br />
Today Pascal is still used to create games by both amateur and professional game-makers.<br />
|}<br />
<br />
<div style="float:left; width:60%;"> <!-- Both "width" values should add up to 100% --><br />
{{Portal_Head|555555|Pascal game related forums|bbbbbb|000000||Template:{{FULLPAGENAME}}/Development_Techniques}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [http://www.pascalgamedevelopment.com/forum.php Pascal Game Development] - Community dedicated to game developing with any Pascal and Object Pascal compiler, as Free Pascal, Delphi, SMS, etc.<br />
* [http://forum.lazarus.freepascal.org/index.php/board,74.0.html Games at the Lazarus forum] - A section dedicated to game development with Lazarus.<br />
|}<br />
<br />
<br /><br />
<br />
{{Portal_Head|555555|Wiki pages|bbbbbb|000000||Template:{{FULLPAGENAME}}/Development_Techniques}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [[Game Engine]]<br />
* [[Graphics libraries]]<br />
|}<br />
</div><br />
<br />
<div style="float:right; width:39%"> <!-- Both "width" values should add up to 100% --><br />
{{Portal_Head|555555|Universal sources based on gamedev|bbbbbb|000000||Template:{{FULLPAGENAME}}/DBMS}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [https://www.reddit.com/r/gamedev/ Reddit]<br />
* [https://www.gamedev.net/ Gamedev.net]<br />
* [http://forums.indiegamer.com/ Indiegamer]<br />
* [https://forums.tigsource.com/ Tig Source]<br />
* [https://stackoverflow.com/ Stackoverflow]<br />
|}<br />
</div><br />
<br />
<div style="clear: both"><br />
==Games==<br />
{{Warning|May be this section should be moved to its own page: [[Games made in Pascal]] or something like that.}}<br />
Here's a list of notable games made in Pascal or Object Pascal.<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name<br />
! Site<br />
! License<br />
! Notes<br />
|-<br />
| Peg Solitaire<br />
| [[Peg Solitaire tutorial]]<br />
| Public Domain<br />
| A step-by-step explanation of how to build a [http://en.wikipedia.org/wiki/Peg_solitaire Peg Solitaire] using Lazarus.<br />
|-<br />
| Hedgewars<br />
| [http://www.hedgewars.org/ http://www.hedgewars.org/]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| A well known [https://en.wikipedia.org/wiki/Worms_%28series%29 Worms] clone.<br />
|-<br />
| [https://en.wikipedia.org/wiki/List_of_minor_Apogee_Software_video_games#Beyond_the_Titanic Beyond the Titanic]<br />
| [http://legacy.3drealms.com/downloads.html#titanic http://legacy.3drealms.com/downloads.html]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| An early game by Apogee.<br />
|}<br />
<br />
You can find more game examples in the next links:<br />
<br />
* [http://forum.lazarus.freepascal.org/index.php/topic,39425.0.html Games from the Lazarus Graphics Contest]<br />
* [http://www.sourcecodeonline.com/sources/delphi/games.html Delphi games]<br />
* [http://www.pascalgamedevelopment.com/showthread.php?4519-The-great-list-of-Pascal-Games The great list of Pascal Games]<br />
<br />
Available [[Game Engine|Game Engines]] also include examples and game demos.<br />
</div><br />
<br />
[[category:Portals|Game Development]]<br />
[[category:Game Development|!Game Development]]<br />
[[category:Games|!Game Development]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Portal:Game_Development&diff=115076Portal:Game Development2018-01-12T09:39:39Z<p>Ñuño Martínez: Fixing name in categories.</p>
<hr />
<div>{{Index-Portal}}<br />
<br />
{{Portal_Head2|555555|<big>{{PAGENAME}}</big>|bbbbbb|000000}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
{{Warning|This portal is a rough draft. It must be completed and fixed.}}<br />
Pascal was used to make games since its creation, including some well-known classic games like Apogee's [https://en.wikipedia.org/wiki/List_of_minor_Apogee_Software_video_games#Beyond_the_Titanic Beyond the Titanic].<br />
<br />
Today Pascal is still used to create games by both amateur and professional game-makers.<br />
|}<br />
<br />
<div style="float:left; width:60%;"> <!-- Both "width" values should add up to 100% --><br />
{{Portal_Head|555555|Pascal game related forums|bbbbbb|000000||Template:{{FULLPAGENAME}}/Development_Techniques}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [http://www.pascalgamedevelopment.com/forum.php Pascal Game Development] - Community dedicated to game developing with any Pascal and Object Pascal compiler, as Free Pascal, Delphi, SMS, etc.<br />
* [http://forum.lazarus.freepascal.org/index.php/board,74.0.html Games at the Lazarus forum] - A section dedicated to game development with Lazarus.<br />
|}<br />
<br />
<br /><br />
<br />
{{Portal_Head|555555|Wiki pages|bbbbbb|000000||Template:{{FULLPAGENAME}}/Development_Techniques}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [[Game Engine]]<br />
* [[Graphics libraries]]<br />
|}<br />
</div><br />
<br />
<div style="float:right; width:39%"> <!-- Both "width" values should add up to 100% --><br />
{{Portal_Head|555555|Universal sources based on gamedev|bbbbbb|000000||Template:{{FULLPAGENAME}}/DBMS}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [https://www.reddit.com/r/gamedev/ Reddit]<br />
* [https://www.gamedev.net/ Gamedev.net]<br />
* [http://forums.indiegamer.com/ Indiegamer]<br />
* [https://forums.tigsource.com/ Tig Source]<br />
* [https://stackoverflow.com/ Stackoverflow]<br />
|}<br />
</div><br />
<br />
<div style="clear: both"><br />
==Games==<br />
{{Warning|May be this section should be moved to its own page: [[Games made in Pascal]] or something like that.}}<br />
Here's a list of notable games made in Pascal or Object Pascal.<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name<br />
! Site<br />
! License<br />
! Notes<br />
|-<br />
| Peg Solitaire<br />
| [[Peg Solitaire tutorial]]<br />
| Public Domain<br />
| A step-by-step explanation of how to build a [http://en.wikipedia.org/wiki/Peg_solitaire Peg Solitaire] using Lazarus.<br />
|-<br />
| Hedgewars<br />
| [http://www.hedgewars.org/ http://www.hedgewars.org/]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| A well known [https://en.wikipedia.org/wiki/Worms_%28series%29 Worms] clone.<br />
|-<br />
| [https://en.wikipedia.org/wiki/List_of_minor_Apogee_Software_video_games#Beyond_the_Titanic Beyond the Titanic]<br />
| [http://legacy.3drealms.com/downloads.html#titanic http://legacy.3drealms.com/downloads.html]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| An early game by Apogee.<br />
|}<br />
<br />
You can find more game examples in the next links:<br />
<br />
* [http://forum.lazarus.freepascal.org/index.php/topic,39425.0.html Games from the Lazarus Graphics Contest]<br />
* [http://www.sourcecodeonline.com/sources/delphi/games.html Delphi games]<br />
* [http://www.pascalgamedevelopment.com/showthread.php?4519-The-great-list-of-Pascal-Games The great list of Pascal Games]<br />
<br />
Available [[Game Engine|Game Engines]] also include examples and game demos.<br />
</div><br />
<br />
[[category:Portals|Game Development]]<br />
[[category:Game Development|Game Development]]<br />
[[category:Games|Game Development]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Portal:Game_Development&diff=115062Portal:Game Development2018-01-11T13:10:33Z<p>Ñuño Martínez: </p>
<hr />
<div>{{Index-Portal}}<br />
{{Portal_Head2|555555|<big>{{PAGENAME}}</big>|bbbbbb|000000}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
{{Warning|This portal is a rough draft. It must be completed and fixed.}}<br />
Pascal was used to make games since its creation, including some well-known classic games like Apogee's [https://en.wikipedia.org/wiki/List_of_minor_Apogee_Software_video_games#Beyond_the_Titanic Beyond the Titanic].<br />
<br />
Today Pascal is still used to create games by both amateur and professional game-makers.<br />
|}<br />
<div style="float:left; width:60%;"> <!-- Both "width" values should add up to 100% --><br />
<br />
{{Portal_Head|555555|Pascal game related forums|bbbbbb|000000||Template:{{FULLPAGENAME}}/Development_Techniques}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [http://www.pascalgamedevelopment.com/forum.php Pascal Game Development] - Community dedicated to game developing with any Pascal and Object Pascal compiler, as Free Pascal, Delphi, SMS, etc.<br />
* [http://forum.lazarus.freepascal.org/index.php/board,74.0.html Games at the Lazarus forum] - A section dedicated to game development with Lazarus.<br />
|}<br />
<br /><br />
{{Portal_Head|555555|Wiki pages|bbbbbb|000000||Template:{{FULLPAGENAME}}/Development_Techniques}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [[Game Engine]]<br />
* [[Graphics libraries]]<br />
|}<br />
</div><br />
<br />
<div style="float:right; width:39%"> <!-- Both "width" values should add up to 100% --><br />
{{Portal_Head|555555|Universal sources based on gamedev|bbbbbb|000000||Template:{{FULLPAGENAME}}/DBMS}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [https://www.reddit.com/r/gamedev/ Reddit]<br />
* [https://www.gamedev.net/ Gamedev.net]<br />
* [http://forums.indiegamer.com/ Indiegamer]<br />
* [https://forums.tigsource.com/ Tig Source]<br />
* [https://stackoverflow.com/ Stackoverflow]<br />
|}<br />
</div><br />
<br />
<div style="clear: both"><br />
==Games==<br />
{{Warning|May be this section should be moved to its own page: [[Games made in Pascal]] or something like that.}}<br />
Here's a list of notable games made in Pascal or Object Pascal.<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name<br />
! Site<br />
! License<br />
! Notes<br />
|-<br />
| Peg Solitaire<br />
| [[Peg Solitaire tutorial]]<br />
| Public Domain<br />
| A step-by-step explanation of how to build a [http://en.wikipedia.org/wiki/Peg_solitaire Peg Solitaire] using Lazarus.<br />
|-<br />
| Hedgewars<br />
| [http://www.hedgewars.org/ http://www.hedgewars.org/]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| A well known [https://en.wikipedia.org/wiki/Worms_%28series%29 Worms] clone.<br />
|-<br />
| [https://en.wikipedia.org/wiki/List_of_minor_Apogee_Software_video_games#Beyond_the_Titanic Beyond the Titanic]<br />
| [http://legacy.3drealms.com/downloads.html#titanic http://legacy.3drealms.com/downloads.html]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| An early game by Apogee.<br />
|}<br />
<br />
You can find more game examples in the next links:<br />
<br />
* [http://forum.lazarus.freepascal.org/index.php/topic,39425.0.html Games from the Lazarus Graphics Contest]<br />
* [http://www.sourcecodeonline.com/sources/delphi/games.html Delphi games]<br />
* [http://www.pascalgamedevelopment.com/showthread.php?4519-The-great-list-of-Pascal-Games The great list of Pascal Games]<br />
<br />
Available [[Game Engine|Game Engines]] also include examples and game demos.<br />
</div><br />
<br />
[[category:Portals]]<br />
[[category:Game Development]]<br />
[[category:Games]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=Portal:Game_Development&diff=115060Portal:Game Development2018-01-11T13:07:00Z<p>Ñuño Martínez: Created page with "{{Index-Portal}} {{Portal_Head2|555555|<big>{{PAGENAME}}</big>|bbbbbb|000000}} {| width="100%" class = "wikitable" | valign="top" | {{Warning|This portal is a rough draft. It..."</p>
<hr />
<div>{{Index-Portal}}<br />
{{Portal_Head2|555555|<big>{{PAGENAME}}</big>|bbbbbb|000000}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
{{Warning|This portal is a rough draft. It must be completed and fixed.}}<br />
Pascal was used to make games since its creation, including some well-known classic games like Apogee's [https://en.wikipedia.org/wiki/List_of_minor_Apogee_Software_video_games#Beyond_the_Titanic Beyond the Titanic].<br />
<br />
Today Pascal is still used to create games by both amateur and professional game-makers.<br />
|}<br />
<div style="float:left; width:60%;"> <!-- Both "width" values should add up to 100% --><br />
<br />
{{Portal_Head|555555|Pascal game related forums|bbbbbb|000000||Template:{{FULLPAGENAME}}/Development_Techniques}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [http://www.pascalgamedevelopment.com/forum.php Pascal Game Development] - Community dedicated to game developing with any Pascal and Object Pascal compiler, as Free Pascal, Delphi, SMS, etc.<br />
* [http://forum.lazarus.freepascal.org/index.php/board,74.0.html Games at the Lazarus forum] - A section dedicated to game development with Lazarus.<br />
|}<br />
<br /><br />
{{Portal_Head|555555|Wiki pages|bbbbbb|000000||Template:{{FULLPAGENAME}}/Development_Techniques}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [[Game Engine]]<br />
* [[Graphics libraries]]<br />
|}<br />
</div><br />
<br />
<div style="float:right; width:39%"> <!-- Both "width" values should add up to 100% --><br />
{{Portal_Head|555555|Universal sources based on gamedev|bbbbbb|000000||Template:{{FULLPAGENAME}}/DBMS}}<br />
{| width="100%" class = "wikitable"<br />
| valign="top" |<br />
* [https://www.reddit.com/r/gamedev/ Reddit]<br />
* [https://www.gamedev.net/ Gamedev.net]<br />
* [http://forums.indiegamer.com/ Indiegamer]<br />
* [https://forums.tigsource.com/ Tig Source]<br />
* [https://stackoverflow.com/ Stackoverflow]<br />
|}<br />
</div><br />
<br />
<div style="clear: both"><br />
==Games==<br />
{{Warning|May be this section should be moved to its own page: [[Games made in Pascal]] or something like that.}}<br />
Here's a list of notable games made in Pascal or Object Pascal.<br />
<br />
{| class="wikitable sortable" width="100%"<br />
! Name<br />
! Site<br />
! License<br />
! Notes<br />
|-<br />
| Peg Solitaire<br />
| [[Peg Solitaire tutorial]]<br />
| Public Domain<br />
| A step-by-step explanation of how to build a [http://en.wikipedia.org/wiki/Peg_solitaire Peg Solitaire] using Lazarus.<br />
|-<br />
| Hedgewars<br />
| [http://www.hedgewars.org/ http://www.hedgewars.org/]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| A well known [https://en.wikipedia.org/wiki/Worms_%28series%29 Worms] clone.<br />
|-<br />
| [https://en.wikipedia.org/wiki/List_of_minor_Apogee_Software_video_games#Beyond_the_Titanic Beyond the Titanic]<br />
| [http://legacy.3drealms.com/downloads.html#titanic http://legacy.3drealms.com/downloads.html]<br />
| [https://opensource.org/licenses/gpl-license GNU General Public License]<br />
| An early game by Apogee.<br />
|}<br />
<br />
You can find more game examples in the next links:<br />
<br />
* [http://forum.lazarus.freepascal.org/index.php/topic,39425.0.html Games from the Lazarus Graphics Contest]<br />
* [http://www.sourcecodeonline.com/sources/delphi/games.html Delphi games]<br />
* [http://www.pascalgamedevelopment.com/showthread.php?4519-The-great-list-of-Pascal-Games The great list of Pascal Games]<br />
<br />
Available [[Game Engine|Game Engines]] also include examples and game demos.<br />
</div><br />
<br />
[[category:Game Development]]<br />
[[category:Games]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=FPC_and_Allegro&diff=115058FPC and Allegro2018-01-10T20:18:30Z<p>Ñuño Martínez: Adding category Game Development</p>
<hr />
<div>{{FPC and Allegro}}<br />
<br />
==Introduction==<br />
'''Allegro''' is a cross-platform library mainly aimed at video game and multimedia programming. It handles common, low-level tasks such as creating windows, accepting user input, loading data, drawing images, playing sounds, etc. and generally abstracting away the underlying platform. However, Allegro is ''not'' a game engine: you are free to design and structure your program as you like.<br />
<br />
Allegro 5 has the following additional features:<br />
<br />
*Supported on Windows, Linux, Mac OSX, iPhone and Android.<br />
*User-friendly, intuitive C API usable from many languages.<br />
*Hardware accelerated bitmap and graphical primitive drawing support (via OpenGL or Direct3D).<br />
*Audio recording support.<br />
*Font loading and drawing.<br />
*Video playback.<br />
*Abstractions over shaders and low-level polygon drawing.<br />
*And more!<br />
To use Allegro with Free Pascal you need the [http://allegro-pas.sf.net/ Allegro.pas wrapper].<br />
==Tutorials==<br />
* [[Allegro.pas_tutorial_0 | Tutorial 0]]: Installation.<br />
* [[Allegro.pas_tutorial_1 | Tutorial 1]]: Basic program, Allegro initialization and opening a window.<br />
* [[Allegro.pas_tutorial_2 | Tutorial 2]]: Loading and drawind images. Data module and game title.<br />
* [[Allegro.pas_tutorial_3 | Tutorial 3]]: Basic game. User input. Sprites.<br />
* [[Allegro.pas_tutorial_4 | Tutorial 4]]: Sound.<br />
<br />
==Links==<br />
*[http://allegro-pas.sourceforge.net/ Project page]<br />
*[https://sourceforge.net/projects/allegro-pas/files/ Downloading]<br />
*[http://allegro-pas.sourceforge.net/docs/ Online documentation]<br />
<br />
[[Category:Game Development]]</div>Ñuño Martínezhttps://wiki.freepascal.org/index.php?title=FPC_and_Allegro&diff=109315FPC and Allegro2017-05-01T10:57:31Z<p>Ñuño Martínez: /* Tutorials */ Planification</p>
<hr />
<div>{{FPC and Allegro}}<br />
<br />
==Introduction==<br />
'''Allegro''' is a cross-platform library mainly aimed at video game and multimedia programming. It handles common, low-level tasks such as creating windows, accepting user input, loading data, drawing images, playing sounds, etc. and generally abstracting away the underlying platform. However, Allegro is ''not'' a game engine: you are free to design and structure your program as you like.<br />
<br />
Allegro 5 has the following additional features:<br />
<br />
*Supported on Windows, Linux, Mac OSX, iPhone and Android.<br />
*User-friendly, intuitive C API usable from many languages.<br />
*Hardware accelerated bitmap and graphical primitive drawing support (via OpenGL or Direct3D).<br />
*Audio recording support.<br />
*Font loading and drawing.<br />
*Video playback.<br />
*Abstractions over shaders and low-level polygon drawing.<br />
*And more!<br />
To use Allegro with Free Pascal you need the [http://allegro-pas.sf.net/ Allegro.pas wrapper].<br />
==Tutorials==<br />
* [[Allegro.pas_tutorial_0 | Tutorial 0]]: Installation.<br />
* [[Allegro.pas_tutorial_1 | Tutorial 1]]: Basic program, Allegro initialization and opening a window.<br />
* [[Allegro.pas_tutorial_2 | Tutorial 2]]: Loading and drawind images. Data module and game title.<br />
* [[Allegro.pas_tutorial_3 | Tutorial 3]]: Basic game. User input. Sprites.<br />
* [[Allegro.pas_tutorial_4 | Tutorial 4]]: Sound.<br />
<br />
==Links==<br />
*[http://allegro-pas.sourceforge.net/ Project page]<br />
*[https://sourceforge.net/projects/allegro-pas/files/ Downloading]<br />
*[http://allegro-pas.sourceforge.net/docs/ Online documentation]</div>Ñuño Martínez