Resurrection of the 2.49b branch

This is a Casual project! - it will probably not be done speedily! Nor regularly!
All Help is Welcomed! - I’m going to need it. My C is terrible and that will be the first challenge.
Anyone who wants to take part is welcomed!
This will be open source as per usual.
Help (how to) documents will be made to streamline new feature additions (I.E. actuators)

So there are considered to be 3 major branches of blender;
1: 2.8+
2: 2.5 to 2.79b
3: 2.49b and earlier

Each of these branches has distinct characteristics which define it as a completely different software package to the other branches.

This project is something I’ve been thinking about for years upon years since the fateful day 2.5 was in development and saw a rethink of the majority of the user interface, and hotkeys etc.

In my perspective 2.49b was never finished. It had more to go before it was finalized, and it was definitely culled before it’s progression was exhausted to the point it should be cast aside and re-envisioned.

For that reason I would like to put out this thread as a project to develop Blender3D 2.49c

Some features to be developed will be:

Simple (249c 1.0):
Upgrade to the newest python 2.7 as the default install version for scripting.
live modification of Emit in GLSL in the GE via IPO.
live modification of Object RGBA channels in GLSL in GE via IPO.
live modification of Material RGBA channels in GLSL in GE via IPO.
live modification of textures’ mapto values and other mapto buttons in GE via blender-python and Logicbricks. - Map To Actuator
Shape keys allowing addition and subtraction of verticies, edges and faces at different shape keys (to allow mesh splitting).
Live mesh editing/creation and live image loading in the GE. (Program a game from nothing but code, this will be done by changing the way meshes and objects are collected by the GE, at start AND when a flag is raised to notify the program there has been a change to scene data in memory)
including support for blender 2.63 N-gons.

Advanced (later versions):
A UV actuator, and UV IPOs and UV Vertex Groups in the game engine (for moving UVface/Vertex selections around in game).
A Texture actuator, to allow selection/copying and pasting, rotating, scaling and translating of defined rectangles of pixels in a texture channel.
ray traced shadows to be added to the game engine. (instead of just spot lamp buffered shadows which are drawn over the entire window). [a modification to color calculation on render by calculating ray direction to a lamp and recording +shadow color if a ray touches a shadow caster between the point and the lamp]
Ray Traced reflections to be added to the game engine by similar means.
a digital sound creator/editor based on user designed sound wave beziers to be added to the sequencer.
Text and other 2D curve objects to be auto-rendered in the GE and detected by shape/character for mouse-over and collision for word wrap.
Text actuators for text settings, left, right centered and justified, text selection, and bold italic and underlined +linking by character number in string to character number in string.
.blend opener to look for Scene/collection, object, mesh, material, UV, Texture, armature and key formats from newer blender versions and translate accordingly. Save to have forwards compatibility selections.
procedural game engine particle effects to be added to actuators. including clouds, mist volumes, fire, and liquids (able to be modified by object name and axis direction, intensity and viscosity).

Even more advanced (Even later versions):
a Hardware Detection Sensor will be added, and blender specific game python for detecting key presses and joystick input from any hardware when given the port, as well as sending info back to the device at a given port additionally a Hardware Actuator for the same function. - possibly even game logic controlled robots (aim is to be able to control a Rob the Robot (NES) style game apparatus with python scripts)

Finally (at some point):
A Game Archive export function, all objects, images and sounds, scripts etc. Will be exported to a simple line and script ordered archive, to be run directly with python if possible in a TK window (unless rendered by the potential web addon, or fullscreen).

Just to name a few core updates I’ve really been craving for it. I plan to eventually (with help if possible) make this into a stand alone game engine.

Future ideas (not possible without manually converting 3D coordinates to 2D coordinates in a TK canvas): (may be used to instance procedural fire before it’s available as a standard object to users)

3D Vector Curve Volumes(meshes). - it’s all just math of scaled intersecting angular curves based on proximity in the end. You know simple 3D Trig. (it’s not really simple, but explaining it is…)

2 Likes

While I certainly won’t stop you from doing whatever you please with the code, and you’re free to fork and release any version you desire, help from our side is going to be severely limited on this endeavor, as a project I’d say us releasing a blender 2.49c looks like something that is very unlikely to happen.

3 Likes

I could just hear someone thinking “THIS IS MUTINY!!!” XD - joke.

