Topic: Maratis Experamental Branch suggestions

I noticed in the experimental branch we have

tinycthread
tinyutf8
tinyxml
windirent

And that Maratis compiles with the Boost fix for Bullet.



My suggestion is to use the Poco C++ library's. Its under the Boost license meets all of the requirements above. Bullet will use Poco as a replacement to Boost threads.

This is what I use with my more advanced projects that use Ogre. And as Maratis progresses we are going to want 99% of what is listed below.


Basic Edition
No external dependencies — start developing immediately

Complete Edition
Requires OpenSSL, MySQL Client and ODBC



Note: there is also these build options ...

  --poquito
    Omit a few features for smaller codesize when linking
    statically for embedded targets.

  --unbundled
    Use system-provided zlib, pcre, expat and sqlite instead of
    bundled ones.
   
  --static
    Build static libraries. Overrides default mode, which
    depends upon target. Can be specified together
    with --shared to build both.
   
  --shared
    Build shared libraries. Overrides default mode, which
    depends upon target. Can be specified together
    with --static to build both.




Supports Platforms and Compilers
AIX                              Darwin64-gcc                         Linux-stlport
Android                        Darwin-clang                          MinGW
Angstrom                     Darwin-clang-libc++               MinGW-CrossEnv
ARM-Linux                   Darwin-gcc                              NIOS2-Linux
BeagleBoard                 DigiEL                                     OSF1
CEGCCARM                   ELDK                                      PPC-Linux
CygLinux                      FreeBSD                                 QNX
CYGWIN                        GCCEMBEDLINUX                   SH-Linux
Darwin                          HP-UX                                    SSV-LINUX
Darwin32                      iPhone                                    SunOS
Darwin32-clang             iPhone-clang                           SunOS-GCC
Darwin32-clang-libc++  iPhone-clang-libc++                SunOS-stdcxx-x86_64
Darwin32-gcc                iPhoneSimulator                      SunOS-SunForte
Darwin64                      iPhoneSimulator-clang             SunOS-SunStudio
Darwin64-clang             iPhoneSimulator-clang-libc++  SunOS-SunStudio11
Darwin64-clang-libc++  Linux

Core Features    
1. Any and DynamicAny classes for dynamic typing
2. cache framework
3. date and time
4. events (signal/slot mechanism) and notifications framework
5. regular expressions (based on PCRE)
6. shared libraries and class loading
7. smart pointers and memory management (buffer, pool)
8. string formatting and string utilities
9. tuples

Compression    
1. stream classes for zlib-based compression/decompression
2. ZIP file creation and extraction

Cryptography
1. cryptographic hashes
2. X509 certificate handling
3. symmetric and RSA ciphers
4. streams for encryption and decryption
5. based on OpenSSL

Database   
1. unified access to different SQL databases (SQLite, MySQL, ODBC)
2. automatic data type mappings
3. collections support (std::vector, std::set, std::map, etc.)
4. record sets and tuples
5. session pooling

Filesystem    
1. platform-independent path construction and manipulation
2. directory listing
3. globbing
4. directory change notifications

Logging   
1. extensible logging framework with pluggable log channels and message formatters
2. console logging, log files, syslog, remote syslog, Windows event log service file attributes

Multithreading
1. thread and thread synchronization classes
2. thread pool
3. work queues
4. active objects and activities
5. task management
6. timers

Network    
1. stream, datagram, multicast, server and raw sockets
2. TCP Server framework (multithreaded)
3. reactor server framework
4. HTTP(S) client and server framework
5. HTTP Basic and Digest authentication
6. C++ server page compiler for embedding C++ code into HTML pages
7. FTP client
8. SMTP and POP3 client for sending and receiving email
9. URI and UUID handling
10. HTML forms processing
11. MIME multipart messages
12. SSL/TLS support based on OpenSSL
13. WebSocket (RFC 6455) client and server

Processes and IPC    
1. launching and stopping processes
2. process synchronization
3. shared memory

Streams    
1. Base64 and HexBinary encoding/decoding
2. compression (zlib)
3. line ending conversion
4. memory streams
5. text encoding conversions
6. URI stream opener

Text Encodings    
1. UTF-8 and Unicode handling
2. text encodings and conversions
3. character classifications

Utility Classes    
1. frameworks for command-line and server applications
2. command-line options handling
3. configuration file parsing
4. unix daemons and windows services

XML    
1. fast XML parsing based on Expat
2. SAX2 (Simple API for XML, version 2) parser
3. DOM (Document Object Model, Level 1-3) parser
4. XML writer



My Toolkit consist of ...
1. Premake4 (Build System)

2. Fossil DVCS (Self Contained Version Control System) It comes with a web interface, supports distributed bug tracking, distributed wiki, and a distributed blog mechanism all in a single integrated package. And was designed and developed by the creator of Sqlite. Search the web and you will see it is as good if not better than Git or Mercurial. Very easy to learn and use.

3. xDelta (Delta Patches) <-- No more repackaging the entire Maratis project, just upload the binary deltas and the enduser just patches there current maratis binary. Works on library's also. This is how most linux distros ship there updates. My last update was 250 patches and the download size was 12mb.



