# Con Script

> programming languange used by Build Engine

**Wikidata**: [Q135311925](https://www.wikidata.org/wiki/Q135311925)  
**Source**: https://4ort.xyz/entity/con-script

## Summary
Con Script is a domain-specific programming language used by the Build Engine, primarily for scripting game logic and behavior in first-person shooters like *Duke Nukem 3D*. It enables developers to define custom in-game behaviors and events through a specialized syntax tailored for the engine.

## Key Facts
- **Instance of**: programming language  
- **Used by**: Build Engine, EDuke32  
- **Part of**: *Duke Nukem 3D*  
- **Aliases**: .CON Files, DEFS.CON  
- **Creator**: Todd Replogle  
- **User Manual**: [Confaq42](https://wiki.eduke32.com/wiki/Confaq42)  
- **Related Project**: [EDuke32 Scripting Wiki](https://wiki.eduke32.com/wiki/Scripting)  
- **Wikidata Description**: "programming language used by Build Engine"  
- **References**:  
  - Creator: [Todd Replogle](https://advsys.net/ken/build.htm)  
  - Used by: [EDuke32](https://wiki.eduke32.com/wiki/Scripting)

## FAQs

### What is Con Script used for?
Con Script is used to define game logic and behaviors within games powered by the Build Engine, particularly *Duke Nukem 3D*. It allows modders and developers to customize gameplay elements such as weapon behavior, AI routines, and level events.

### Who created Con Script?
Con Script was created by Todd Replogle, who also developed the Build Engine. It was designed specifically for use within his game development framework and has been utilized in iconic titles like *Duke Nukem 3D*.

### What tools or engines use Con Script?
Con Script is primarily used by the Build Engine and its community-driven continuation, EDuke32. It is the backbone of scripting in these engines, enabling dynamic and customizable gameplay features.

### Is there documentation available for Con Script?
Yes, comprehensive documentation and scripting resources are available on the [EDuke32 Wiki](https://wiki.eduke32.com/wiki/Confaq42), which includes syntax guides, examples, and best practices for writing Con Script code.

### What makes Con Script unique compared to other scripting languages?
Con Script is a domain-specific language tailored for the Build Engine. It is not a general-purpose language but instead optimized for defining game-specific behaviors like weapon firing, enemy AI, and map triggers in classic Build Engine games.

## Why It Matters
Con Script plays a central role in the scripting architecture of the Build Engine, which powered influential games like *Duke Nukem 3D*. It enables fine-grained control over gameplay mechanics, allowing developers and modders to create complex interactive environments. Its design reflects the idiosyncrasies of early 1990s PC gaming engines, where performance and simplicity were critical. The language continues to matter in retro game development and modding communities, especially through projects like EDuke32, which extend its capabilities beyond the original design.

## Notable For
- Being the native scripting language of the Build Engine  
- Enabling deep customization of gameplay in classic Build Engine titles  
- Supporting a legacy modding community through active projects like EDuke32  
- Use of simple, file-based syntax (.CON files) for defining game logic  
- Association with iconic games like *Duke Nukem 3D*, embedding it in gaming history  
- Allowing real-time modification of game behavior without recompilation  
- Serving as a bridge between low-level engine control and high-level design flexibility  

## Body

### History and Development
Con Script was developed in the mid-1990s by Todd Replogle as part of the Build Engine, which powered several early 3D first-person shooters. It was designed to be lightweight and efficient, allowing rapid iteration of gameplay logic during development. The language was later adopted by the EDuke32 project, which expanded its functionality while maintaining backward compatibility.

### Architecture and Design
Con Script is a domain-specific language optimized for scripting game logic in the Build Engine. Scripts are typically stored in `.con` files, which can define constants, event triggers, and behavior mappings. The syntax is minimal and C-like, but tailored for game-specific operations such as spawning enemies, managing player weapons, and controlling level events.

### Ecosystem and Tooling
The language is primarily used in the context of the Build Engine and its community extensions like EDuke32. The EDuke32 project maintains a scripting reference and community support through its [wiki](https://wiki.eduke32.com/wiki/Scripting), which includes tutorials, syntax guides, and example scripts. This enables both classic and modern modders to extend or modify game behavior using Con Script.

### Community and Usage
Con Script has a dedicated user base within the retro gaming and modding community. It is especially popular among fans of Build Engine games, who use it to create new campaigns, modify existing gameplay, or prototype new mechanics. The language supports both legacy and modern extensions, ensuring its continued relevance in niche retro gaming circles.

### Notable Projects and Games
- *Duke Nukem 3D* — The primary commercial title that used the Build Engine and Con Script  
- EDuke32 — A source port that extends Build Engine functionality and scripting support  
- Shadow Warrior — Another Build Engine title that uses Con Script for game logic  

### Creator and Attribution
The language was created by Todd Replogle, who also developed the Build Engine. His work on Build and Con Script helped define a generation of 1990s PC gaming, particularly in the realm of first-person shooters. His contributions are documented in several online archives, including [Build Engine history](https://advsys.net/ken/build.htm).

### Technical References
- [EDuke32 Scripting Guide](https://wiki.eduke32.com/wiki/Scripting)  
- [Confaq42 User Manual](https://wiki.eduke32.com/wiki/Confaq42)  
- [Wikidata Entry for Con Script](https://www.wikidata.org/wiki/Q9143)  
- [Wikipedia: Programming Language](https://en.wikipedia.org/wiki/Programming_language)  

### Classification and Type
- **Instance of**: programming language  
- **Subclass of**: computer language  
- **Paradigm**: Domain-specific language  
- **Aliases**: .CON Files, DEFS.CON  
- **Related Fields**: Game development, modding, retro computing  
- **Used by**: Build Engine, EDuke32, *Duke Nukem 3D*  

### Relationships and Connections
- **Part of**: *Duke Nukem 3D*  
- **Used by**: EDuke32, Build Engine  
- **Referenced in**: Confaq42, EDuke32 Wiki  
- **Influenced by**: C-style syntax, imperative programming  
- **Connected Entities**:  
  - Creator: Todd Replogle  
  - Game: *Duke Nukem 3D*  
  - Engine: Build Engine  
  - Community: Retro gaming modding scene  
  - Documentation: [EDuke32 Scripting Wiki](https://wiki.eduke32.com)  

### Legacy and Ongoing Use
Con Script remains relevant in retro game development and modding communities. Its simplicity and integration with the Build Engine ensure that it continues to be used in both preservation and innovation projects. The language's design allows for expressive game logic without requiring deep programming knowledge, making it accessible to hobbyists and professional developers alike.

## References

1. [Source](https://advsys.net/ken/build.htm)
2. [Source](https://wiki.eduke32.com/wiki/Scripting)