Yeah, I get that. Current devs have different ideas about the direction blender should go and I suspect that tangent will continue to veer in a direction exponentially farther from this. I also understand there is thus very little interest in doing much for this project.

I would expect bare bones help, like if I ask technical questions about why a piece of code is written a certain way in the official source, or what a blender specific codeword I can’t find in any C library does and where it’s referenced (or how to get CMake to understand it), or tips on basic C syntax etc. I would expect someone would be willing to field an answer.

During this process if anything is not clearly understandable by reading through the docs available, I may also write such helper docs for future purposes and submit those for consideration “This code does this, this section reads the way it does because [reason]” for clarification purposes.

sigh… next on the list is to attempt to read the docs as they are with my knowledge of other languages and see if I can make any sense of it to see where anything is actually getting done in the code. If I can’t figure that out it’ll take a bit of research on C to get anywhere.

Progress ATM will be slow, IF at all.

1 Like

Mutiny ? Oh no, quite the opposite, the license deliberately allows for this behavior, I highly encourage anyone to make full use of the rights given to you by it. The ability to take our code and do something awesome (or less awesome, or absolutely horrible) to it, is the reason we have this license! go forth and create!

Just spending any resources on it on our end, seems wasteful to the limited resources we have, so it’s best to manage expectations a little here.

7 Likes

Resurrecting Blender 2.49b sounds like an amazing plot for a new Jurassic Park movie :face_with_hand_over_mouth:

3 Likes

the splash screen must now be about something to do with prehistory.

A caveman fighting a dinosaur with the 249b alien on a meteor flying overhead should do?

1 Like

Have you contacted the guys at UPBGE at all? They forked the engine at version 2.79, cleaned it up, and updated it to work with version 3.0 as well as with Eevee. You are free to start your own fork that begins with 2.49, but your ability to attract users may be limited as everything else (from the UI to modeling to scene management) is quite archaic and convoluted compared to today.

5 Likes

To be honest, I wouldn’t expect that at all. Your plans should probably not require that other disinterested people (either paid or volunteer) need to spend any time on this.

4 Likes

I will contact them, however I will express that actually I find 249’s UI and controls to be easy to navigate quickly, and find modelling etc. straight forwards. scene management, not quite sure why it needs to be better, maybe I have not run into anything yet that requires better scene management. I find the UI in 2.5+ confusing and frustrating, i.e. different navigation keys in every window, missing buttons. This is my personal perspective. It had some neat features but at the time nothing that warranted my exodus from 249. Now days I only keep 279 for exporting to modern game engines or opening files people give me that require a newer blender, even then I had to tame the navigation controls by changing them to as close to 249 as possible but apparently changing them too much breaks things. too many key conflicts. still can’t change the nav for the UV editor in 279 to match 249. I told the devs this back in 2.5 and they scoffed at it saying “they wanted to attract more industry experts who use other software by making blender similar in controls to other software packages.” shudder I really hope that’s not how other software packages are, if it were, then the controls in blender 249 are reason enough to migrate in my opinion.

Maybe I’m biased because I’ve used it for so long.

1 Like

It’s expected of common decency. but not expected immediately. Just as people with the answers notice and have time, that’s how internet forums have worked since the a-fore-times. When you make something, and questions about what you made are asked and the answer cannot be found and might be a matter of interpretation to figure it out, it is considered decent to clarify. - so far so good though been reading through it all so far mostly understanding the codewords used in .cpp .c and .h so I wont have too many questions I expect. Ideasman really did make some good explanation docs.

Summary

Also paid? I wonder if that’s the problem with new blender. i.e. “hire experts to tell you how your own design needs to be their design…”
you: “I want more GE functions in python”
paid dev: “no you don’t, C# is superior you want to use that, and GE?, I used to work at autodesk, you don’t need a GE you just need to export to unity”
facepalm seen it happen too many times.

This project is likely to not put forwards remuneration. Any features it does produce that are of any value will be supplied in source for use in newer distros as well though, so that’s a benefit.

1 Like

I can’t speak for anyone else, but I can barely remember what I had for breakfast- let alone why I wrote something a certain way 10+ years ago. That shouldn’t stop you from asking, but you should frame your expectations accordingly :slight_smile:

6 Likes