I mention these things because Maratis's single largest problem, is its build system and dependence. Building the thirdparty packages the way it does now is a massive head ach and instead of managing the build system for just Maratis code we have to do it for the third-part packages also. 


I am one of the best C++ Qt developers I have managed to create Ogre3D, Irrlicht, SFML2, Horde3D, Panda3D widgets because its as simple as Build, Install (Ogre3D .... Panda3D), Include the Headers Location if in a non standard location set Linker Flags in my  project and build..

Anytime I try this with Maratis it blows up in my face. The only way I can even hack on Maratis is to edit what code is already in the  archive and then re-run scons.

I dont know of a single oss project that even uses scons anymore. Anything would be better, CMake, Premake, plane old Makefiles!.



Help me solve these problems and I will become a fulltime active developer I promise.

I can provide everything you have seen me do so far (Art and Content/Tutorials)
1. A new Qt based Editor (Gui would even be scriptable with Lua)
2. Particle Effects Editor (If I can get Spark2 in Maratis then a new Particle Effects Engine)
3. Lua Scripting would use Luajit instead of plane Lua and we could directly link to any C library
4. Online Asset Browser
5. Shader Editor.
6. C++ and Lua code editor based on QScintilla, Code Folding, Syntax Highlighting, Code Completion, ...
7. Complete Amazon Web Service and Google support in the editor and in MSDK
8. AES 256 Encrypted Sqlite Databases.
9. Rendering Video to Textures
10. Motion tracking (The camera moves with your head)
This is just of the top of my head.



As Jerry Mcquire(Movie) would put it .... Help Me .... Help You

Last edited by zester (2013-10-06 08:29:43)

Re: Maratis Experamental Branch suggestions

good to know, thanks,
I'll study that.

Re: Maratis Experamental Branch suggestions

anael wrote:

good to know, thanks,
I'll study that.

You don't have to just help me fix the build system, and I will ether

A. Help you.
or
B. Do it my self if you don't have the time.

Re: Maratis Experamental Branch suggestions

Thanks zester,
I'm not convince yet to replace the external libs by Poco but :

I will totally appreciate your help to test and clean the experimental premake build system for Windows :
- correct/clean the premake files if needed
- make sure premake for windows can generate a working visual studio project
- make sure it also works with MinGW (gcc compiler for windows)

My main system is Macosx so I can test and compile for this platform.

Finally we will need a linux contributor, is someone interested ?
- be sure premake generate a good makefile
- test the compatibility of the binary on some common linux distributions

Current state of the test : http://forum.maratis3d.com/viewtopic.php?pid=5339#p5339

Re: Maratis Experamental Branch suggestions

anael wrote:

Thanks zester,
I'm not convince yet to replace the external libs by Poco but :

I will totally appreciate your help to test and clean the experimental premake build system for Windows :
- correct/clean the premake files if needed
- make sure premake for windows can generate a working visual studio project
- make sure it also works with MinGW (gcc compiler for windows)

My main system is Macosx so I can test and compile for this platform.

Finally we will need a linux contributor, is someone interested ?
- be sure premake generate a good makefile
- test the compatibility of the binary on some common linux distributions

Current state of the test : http://forum.maratis3d.com/viewtopic.php?pid=5339#p5339


Poco isn't a problem that was just a suggestion, I use that now because it's basically Qt's Core library's without all the dependence's.


I used windows for a little bit, because of Unity3D but I couldn't stand the fact that the commandline in windows is just terrible,  programming on windows is just in general terrible.

I am that Linux programmer you always wanted see: https://qt-project.org/member/2183 but I will try lol what happend to Nistur wasnt he the Windows Guy?

I will totally appreciate your help to test and clean the experimental premake build system for Windows :
- correct/clean the premake files if needed
- make sure premake for windows can generate a working visual studio project
- make sure it also works with MinGW (gcc compiler for windows)

No problem here.

Finally we will need a linux contributor, is someone interested ?
- be sure premake generate a good makefile
- test the compatibility of the binary on some common linux distributions

Re: Maratis Experamental Branch suggestions

i can/want to help out with windows , but i am nothing good  i am quite intermediate programmer who is free to learn and help big_smile but some expert needs to help me out a bit .

Re: Maratis Experamental Branch suggestions

Crucio777 wrote:

i can/want to help out with windows , but i am nothing good  i am quite intermediate programmer who is free to learn and help big_smile but some expert needs to help me out a bit .

No programming needed, Just need someone who can compile Maratis on windows.

Re: Maratis Experamental Branch suggestions

by premake4? 
Yeah i could do that easily .
p.s by easily i mean i have done it few times before i cant do much of premake scripts but if you guys could guide me a bit i could help out .

Last edited by Crucio777 (2013-10-06 16:42:57)

Re: Maratis Experamental Branch suggestions

Hey Zester,

Did you check the Proton SDK ?

Re: Maratis Experamental Branch suggestions

com3D wrote:

Hey Zester,

Did you check the Proton SDK ?

I've heard about the Proton SDK on the irrlicht forums I do believe, but never used it personally.