Well… I think you might find that other peoples definition of common decency might not include spending lots of time on something which doesn’t really interest them.

And this is all actually stuff that’s extremely time consuming.

Please don’t take my advice wrong. I really wish you luck with your endeavour. And I can really understand where you’re coming from. I myself use an ancient text-based editor which gets increasingly hard to recompile on modern systems, but the muscle memory of the UI is baked into my brain so…

But I do think you’re largely on you own here. People will probably be willing to answer succinct, well researched questions, but not general ‘basic C syntax’ questions, or questions about very old code.

I hope you can find some people who share your interest :wink:

2 Likes

no argument, if no one has an answer, then no one will answer, because there will be no one who knows who has time.

I hope any questions I ask will give enough clear information so that review of multiple files will not be necessary. To cut the lots of time aspect out. From what I can tell, questions would be largely about code suggestions for a defined set of actions (hint, I have gotten suggestions in different langauge versions and types and translated them into what I need before, usually I can just find a similar codeword/module and make it work). as tempted as I would be to ask “are these all the places the python version and supporting code are in the source [list]” I realize such a question is likely to make people roll their eyes at the waste of time necessary to dig through docs to find out. so I will not be asking such questions, that will be a “compile and read output for conflicts, bug test and find missed docs/arguments” operation. So real questions will be incredibly simplified, after trying and testing.

I think it may be possible the reason you are all worried about time, is because many don’t know who I am. I teach myself languages by looking up modules and codewords in libraries and testing methods of use to their limits. I find things even people who have been using the language for years don’t know. To me this is fun, most of the time. and if I ask a question it will likely be framed with a complete introduciton to the codeword(s) at hand and with my understanding of their usage and a simple library reference link, and will likely be about formatting. at least in experience that’s how it has been. .c .cpp and .h .mak these may present other challenges. but so far not really. and this is just me looking at it in wordpad and finding linked and referenced articles by hopping directory.

As stated the first goal is to change the python install version required for scripting to 2.7.18. I do not expect much of a challenge for this one. I mean I have been using blender 249b’s py2.6.2 for a long time and it has become convenient to just use the newest 2.7 library reference. The majority of the language is identical, other changes may be at a C code reference level for a python codeword for bug fixing and may not need much action if at all from a blender compilation perspective. This is likely to be a mere replacement of the default python interpreter supplied and called for and a mere change of a version number at several places in code. And that this will likely be the first stable release at v0.01 because I don’t foresee it causing any instability anywhere else. - This opinion may change as I actually get into it more fervently. This is not a question and does not require an explanation atm, it is just an example of my intuition (educated guess after a brief look) and experience with this. If I have it horribly wrong and you are kind, do say something. otherwise feel free to let me figure it out as it will likely become obvious as I get into it deeper.

1 Like

FINALLY! excellent news🎉 To me, blender 2.5 onwards - ISN’T BLENDER!

Wait. I’m a year late. Progress report? :see_no_evil:

IRL has been keeping me busy, though this is still in my mind. I have been considering making this in the python tk module, though that would be a reverse engineering of it.
I have the source code, I have glanced over several key files and basically understood whats there, I need more knowledge of C to make the necessary changes though. I’m really hoping to get a team started to help speed it up. but I might poke away at it myself in the meantime.

:thinking: Your previous post was more exciting. it sounded like v0.01 was incoming. Hey ho :pensive:

1 Like

sorry to disappoint that’s why I did say “This is a Casual project! - it will probably not be done speedily! Nor regularly!”

I should have added I’m a terrible procrastinator… there’s a billion projects that need to get done and no one wants to do them lol so then I interact and figure out what needs to get done and end up picking up projects I find viable. but I’m only 1 person.

it’d be different if I had help. I’d focus a lot more effort into it.

1 Like

So merely replacing the default python interpreter supplied and changing the version number isn’t viable? Chop chop! :smiley:

1 Like

lol it is viable. I just need to get to it.

the thing is without github to handle this operation I am forced to make changes, double check my syntax, and hope my logic is ok and I didn’t miss something in another file. then compile and check. and if it doesn’t work I have to set-up an error log to find out why.

I have some time off work these weeks so, I’ll gather up my courage to have a go at it.

1 Like

…anything to report?
BTW would this be for both windows and Linux? . Blender 2.49b on puppy Linux is/was awesome